]> git.openfabrics.org - ~ardavis/dapl.git/commitdiff
mcm: serialize dapls_evd_cqe_to_event calls with evd lock
authorArlin Davis <arlin.r.davis@intel.com>
Tue, 15 Jul 2014 20:42:12 +0000 (13:42 -0700)
committerArlin Davis <arlin.r.davis@intel.com>
Tue, 15 Jul 2014 20:42:12 +0000 (13:42 -0700)
Signed-off-by: Arlin Davis <arlin.r.davis@intel.com>
dapl/openib_mcm/mix.c
dapl/openib_mcm/proxy.c

index df37b3305d0497d192970797a20a005ba26a5522..c9c9672ea98027cc81a24efbc08b7cd6be0ee1f9 100644 (file)
@@ -1074,8 +1074,9 @@ int dapli_mix_dto_event_in(ib_hca_transport_t *tp, scif_epd_t scif_ep, dat_mix_d
                                 cookie->val.dto.size);
                }
                mcm_const_ib_wc(&ib_wc, &pmsg->wc[i], 1);
+               dapl_os_lock(&m_cq->evd->header.lock);
                dapls_evd_cqe_to_event(m_cq->evd, &ib_wc);
-
+               dapl_os_unlock(&m_cq->evd->header.lock);
        }
 
        return 0;
index d20456ca31219dd3a07a631120825ac8d030e6e1..e81b6f1429df199c12b2e088e356d8f707dde2ce 100644 (file)
@@ -189,7 +189,9 @@ static inline void mcm_dto_req(struct dcm_ib_cq *m_cq, struct ibv_wc *wc)
                 m_qp->req_cq ? m_qp->req_cq->evd:0, m_qp->ep, m_qp->wr_tl, m_qp->wr_hd,
                 m_qp->wc_tl, cookie);
 
+       dapl_os_lock(&m_qp->req_cq->evd->header.lock);
        dapls_evd_cqe_to_event(m_qp->req_cq->evd, wc);
+       dapl_os_unlock(&m_qp->req_cq->evd->header.lock);
 }
 
 /* RX work completion of RW data to remote PI, remote RR completion */
@@ -237,7 +239,9 @@ static inline void mcm_dto_rcv(struct dcm_ib_cq *m_cq, struct ibv_wc *wc)
                         m_qp->wc_tl, cookie);
 
                mcm_const_ib_wc(&ib_wc, &m_wc->wc, 1);
+               dapl_os_lock(&m_qp->req_cq->evd->header.lock);
                dapls_evd_cqe_to_event(m_qp->req_cq->evd, &ib_wc);
+               dapl_os_unlock(&m_qp->req_cq->evd->header.lock);
        }
 bail:
        if (mcm_post_rcv_wc(m_qp, 1))