Lines Matching refs:sqp
1050 qp->sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);
1051 if (!qp->sqp)
1284 kfree(qp->sqp);
1638 struct mlx4_ib_sqp *sqp = qp->sqp;
1644 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
1646 if (IS_ERR(sqp->roce_v2_gsi)) {
1647 pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi));
1648 sqp->roce_v2_gsi = NULL;
1650 to_mqp(sqp->roce_v2_gsi)->flags |=
1684 kfree(mqp->sqp);
1693 struct mlx4_ib_sqp *sqp = mqp->sqp;
1695 if (sqp->roce_v2_gsi)
1696 ib_destroy_qp(sqp->roce_v2_gsi);
1756 static void store_sqp_attrs(struct mlx4_ib_sqp *sqp, const struct ib_qp_attr *attr,
1760 sqp->pkey_index = attr->pkey_index;
1762 sqp->qkey = attr->qkey;
1764 sqp->send_psn = attr->sq_psn;
2555 store_sqp_attrs(qp->sqp, attr, attr_mask);
2835 struct mlx4_ib_sqp *sqp = mqp->sqp;
2838 if (sqp->roce_v2_gsi)
2839 err = ib_modify_qp(sqp->roce_v2_gsi, attr, attr_mask);
2865 struct mlx4_ib_sqp *sqp = qp->sqp;
2891 ib_ud_header_init(send_size, 1, 0, 0, 0, 0, 0, 0, &sqp->ud_header);
2894 sqp->ud_header.lrh.service_level =
2896 sqp->ud_header.lrh.destination_lid =
2898 sqp->ud_header.lrh.source_lid =
2906 mlx->rlid = sqp->ud_header.lrh.destination_lid;
2908 sqp->ud_header.lrh.virtual_lane = 0;
2909 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
2913 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
2915 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
2917 sqp->ud_header.bth.destination_qpn =
2920 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
2928 sqp->ud_header.deth.qkey = cpu_to_be32(qkey);
2929 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->mqp.qpn);
2931 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
2932 sqp->ud_header.immediate_present = 0;
2934 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
2946 memcpy(inl + 1, sqp->header_buf, header_size);
2950 memcpy(inl + 1, sqp->header_buf, spc);
2953 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
3016 struct mlx4_ib_sqp *sqp = qp->sqp;
3077 ip_version, is_udp, 0, &sqp->ud_header);
3082 sqp->ud_header.lrh.service_level =
3084 sqp->ud_header.lrh.destination_lid = ah->av.ib.dlid;
3085 sqp->ud_header.lrh.source_lid = cpu_to_be16(ah->av.ib.g_slid & 0x7f);
3089 sqp->ud_header.grh.traffic_class =
3091 sqp->ud_header.grh.flow_label =
3093 sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit;
3095 memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16);
3102 sqp->ud_header.grh.source_gid.global
3109 sqp->ud_header.grh.source_gid.global
3115 sqp->ud_header.grh.source_gid =
3119 memcpy(sqp->ud_header.grh.destination_gid.raw,
3124 sqp->ud_header.ip4.tos =
3126 sqp->ud_header.ip4.id = 0;
3127 sqp->ud_header.ip4.frag_off = htons(IP_DF);
3128 sqp->ud_header.ip4.ttl = ah->av.eth.hop_limit;
3130 memcpy(&sqp->ud_header.ip4.saddr,
3132 memcpy(&sqp->ud_header.ip4.daddr, ah->av.ib.dgid + 12, 4);
3133 sqp->ud_header.ip4.check = ib_ud_ip4_csum(&sqp->ud_header);
3137 sqp->ud_header.udp.dport = htons(ROCE_V2_UDP_DPORT);
3138 sqp->ud_header.udp.sport = htons(MLX4_ROCEV2_QP1_SPORT);
3139 sqp->ud_header.udp.csum = 0;
3147 (sqp->ud_header.lrh.destination_lid ==
3151 (sqp->ud_header.lrh.service_level << 8));
3154 mlx->rlid = sqp->ud_header.lrh.destination_lid;
3159 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
3160 sqp->ud_header.immediate_present = 0;
3163 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE;
3164 sqp->ud_header.immediate_present = 1;
3165 sqp->ud_header.immediate_data = wr->wr.ex.imm_data;
3180 ether_addr_copy(sqp->ud_header.eth.smac_h, ah->av.eth.s_mac);
3181 ether_addr_copy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac);
3185 if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6))
3188 sqp->ud_header.eth.type = cpu_to_be16(ether_type);
3190 sqp->ud_header.vlan.type = cpu_to_be16(ether_type);
3191 sqp->ud_header.vlan.tag = cpu_to_be16(vlan | pcp);
3194 sqp->ud_header.lrh.virtual_lane =
3198 sqp->ud_header.lrh.service_level,
3200 if (qp->ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15)
3202 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE)
3203 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE;
3205 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
3207 err = ib_get_cached_pkey(ib_dev, qp->port, sqp->pkey_index,
3215 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
3216 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
3217 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
3218 sqp->ud_header.deth.qkey = cpu_to_be32(wr->remote_qkey & 0x80000000 ?
3219 sqp->qkey : wr->remote_qkey);
3220 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->ibqp.qp_num);
3222 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
3230 be32_to_cpu(((__be32 *) sqp->header_buf)[i]));
3247 memcpy(inl + 1, sqp->header_buf, header_size);
3251 memcpy(inl + 1, sqp->header_buf, spc);
3254 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
3543 struct mlx4_ib_sqp *sqp = qp->sqp;
3545 if (sqp->roce_v2_gsi) {
3554 to_mqp(sqp->roce_v2_gsi) : qp;