Lines Matching refs:sqp

1015 		qp->sqp = kzalloc(sizeof(struct mlx4_ib_sqp), GFP_KERNEL);
1016 if (!qp->sqp)
1249 kfree(qp->sqp);
1603 struct mlx4_ib_sqp *sqp = qp->sqp;
1609 sqp->roce_v2_gsi = ib_create_qp(pd, init_attr);
1611 if (IS_ERR(sqp->roce_v2_gsi)) {
1612 pr_err("Failed to create GSI QP for RoCEv2 (%ld)\n", PTR_ERR(sqp->roce_v2_gsi));
1613 sqp->roce_v2_gsi = NULL;
1615 to_mqp(sqp->roce_v2_gsi)->flags |=
1649 kfree(mqp->sqp);
1660 struct mlx4_ib_sqp *sqp = mqp->sqp;
1662 if (sqp->roce_v2_gsi)
1663 ib_destroy_qp(sqp->roce_v2_gsi);
1723 static void store_sqp_attrs(struct mlx4_ib_sqp *sqp, const struct ib_qp_attr *attr,
1727 sqp->pkey_index = attr->pkey_index;
1729 sqp->qkey = attr->qkey;
1731 sqp->send_psn = attr->sq_psn;
2522 store_sqp_attrs(qp->sqp, attr, attr_mask);
2799 struct mlx4_ib_sqp *sqp = mqp->sqp;
2802 if (sqp->roce_v2_gsi)
2803 err = ib_modify_qp(sqp->roce_v2_gsi, attr, attr_mask);
2829 struct mlx4_ib_sqp *sqp = qp->sqp;
2855 ib_ud_header_init(send_size, 1, 0, 0, 0, 0, 0, 0, &sqp->ud_header);
2858 sqp->ud_header.lrh.service_level =
2860 sqp->ud_header.lrh.destination_lid =
2862 sqp->ud_header.lrh.source_lid =
2870 mlx->rlid = sqp->ud_header.lrh.destination_lid;
2872 sqp->ud_header.lrh.virtual_lane = 0;
2873 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
2877 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
2879 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
2881 sqp->ud_header.bth.destination_qpn =
2884 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
2892 sqp->ud_header.deth.qkey = cpu_to_be32(qkey);
2893 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->mqp.qpn);
2895 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
2896 sqp->ud_header.immediate_present = 0;
2898 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
2910 memcpy(inl + 1, sqp->header_buf, header_size);
2914 memcpy(inl + 1, sqp->header_buf, spc);
2917 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
2980 struct mlx4_ib_sqp *sqp = qp->sqp;
3041 ip_version, is_udp, 0, &sqp->ud_header);
3046 sqp->ud_header.lrh.service_level =
3048 sqp->ud_header.lrh.destination_lid = ah->av.ib.dlid;
3049 sqp->ud_header.lrh.source_lid = cpu_to_be16(ah->av.ib.g_slid & 0x7f);
3053 sqp->ud_header.grh.traffic_class =
3055 sqp->ud_header.grh.flow_label =
3057 sqp->ud_header.grh.hop_limit = ah->av.ib.hop_limit;
3059 memcpy(sqp->ud_header.grh.source_gid.raw, sgid.raw, 16);
3066 sqp->ud_header.grh.source_gid.global
3073 sqp->ud_header.grh.source_gid.global
3079 sqp->ud_header.grh.source_gid =
3083 memcpy(sqp->ud_header.grh.destination_gid.raw,
3088 sqp->ud_header.ip4.tos =
3090 sqp->ud_header.ip4.id = 0;
3091 sqp->ud_header.ip4.frag_off = htons(IP_DF);
3092 sqp->ud_header.ip4.ttl = ah->av.eth.hop_limit;
3094 memcpy(&sqp->ud_header.ip4.saddr,
3096 memcpy(&sqp->ud_header.ip4.daddr, ah->av.ib.dgid + 12, 4);
3097 sqp->ud_header.ip4.check = ib_ud_ip4_csum(&sqp->ud_header);
3101 sqp->ud_header.udp.dport = htons(ROCE_V2_UDP_DPORT);
3102 sqp->ud_header.udp.sport = htons(MLX4_ROCEV2_QP1_SPORT);
3103 sqp->ud_header.udp.csum = 0;
3111 (sqp->ud_header.lrh.destination_lid ==
3115 (sqp->ud_header.lrh.service_level << 8));
3118 mlx->rlid = sqp->ud_header.lrh.destination_lid;
3123 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY;
3124 sqp->ud_header.immediate_present = 0;
3127 sqp->ud_header.bth.opcode = IB_OPCODE_UD_SEND_ONLY_WITH_IMMEDIATE;
3128 sqp->ud_header.immediate_present = 1;
3129 sqp->ud_header.immediate_data = wr->wr.ex.imm_data;
3145 ether_addr_copy(sqp->ud_header.eth.smac_h, ah->av.eth.s_mac);
3146 memcpy(sqp->ud_header.eth.dmac_h, ah->av.eth.mac, 6);
3152 if (!memcmp(sqp->ud_header.eth.smac_h, sqp->ud_header.eth.dmac_h, 6))
3155 sqp->ud_header.eth.type = cpu_to_be16(ether_type);
3157 sqp->ud_header.vlan.type = cpu_to_be16(ether_type);
3158 sqp->ud_header.vlan.tag = cpu_to_be16(vlan | pcp);
3161 sqp->ud_header.lrh.virtual_lane =
3165 sqp->ud_header.lrh.service_level,
3167 if (qp->ibqp.qp_num && sqp->ud_header.lrh.virtual_lane == 15)
3169 if (sqp->ud_header.lrh.destination_lid == IB_LID_PERMISSIVE)
3170 sqp->ud_header.lrh.source_lid = IB_LID_PERMISSIVE;
3172 sqp->ud_header.bth.solicited_event = !!(wr->wr.send_flags & IB_SEND_SOLICITED);
3174 err = ib_get_cached_pkey(ib_dev, qp->port, sqp->pkey_index,
3182 sqp->ud_header.bth.pkey = cpu_to_be16(pkey);
3183 sqp->ud_header.bth.destination_qpn = cpu_to_be32(wr->remote_qpn);
3184 sqp->ud_header.bth.psn = cpu_to_be32((sqp->send_psn++) & ((1 << 24) - 1));
3185 sqp->ud_header.deth.qkey = cpu_to_be32(wr->remote_qkey & 0x80000000 ?
3186 sqp->qkey : wr->remote_qkey);
3187 sqp->ud_header.deth.source_qpn = cpu_to_be32(qp->ibqp.qp_num);
3189 header_size = ib_ud_header_pack(&sqp->ud_header, sqp->header_buf);
3197 be32_to_cpu(((__be32 *) sqp->header_buf)[i]));
3214 memcpy(inl + 1, sqp->header_buf, header_size);
3218 memcpy(inl + 1, sqp->header_buf, spc);
3221 memcpy(inl + 1, sqp->header_buf + spc, header_size - spc);
3510 struct mlx4_ib_sqp *sqp = qp->sqp;
3512 if (sqp->roce_v2_gsi) {
3521 to_mqp(sqp->roce_v2_gsi) : qp;