Lines Matching refs:sqp
1011 qp->sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL); in create_qp_common()
1012 if (!qp->sqp) in create_qp_common()
1245 kfree(qp->sqp); in create_qp_common()
1599 struct mlx4_ib_sqp *sqp = qp->sqp; in mlx4_ib_create_qp() local
1605 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr); in mlx4_ib_create_qp()
1607 if (IS_ERR(sqp->roce_v2_gsi)) { in mlx4_ib_create_qp()
1608 pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi)); in mlx4_ib_create_qp()
1609 sqp->roce_v2_gsi = NULL; in mlx4_ib_create_qp()
1611 to_mqp(sqp->roce_v2_gsi)->flags |= in mlx4_ib_create_qp()
1645 kfree(mqp->sqp); in _mlx4_ib_destroy_qp()
1656 struct mlx4_ib_sqp *sqp = mqp->sqp; in mlx4_ib_destroy_qp() local
1658 if (sqp->roce_v2_gsi) in mlx4_ib_destroy_qp()
1659 ib_destroy_qp(sqp->roce_v2_gsi); in mlx4_ib_destroy_qp()
1719 static void store_sqp_attrs(struct mlx4_ib_sqp *sqp, const struct ib_qp_attr *attr, in store_sqp_attrs() argument
1723 sqp->pkey_index = attr->pkey_index; in store_sqp_attrs()
1725 sqp->qkey = attr->qkey; in store_sqp_attrs()
1727 sqp->send_psn = attr->sq_psn; in store_sqp_attrs()
2518 store_sqp_attrs(qp->sqp, attr, attr_mask); in __mlx4_ib_modify_qp()
2795 struct mlx4_ib_sqp *sqp = mqp->sqp; in mlx4_ib_modify_qp() local
2798 if (sqp->roce_v2_gsi) in mlx4_ib_modify_qp()
2799 err = ib_modify_qp(sqp->roce_v2_gsi, attr, attr_mask); in mlx4_ib_modify_qp()
2825 struct mlx4_ib_sqp *sqp = qp->sqp; in build_sriov_qp0_header() local
2851 ib_ud_header_init(send_size, 1, 0, 0, 0, 0, 0, 0, &sqp->ud_header); in build_sriov_qp0_header()
2854 sqp->ud_header.lrh.service_level = in build_sriov_qp0_header()
2856 sqp->ud_header.lrh.destination_lid = in build_sriov_qp0_header()
2858 sqp->ud_header.lrh.source_lid = in build_sriov_qp0_header()
2866 mlx->rlid = sqp->ud_header.lrh.destination_lid; in build_sriov_qp0_header()
2868 sqp->ud_header.lrh.virtual_lane = 0; in build_sriov_qp0_header()
2869 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED); in build_sriov_qp0_header()
2873 sqp->ud_header.bth.pkey = cpu_to_be16(pkey); in build_sriov_qp0_header()
2875 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn); in build_sriov_qp0_header()
2877 sqp->ud_header.bth.destination_qpn = in build_sriov_qp0_header()
2880 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1)); in build_sriov_qp0_header()
2888 sqp->ud_header.deth.qkey = cpu_to_be32(qkey); in build_sriov_qp0_header()
2889 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->mqp.qpn); in build_sriov_qp0_header()
2891 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY; in build_sriov_qp0_header()
2892 sqp->ud_header.immediate_present = 0; in build_sriov_qp0_header()
2894 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf); in build_sriov_qp0_header()
2906 memcpy(inl + 1, sqp->header_buf, header_size); in build_sriov_qp0_header()
2910 memcpy(inl + 1, sqp->header_buf, spc); in build_sriov_qp0_header()
2913 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc); in build_sriov_qp0_header()
2976 struct mlx4_ib_sqp *sqp = qp->sqp; in build_mlx_header() local
3037 ip_version, is_udp, 0, &sqp->ud_header); in build_mlx_header()
3042 sqp->ud_header.lrh.service_level = in build_mlx_header()
3044 sqp->ud_header.lrh.destination_lid = ah->av.ib.dlid; in build_mlx_header()
3045 sqp->ud_header.lrh.source_lid = cpu_to_be16(ah->av.ib.g_slid & 0x7f); in build_mlx_header()
3049 sqp->ud_header.grh.traffic_class = in build_mlx_header()
3051 sqp->ud_header.grh.flow_label = in build_mlx_header()
3053 sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit; in build_mlx_header()
3055 memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16); in build_mlx_header()
3062 sqp->ud_header.grh.source_gid.global in build_mlx_header()
3069 sqp->ud_header.grh.source_gid.global in build_mlx_header()
3075 sqp->ud_header.grh.source_gid = in build_mlx_header()
3079 memcpy(sqp->ud_header.grh.destination_gid.raw, in build_mlx_header()
3084 sqp->ud_header.ip4.tos = in build_mlx_header()
3086 sqp->ud_header.ip4.id = 0; in build_mlx_header()
3087 sqp->ud_header.ip4.frag_off = htons(IP_DF); in build_mlx_header()
3088 sqp->ud_header.ip4.ttl = ah->av.eth.hop_limit; in build_mlx_header()
3090 memcpy(&sqp->ud_header.ip4.saddr, in build_mlx_header()
3092 memcpy(&sqp->ud_header.ip4.daddr, ah->av.ib.dgid + 12, 4); in build_mlx_header()
3093 sqp->ud_header.ip4.check = ib_ud_ip4_csum(&sqp->ud_header); in build_mlx_header()
3097 sqp->ud_header.udp.dport = htons(ROCE_V2_UDP_DPORT); in build_mlx_header()
3098 sqp->ud_header.udp.sport = htons(MLX4_ROCEV2_QP1_SPORT); in build_mlx_header()
3099 sqp->ud_header.udp.csum = 0; in build_mlx_header()
3107 (sqp->ud_header.lrh.destination_lid == in build_mlx_header()
3111 (sqp->ud_header.lrh.service_level << 8)); in build_mlx_header()
3114 mlx->rlid = sqp->ud_header.lrh.destination_lid; in build_mlx_header()
3119 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY; in build_mlx_header()
3120 sqp->ud_header.immediate_present = 0; in build_mlx_header()
3123 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE; in build_mlx_header()
3124 sqp->ud_header.immediate_present = 1; in build_mlx_header()
3125 sqp->ud_header.immediate_data = wr->wr.ex.imm_data; in build_mlx_header()
3141 ether_addr_copy(sqp->ud_header.eth.smac_h, ah->av.eth.s_mac); in build_mlx_header()
3142 memcpy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac, 6); in build_mlx_header()
3148 if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6)) in build_mlx_header()
3151 sqp->ud_header.eth.type = cpu_to_be16(ether_type); in build_mlx_header()
3153 sqp->ud_header.vlan.type = cpu_to_be16(ether_type); in build_mlx_header()
3154 sqp->ud_header.vlan.tag = cpu_to_be16(vlan | pcp); in build_mlx_header()
3157 sqp->ud_header.lrh.virtual_lane = in build_mlx_header()
3161 sqp->ud_header.lrh.service_level, in build_mlx_header()
3163 if (qp->ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15) in build_mlx_header()
3165 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE) in build_mlx_header()
3166 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE; in build_mlx_header()
3168 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED); in build_mlx_header()
3170 err = ib_get_cached_pkey(ib_dev, qp->port, sqp->pkey_index, in build_mlx_header()
3178 sqp->ud_header.bth.pkey = cpu_to_be16(pkey); in build_mlx_header()
3179 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn); in build_mlx_header()
3180 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1)); in build_mlx_header()
3181 sqp->ud_header.deth.qkey = cpu_to_be32(wr->remote_qkey & 0x80000000 ? in build_mlx_header()
3182 sqp->qkey : wr->remote_qkey); in build_mlx_header()
3183 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->ibqp.qp_num); in build_mlx_header()
3185 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf); in build_mlx_header()
3193 be32_to_cpu(((__be32 *) sqp->header_buf)[i])); in build_mlx_header()
3210 memcpy(inl + 1, sqp->header_buf, header_size); in build_mlx_header()
3214 memcpy(inl + 1, sqp->header_buf, spc); in build_mlx_header()
3217 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc); in build_mlx_header()
3506 struct mlx4_ib_sqp *sqp = qp->sqp; in _mlx4_ib_post_send() local
3508 if (sqp->roce_v2_gsi) { in _mlx4_ib_post_send()
3517 to_mqp(sqp->roce_v2_gsi) : qp; in _mlx4_ib_post_send()