libmthca: fence bit must be set in doorbell, not only in WQE Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]>
Index: openib/src/userspace/libmthca/src/qp.c =================================================================== --- openib/src/userspace/libmthca/src/qp.c (revision 8841) +++ openib/src/userspace/libmthca/src/qp.c (working copy) @@ -106,7 +106,8 @@ int mthca_tavor_post_send(struct ibv_qp int ret = 0; int size, size0 = 0; int i; - uint32_t f0 = 0, op0 = 0; + uint32_t f0 = (wr->send_flags & IBV_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; + uint32_t op0 = 0; pthread_spin_lock(&qp->sq.lock); @@ -436,7 +437,8 @@ int mthca_arbel_post_send(struct ibv_qp int ret = 0; int size, size0 = 0; int i; - uint32_t f0 = 0, op0 = 0; + uint32_t f0 = (wr->send_flags & IBV_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; + uint32_t op0 = 0; pthread_spin_lock(&qp->sq.lock); @@ -469,6 +471,7 @@ int mthca_arbel_post_send(struct ibv_qp mthca_write64(doorbell, to_mctx(ibqp->context), MTHCA_SEND_DOORBELL); size0 = 0; + f0 = (wr->send_flags & IBV_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; } if (wq_overflow(&qp->sq, nreq, to_mcq(qp->ibv_qp.send_cq))) { Index: openib/src/userspace/libmthca/src/wqe.h =================================================================== --- openib/src/userspace/libmthca/src/wqe.h (revision 8841) +++ openib/src/userspace/libmthca/src/wqe.h (working copy) @@ -42,6 +42,10 @@ enum { }; enum { + MTHCA_SEND_DOORBELL_FENCE = 1 << 5 +}; + +enum { MTHCA_NEXT_DBD = 1 << 7, MTHCA_NEXT_FENCE = 1 << 6, MTHCA_NEXT_CQ_UPDATE = 1 << 3, -- MST _______________________________________________ openib-general mailing list openib-general@openib.org http://openib.org/mailman/listinfo/openib-general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general