From 57924cce8b5abbd659931d7fa10836f5dc121511 Mon Sep 17 00:00:00 2001 From: Amir Hanania Date: Wed, 17 Jun 2015 10:12:24 -0700 Subject: [PATCH] mcm: bug fixes for non-inline devices 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 Signed-off-by: Arlin Davis --- dapl/openib_common/qp.c | 9 +++++---- dapl/openib_mcm/proxy.c | 6 +----- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/dapl/openib_common/qp.c b/dapl/openib_common/qp.c index 95ea70d..b2f8639 100644 --- a/dapl/openib_common/qp.c +++ b/dapl/openib_common/qp.c @@ -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) { diff --git a/dapl/openib_mcm/proxy.c b/dapl/openib_mcm/proxy.c index cb06161..3c79cad 100644 --- a/dapl/openib_mcm/proxy.c +++ b/dapl/openib_mcm/proxy.c @@ -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, -- 2.41.0