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
[email protected]
http://openib.org/mailman/listinfo/openib-general
To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general