Lines Matching refs:sqp

1046 		qp->sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);  in create_qp_common()
1047 if (!qp->sqp) in create_qp_common()
1280 kfree(qp->sqp); in create_qp_common()
1634 struct mlx4_ib_sqp *sqp = qp->sqp; in mlx4_ib_create_qp() local
1640 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr); in mlx4_ib_create_qp()
1642 if (IS_ERR(sqp->roce_v2_gsi)) { in mlx4_ib_create_qp()
1643 pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi)); in mlx4_ib_create_qp()
1644 sqp->roce_v2_gsi = NULL; in mlx4_ib_create_qp()
1646 to_mqp(sqp->roce_v2_gsi)->flags |= in mlx4_ib_create_qp()
1680 kfree(mqp->sqp); in _mlx4_ib_destroy_qp()
1689 struct mlx4_ib_sqp *sqp = mqp->sqp; in mlx4_ib_destroy_qp() local
1691 if (sqp->roce_v2_gsi) in mlx4_ib_destroy_qp()
1692 ib_destroy_qp(sqp->roce_v2_gsi); in mlx4_ib_destroy_qp()
1752 static void store_sqp_attrs(struct mlx4_ib_sqp *sqp, const struct ib_qp_attr *attr, in store_sqp_attrs() argument
1756 sqp->pkey_index = attr->pkey_index; in store_sqp_attrs()
1758 sqp->qkey = attr->qkey; in store_sqp_attrs()
1760 sqp->send_psn = attr->sq_psn; in store_sqp_attrs()
2551 store_sqp_attrs(qp->sqp, attr, attr_mask); in __mlx4_ib_modify_qp()
2831 struct mlx4_ib_sqp *sqp = mqp->sqp; in mlx4_ib_modify_qp() local
2834 if (sqp->roce_v2_gsi) in mlx4_ib_modify_qp()
2835 err = ib_modify_qp(sqp->roce_v2_gsi, attr, attr_mask); in mlx4_ib_modify_qp()
2861 struct mlx4_ib_sqp *sqp = qp->sqp; in build_sriov_qp0_header() local
2887 ib_ud_header_init(send_size, 1, 0, 0, 0, 0, 0, 0, &sqp->ud_header); in build_sriov_qp0_header()
2890 sqp->ud_header.lrh.service_level = in build_sriov_qp0_header()
2892 sqp->ud_header.lrh.destination_lid = in build_sriov_qp0_header()
2894 sqp->ud_header.lrh.source_lid = in build_sriov_qp0_header()
2902 mlx->rlid = sqp->ud_header.lrh.destination_lid; in build_sriov_qp0_header()
2904 sqp->ud_header.lrh.virtual_lane = 0; in build_sriov_qp0_header()
2905 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED); in build_sriov_qp0_header()
2909 sqp->ud_header.bth.pkey = cpu_to_be16(pkey); in build_sriov_qp0_header()
2911 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn); in build_sriov_qp0_header()
2913 sqp->ud_header.bth.destination_qpn = in build_sriov_qp0_header()
2916 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1)); in build_sriov_qp0_header()
2924 sqp->ud_header.deth.qkey = cpu_to_be32(qkey); in build_sriov_qp0_header()
2925 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->mqp.qpn); in build_sriov_qp0_header()
2927 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY; in build_sriov_qp0_header()
2928 sqp->ud_header.immediate_present = 0; in build_sriov_qp0_header()
2930 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf); in build_sriov_qp0_header()
2942 memcpy(inl + 1, sqp->header_buf, header_size); in build_sriov_qp0_header()
2946 memcpy(inl + 1, sqp->header_buf, spc); in build_sriov_qp0_header()
2949 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc); in build_sriov_qp0_header()
3012 struct mlx4_ib_sqp *sqp = qp->sqp; in build_mlx_header() local
3073 ip_version, is_udp, 0, &sqp->ud_header); in build_mlx_header()
3078 sqp->ud_header.lrh.service_level = in build_mlx_header()
3080 sqp->ud_header.lrh.destination_lid = ah->av.ib.dlid; in build_mlx_header()
3081 sqp->ud_header.lrh.source_lid = cpu_to_be16(ah->av.ib.g_slid & 0x7f); in build_mlx_header()
3085 sqp->ud_header.grh.traffic_class = in build_mlx_header()
3087 sqp->ud_header.grh.flow_label = in build_mlx_header()
3089 sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit; in build_mlx_header()
3091 memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16); in build_mlx_header()
3098 sqp->ud_header.grh.source_gid.global in build_mlx_header()
3105 sqp->ud_header.grh.source_gid.global in build_mlx_header()
3111 sqp->ud_header.grh.source_gid = in build_mlx_header()
3115 memcpy(sqp->ud_header.grh.destination_gid.raw, in build_mlx_header()
3120 sqp->ud_header.ip4.tos = in build_mlx_header()
3122 sqp->ud_header.ip4.id = 0; in build_mlx_header()
3123 sqp->ud_header.ip4.frag_off = htons(IP_DF); in build_mlx_header()
3124 sqp->ud_header.ip4.ttl = ah->av.eth.hop_limit; in build_mlx_header()
3126 memcpy(&sqp->ud_header.ip4.saddr, in build_mlx_header()
3128 memcpy(&sqp->ud_header.ip4.daddr, ah->av.ib.dgid + 12, 4); in build_mlx_header()
3129 sqp->ud_header.ip4.check = ib_ud_ip4_csum(&sqp->ud_header); in build_mlx_header()
3133 sqp->ud_header.udp.dport = htons(ROCE_V2_UDP_DPORT); in build_mlx_header()
3134 sqp->ud_header.udp.sport = htons(MLX4_ROCEV2_QP1_SPORT); in build_mlx_header()
3135 sqp->ud_header.udp.csum = 0; in build_mlx_header()
3143 (sqp->ud_header.lrh.destination_lid == in build_mlx_header()
3147 (sqp->ud_header.lrh.service_level << 8)); in build_mlx_header()
3150 mlx->rlid = sqp->ud_header.lrh.destination_lid; in build_mlx_header()
3155 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY; in build_mlx_header()
3156 sqp->ud_header.immediate_present = 0; in build_mlx_header()
3159 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE; in build_mlx_header()
3160 sqp->ud_header.immediate_present = 1; in build_mlx_header()
3161 sqp->ud_header.immediate_data = wr->wr.ex.imm_data; in build_mlx_header()
3176 ether_addr_copy(sqp->ud_header.eth.smac_h, ah->av.eth.s_mac); in build_mlx_header()
3177 ether_addr_copy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac); in build_mlx_header()
3181 if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6)) in build_mlx_header()
3184 sqp->ud_header.eth.type = cpu_to_be16(ether_type); in build_mlx_header()
3186 sqp->ud_header.vlan.type = cpu_to_be16(ether_type); in build_mlx_header()
3187 sqp->ud_header.vlan.tag = cpu_to_be16(vlan | pcp); in build_mlx_header()
3190 sqp->ud_header.lrh.virtual_lane = in build_mlx_header()
3194 sqp->ud_header.lrh.service_level, in build_mlx_header()
3196 if (qp->ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15) in build_mlx_header()
3198 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE) in build_mlx_header()
3199 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE; in build_mlx_header()
3201 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED); in build_mlx_header()
3203 err = ib_get_cached_pkey(ib_dev, qp->port, sqp->pkey_index, in build_mlx_header()
3211 sqp->ud_header.bth.pkey = cpu_to_be16(pkey); in build_mlx_header()
3212 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn); in build_mlx_header()
3213 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1)); in build_mlx_header()
3214 sqp->ud_header.deth.qkey = cpu_to_be32(wr->remote_qkey & 0x80000000 ? in build_mlx_header()
3215 sqp->qkey : wr->remote_qkey); in build_mlx_header()
3216 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->ibqp.qp_num); in build_mlx_header()
3218 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf); in build_mlx_header()
3226 be32_to_cpu(((__be32 *) sqp->header_buf)[i])); in build_mlx_header()
3243 memcpy(inl + 1, sqp->header_buf, header_size); in build_mlx_header()
3247 memcpy(inl + 1, sqp->header_buf, spc); in build_mlx_header()
3250 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc); in build_mlx_header()
3539 struct mlx4_ib_sqp *sqp = qp->sqp; in _mlx4_ib_post_send() local
3541 if (sqp->roce_v2_gsi) { in _mlx4_ib_post_send()
3550 to_mqp(sqp->roce_v2_gsi) : qp; in _mlx4_ib_post_send()