]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
mcm: bug fixes for non-inline devices
authorAmir Hanania <amir.hanania@intel.com>
Wed, 17 Jun 2015 17:12:24 +0000 (10:12 -0700)
committerArlin Davis <arlin.r.davis@intel.com>
Wed, 17 Jun 2015 17:12:24 +0000 (10:12 -0700)
mcm proxy mi_send_pi setup registered WR structure properly for no
inline data support but incorrectly overwrote sg.addr with WR
WR structure on stack.

qp create didn't check for no inline and setup create accordingly

Signed-off-by: Amir Hanania <amir.hanania@intel.com>
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/openib_common/qp.c
dapl/openib_mcm/proxy.c

index 95ea70d694f46940a52d153ee8fc33e947deb93f..b2f8639732708b849f050f6b33378c7f5ccce2a5 100644 (file)
@@ -258,7 +258,7 @@ skip_qp:
        if (ia_ptr->hca_ptr->ib_trans.scif_ep) { /* MIC: shadow QPt on proxy */
                req_cq->flags |= DCM_CQ_TX_INDIRECT;
                qp_create.send_cq = req_cq->cq;
-               qp_create.cap.max_inline_data = 32; /* setup for bw not latency */
+               qp_create.cap.max_inline_data = max_inline;
                qp_create.cap.max_send_wr = attr->max_request_dtos;
                qp_create.cap.max_send_sge = attr->max_request_iov;
                if (ep_ptr->qp_handle->qp) { /* MIC: unused shadow QPr on proxy */
@@ -281,8 +281,7 @@ skip_qp:
        } else {
                /* NON-MIC: need QPt, in case of shadowed QP's on remote MIC's */
                /* Prep for HST -> MXS: xfers via remote PI instead of direct */
-               ia_ptr->hca_ptr->ib_trans.ib_cm.max_inline =
-                               DAPL_MAX(sizeof(struct mcm_wr_rx), max_inline);
+
                /* create CQ for peer PI, HST->MXS case */
                if (mcm_create_pi_cq(ep_ptr->qp_handle, MCM_WRC_QLEN))
                        goto err;
@@ -292,7 +291,9 @@ skip_qp:
                qp_create.cap.max_recv_sge = 1;
                qp_create.cap.max_send_wr = DAPL_MAX(MCM_WRC_QLEN, attr->max_request_dtos);
                qp_create.cap.max_send_sge = attr->max_request_iov;
-               qp_create.cap.max_inline_data = ia_ptr->hca_ptr->ib_trans.ib_cm.max_inline;
+               if (max_inline)
+                       qp_create.cap.max_inline_data =
+                               DAPL_MAX(sizeof(struct mcm_wr_rx), max_inline);
 
                ep_ptr->qp_handle->qp2 = ibv_create_qp(ib_pd_handle, &qp_create);
                if (!ep_ptr->qp_handle->qp2) {
index cb06161ac4771051689cae1993cb1228f7b50563..3c79cadd4c3902d6536e9a968e00e7a52c8b16e3 100644 (file)
@@ -162,10 +162,6 @@ int mcm_send_pi(struct dcm_ib_qp *m_qp,
                                (uint64_t)(uintptr_t)
                                ((struct mcm_wr_rx *) (m_qp->wrc_rem.wr_addr + (m_qp->wrc_rem.wr_sz * wr_idx)));
 
-                       sge.addr = (uint64_t)(uintptr_t) &m_wr_rx;
-                       sge.length = (uint32_t) sizeof(struct mcm_wr_rx); /* 160 byte WR */
-                       sge.lkey = 0; /* inline doesn't need registered */
-
                        dapl_log(DAPL_DBG_TYPE_EP,
                                 " mcm_send_pi[%d]: WR_RX wr_id %Lx qn %x op %d flgs 0x%x"
                                 " imm %x laddr %p raddr %p rkey %x wr_ln %d ln %d\n",
@@ -186,7 +182,7 @@ int mcm_send_pi(struct dcm_ib_qp *m_qp,
                                dapl_log(DAPL_DBG_TYPE_ERR,
                                        " mcm_send_pi ERR: m_wr %p idx %d laddr=%p ln=%d lkey=%x flgs %x"
                                        " tl %d hd %d\n",
-                                       m_wr_rx, wr_idx, wr->sg_list[0].addr,
+                                       wr_rx_ptr, wr_idx, wr->sg_list[0].addr,
                                        wr->sg_list[0].length, wr->sg_list[0].lkey,
                                        wr_rx_ptr->flags, m_qp->wr_tl, m_qp->wr_hd);
                                dapl_log(DAPL_DBG_TYPE_ERR,