Lines Matching refs:qplib_qp

427 static int bnxt_re_bind_fence_mw(struct bnxt_qplib_qp *qplib_qp)
429 struct bnxt_re_qp *qp = container_of(qplib_qp, struct bnxt_re_qp,
430 qplib_qp);
444 wqe.bind.r_key, qp->qplib_qp.id, pd);
445 rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
450 bnxt_qplib_post_send_db(&qp->qplib_qp);
860 bnxt_qplib_clean_qp(&qp->qplib_qp);
863 rc = bnxt_qplib_destroy_qp(&rdev->qplib_res, &gsi_sqp->qplib_qp);
868 bnxt_qplib_free_qp_res(&rdev->qplib_res, &gsi_sqp->qplib_qp);
892 struct bnxt_qplib_qp *qplib_qp = &qp->qplib_qp;
899 bnxt_qplib_flush_cqn_wq(&qp->qplib_qp);
901 rc = bnxt_qplib_destroy_qp(&rdev->qplib_res, &qp->qplib_qp);
909 bnxt_qplib_clean_qp(&qp->qplib_qp);
913 bnxt_qplib_free_qp_res(&rdev->qplib_res, &qp->qplib_qp);
925 if (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_RC)
927 else if (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_UD)
936 scq_nq = qplib_qp->scq->nq;
937 rcq_nq = qplib_qp->rcq->nq;
990 qplqp = &qp->qplib_qp;
1022 struct bnxt_qplib_qp *qplib_qp;
1029 qplib_qp = &qp->qplib_qp;
1035 bytes = (qplib_qp->sq.max_wqe * qplib_qp->sq.wqe_size);
1037 if (qplib_qp->type == CMDQ_CREATE_QP_TYPE_RC) {
1041 psn_nume = (qplib_qp->wqe_mode == BNXT_QPLIB_WQE_MODE_STATIC) ?
1042 qplib_qp->sq.max_wqe :
1043 ((qplib_qp->sq.max_wqe * qplib_qp->sq.wqe_size) /
1055 qplib_qp->sq.sg_info.umem = umem;
1056 qplib_qp->sq.sg_info.pgsize = PAGE_SIZE;
1057 qplib_qp->sq.sg_info.pgshft = PAGE_SHIFT;
1058 qplib_qp->qp_handle = ureq.qp_handle;
1060 if (!qp->qplib_qp.srq) {
1061 bytes = (qplib_qp->rq.max_wqe * qplib_qp->rq.wqe_size);
1068 qplib_qp->rq.sg_info.umem = umem;
1069 qplib_qp->rq.sg_info.pgsize = PAGE_SIZE;
1070 qplib_qp->rq.sg_info.pgshft = PAGE_SHIFT;
1073 qplib_qp->dpi = &cntx->dpi;
1078 memset(&qplib_qp->sq.sg_info, 0, sizeof(qplib_qp->sq.sg_info));
1147 ether_addr_copy(qp->qplib_qp.smac, rdev->netdev->dev_addr);
1149 qp->qplib_qp.pd = &pd->qplib_pd;
1150 qp->qplib_qp.qp_handle = (u64)(unsigned long)(&qp->qplib_qp);
1151 qp->qplib_qp.type = IB_QPT_UD;
1153 qp->qplib_qp.max_inline_data = 0;
1154 qp->qplib_qp.sig_type = true;
1157 qp->qplib_qp.sq.wqe_size = bnxt_re_get_wqe_size(0, 6);
1158 qp->qplib_qp.sq.max_wqe = qp1_qp->rq.max_wqe;
1159 qp->qplib_qp.sq.max_sge = 2;
1161 qp->qplib_qp.sq.q_full_delta = 1;
1162 qp->qplib_qp.sq.sg_info.pgsize = PAGE_SIZE;
1163 qp->qplib_qp.sq.sg_info.pgshft = PAGE_SHIFT;
1165 qp->qplib_qp.scq = qp1_qp->scq;
1166 qp->qplib_qp.rcq = qp1_qp->rcq;
1168 qp->qplib_qp.rq.wqe_size = bnxt_re_get_rwqe_size(6);
1169 qp->qplib_qp.rq.max_wqe = qp1_qp->rq.max_wqe;
1170 qp->qplib_qp.rq.max_sge = qp1_qp->rq.max_sge;
1172 qp->qplib_qp.rq.q_full_delta = 1;
1173 qp->qplib_qp.rq.sg_info.pgsize = PAGE_SIZE;
1174 qp->qplib_qp.rq.sg_info.pgshft = PAGE_SHIFT;
1176 qp->qplib_qp.mtu = qp1_qp->mtu;
1178 qp->qplib_qp.sq_hdr_buf_size = 0;
1179 qp->qplib_qp.rq_hdr_buf_size = BNXT_QPLIB_MAX_GRH_HDR_SIZE_IPV6;
1180 qp->qplib_qp.dpi = &rdev->dpi_privileged;
1182 rc = bnxt_qplib_create_qp(qp1_res, &qp->qplib_qp);
1209 qplqp = &qp->qplib_qp;
1246 qplqp = &qp->qplib_qp;
1270 qplqp = &qp->qplib_qp;
1313 qplqp = &qp->qplib_qp;
1362 qplqp = &qp->qplib_qp;
1443 sqp = bnxt_re_create_shadow_qp(pd, &rdev->qplib_res, &qp->qplib_qp);
1454 &qp->qplib_qp);
1457 &sqp->qplib_qp);
1479 qplqp = &qp->qplib_qp;
1549 rc = bnxt_qplib_create_qp(&rdev->qplib_res, &qp->qplib_qp);
1557 resp.qpid = qp->qplib_qp.id;
1567 qp->ib_qp.qp_num = qp->qplib_qp.id;
1591 bnxt_qplib_destroy_qp(&rdev->qplib_res, &qp->qplib_qp);
1911 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_STATE;
1912 qp->qplib_qp.state = qp1_qp->qplib_qp.state;
1915 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_PKEY;
1916 qp->qplib_qp.pkey_index = qp1_qp->qplib_qp.pkey_index;
1920 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_QKEY;
1922 qp->qplib_qp.qkey = 0x81818181;
1925 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN;
1926 qp->qplib_qp.sq.psn = qp1_qp->qplib_qp.sq.psn;
1929 rc = bnxt_qplib_modify_qp(&rdev->qplib_res, &qp->qplib_qp);
1949 qp->qplib_qp.modify_flags = 0;
1951 curr_qp_state = __to_ib_qp_state(qp->qplib_qp.cur_qp_state);
1966 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_STATE;
1967 qp->qplib_qp.state = __from_ib_qp_state(qp_attr->qp_state);
1970 qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_ERR) {
1974 bnxt_qplib_add_flush_qp(&qp->qplib_qp);
1978 qp->qplib_qp.state == CMDQ_MODIFY_QP_NEW_STATE_RESET) {
1982 bnxt_qplib_clean_qp(&qp->qplib_qp);
1987 qp->qplib_qp.modify_flags |=
1989 qp->qplib_qp.en_sqd_async_notify = true;
1992 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_ACCESS;
1993 qp->qplib_qp.access =
1996 qp->qplib_qp.access |= BNXT_QPLIB_ACCESS_LOCAL_WRITE;
1998 qp->qplib_qp.access |= CMDQ_MODIFY_QP_ACCESS_REMOTE_WRITE;
1999 qp->qplib_qp.access |= CMDQ_MODIFY_QP_ACCESS_REMOTE_READ;
2002 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_PKEY;
2003 qp->qplib_qp.pkey_index = qp_attr->pkey_index;
2006 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_QKEY;
2007 qp->qplib_qp.qkey = qp_attr->qkey;
2015 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_DGID |
2022 memcpy(qp->qplib_qp.ah.dgid.data, grh->dgid.raw,
2023 sizeof(qp->qplib_qp.ah.dgid.data));
2024 qp->qplib_qp.ah.flow_label = grh->flow_label;
2030 qp->qplib_qp.ah.sgid_index = ctx->idx;
2031 qp->qplib_qp.ah.host_sgid_index = grh->sgid_index;
2032 qp->qplib_qp.ah.hop_limit = grh->hop_limit;
2033 qp->qplib_qp.ah.traffic_class = grh->traffic_class;
2034 qp->qplib_qp.ah.sl = rdma_ah_get_sl(&qp_attr->ah_attr);
2035 ether_addr_copy(qp->qplib_qp.ah.dmac,
2039 &qp->qplib_qp.smac[0]);
2046 qp->qplib_qp.nw_type =
2050 qp->qplib_qp.nw_type =
2054 qp->qplib_qp.nw_type =
2061 qp->qplib_qp.modify_flags |=
2063 qp->qplib_qp.path_mtu = __from_ib_mtu(qp_attr->path_mtu);
2064 qp->qplib_qp.mtu = ib_mtu_enum_to_int(qp_attr->path_mtu);
2066 qp->qplib_qp.modify_flags |=
2068 qp->qplib_qp.path_mtu =
2070 qp->qplib_qp.mtu =
2075 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_TIMEOUT;
2076 qp->qplib_qp.timeout = qp_attr->timeout;
2079 qp->qplib_qp.modify_flags |=
2081 qp->qplib_qp.retry_cnt = qp_attr->retry_cnt;
2084 qp->qplib_qp.modify_flags |=
2086 qp->qplib_qp.rnr_retry = qp_attr->rnr_retry;
2089 qp->qplib_qp.modify_flags |=
2091 qp->qplib_qp.min_rnr_timer = qp_attr->min_rnr_timer;
2094 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_RQ_PSN;
2095 qp->qplib_qp.rq.psn = qp_attr->rq_psn;
2098 qp->qplib_qp.modify_flags |=
2101 qp->qplib_qp.max_rd_atomic = min_t(u32, qp_attr->max_rd_atomic,
2105 qp->qplib_qp.modify_flags |= CMDQ_MODIFY_QP_MODIFY_MASK_SQ_PSN;
2106 qp->qplib_qp.sq.psn = qp_attr->sq_psn;
2118 qp->qplib_qp.modify_flags |=
2120 qp->qplib_qp.max_dest_rd_atomic = qp_attr->max_dest_rd_atomic;
2126 qp->qplib_qp.modify_flags |=
2143 qp->qplib_qp.sq.max_wqe = min_t(u32, entries,
2145 qp->qplib_qp.sq.q_full_delta = qp->qplib_qp.sq.max_wqe -
2152 qp->qplib_qp.sq.q_full_delta -= 1;
2153 qp->qplib_qp.sq.max_sge = qp_attr->cap.max_send_sge;
2154 if (qp->qplib_qp.rq.max_wqe) {
2156 qp->qplib_qp.rq.max_wqe =
2158 qp->qplib_qp.rq.q_full_delta = qp->qplib_qp.rq.max_wqe -
2160 qp->qplib_qp.rq.max_sge = qp_attr->cap.max_recv_sge;
2166 qp->qplib_qp.modify_flags |=
2168 qp->qplib_qp.dest_qpn = qp_attr->dest_qp_num;
2170 rc = bnxt_qplib_modify_qp(&rdev->qplib_res, &qp->qplib_qp);
2185 struct bnxt_qplib_qp *qplib_qp;
2188 qplib_qp = kzalloc(sizeof(*qplib_qp), GFP_KERNEL);
2189 if (!qplib_qp)
2192 qplib_qp->id = qp->qplib_qp.id;
2193 qplib_qp->ah.host_sgid_index = qp->qplib_qp.ah.host_sgid_index;
2195 rc = bnxt_qplib_query_qp(&rdev->qplib_res, qplib_qp);
2200 qp_attr->qp_state = __to_ib_qp_state(qplib_qp->state);
2201 qp_attr->cur_qp_state = __to_ib_qp_state(qplib_qp->cur_qp_state);
2202 qp_attr->en_sqd_async_notify = qplib_qp->en_sqd_async_notify ? 1 : 0;
2203 qp_attr->qp_access_flags = __to_ib_access_flags(qplib_qp->access);
2204 qp_attr->pkey_index = qplib_qp->pkey_index;
2205 qp_attr->qkey = qplib_qp->qkey;
2207 rdma_ah_set_grh(&qp_attr->ah_attr, NULL, qplib_qp->ah.flow_label,
2208 qplib_qp->ah.host_sgid_index,
2209 qplib_qp->ah.hop_limit,
2210 qplib_qp->ah.traffic_class);
2211 rdma_ah_set_dgid_raw(&qp_attr->ah_attr, qplib_qp->ah.dgid.data);
2212 rdma_ah_set_sl(&qp_attr->ah_attr, qplib_qp->ah.sl);
2213 ether_addr_copy(qp_attr->ah_attr.roce.dmac, qplib_qp->ah.dmac);
2214 qp_attr->path_mtu = __to_ib_mtu(qplib_qp->path_mtu);
2215 qp_attr->timeout = qplib_qp->timeout;
2216 qp_attr->retry_cnt = qplib_qp->retry_cnt;
2217 qp_attr->rnr_retry = qplib_qp->rnr_retry;
2218 qp_attr->min_rnr_timer = qplib_qp->min_rnr_timer;
2219 qp_attr->rq_psn = qplib_qp->rq.psn;
2220 qp_attr->max_rd_atomic = qplib_qp->max_rd_atomic;
2221 qp_attr->sq_psn = qplib_qp->sq.psn;
2222 qp_attr->max_dest_rd_atomic = qplib_qp->max_dest_rd_atomic;
2223 qp_init_attr->sq_sig_type = qplib_qp->sig_type ? IB_SIGNAL_ALL_WR :
2225 qp_attr->dest_qp_num = qplib_qp->dest_qpn;
2227 qp_attr->cap.max_send_wr = qp->qplib_qp.sq.max_wqe;
2228 qp_attr->cap.max_send_sge = qp->qplib_qp.sq.max_sge;
2229 qp_attr->cap.max_recv_wr = qp->qplib_qp.rq.max_wqe;
2230 qp_attr->cap.max_recv_sge = qp->qplib_qp.rq.max_sge;
2231 qp_attr->cap.max_inline_data = qp->qplib_qp.max_inline_data;
2235 kfree(qplib_qp);
2306 ether_addr_copy(qp->qp1_hdr.eth.smac_h, qp->qplib_qp.smac);
2367 buf = bnxt_qplib_get_qp1_sq_buf(&qp->qplib_qp, &sge);
2427 rq_prod_index = bnxt_qplib_get_rq_prod_index(&qp->qplib_qp);
2429 if (!bnxt_qplib_get_qp1_rq_buf(&qp->qplib_qp, &sge))
2460 return (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_UD ||
2461 qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_GSI);
2662 qp->qplib_qp.wqe_cnt == BNXT_RE_UD_QP_HW_STALL) {
2669 qp->qplib_qp.wqe_cnt = 0;
2686 if (wr->num_sge > qp->qplib_qp.sq.max_sge) {
2704 rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
2714 bnxt_qplib_post_send_db(&qp->qplib_qp);
2747 if (wr->num_sge > qp->qplib_qp.sq.max_sge) {
2764 if (qp->qplib_qp.type == CMDQ_CREATE_QP1_TYPE_GSI) {
2814 rc = bnxt_qplib_post_send(&qp->qplib_qp, &wqe);
2820 wr->opcode, qp->qplib_qp.state, rc);
2826 bnxt_qplib_post_send_db(&qp->qplib_qp);
2846 if (wr->num_sge > qp->qplib_qp.rq.max_sge) {
2856 rc = bnxt_qplib_post_recv(&qp->qplib_qp, &wqe);
2863 bnxt_qplib_post_recv_db(&qp->qplib_qp);
2883 if (wr->num_sge > qp->qplib_qp.rq.max_sge) {
2897 qp->qplib_qp.type != CMDQ_CREATE_QP_TYPE_GSI)
2901 rc = bnxt_qplib_post_recv(&qp->qplib_qp, &wqe);
2909 bnxt_qplib_post_recv_db(&qp->qplib_qp);
2917 bnxt_qplib_post_recv_db(&qp->qplib_qp);
3412 rq_hdr_buf = gsi_qp->qplib_qp.rq_hdr_buf +
3413 (tbl_idx * gsi_qp->qplib_qp.rq_hdr_buf_size);
3414 rq_hdr_buf_map = bnxt_qplib_get_qp_buf_from_index(&gsi_qp->qplib_qp,
3418 shrq_hdr_buf_map = bnxt_qplib_get_qp_buf_from_index(&gsi_qp->qplib_qp,
3492 udwr.remote_qpn = gsi_sqp->qplib_qp.id;
3493 udwr.remote_qkey = gsi_sqp->qplib_qp.qkey;
3624 if (qp->qplib_qp.type == CMDQ_CREATE_QP_TYPE_GSI) {
3646 struct bnxt_qplib_qp *lib_qp = &qp->qplib_qp;
3702 struct bnxt_re_qp, qplib_qp);
3727 struct bnxt_re_qp, qplib_qp);
3739 qp->qplib_qp.id == sh_qp->qplib_qp.id) {
3775 qp->qplib_qp.id == sh_qp->qplib_qp.id) {