IB/mthca: make IB_SEND_FENCE work Fence bit must be set in the doorbell, not only in WQE
Signed-off-by: Michael S. Tsirkin <[EMAIL PROTECTED]> diff --git a/drivers/infiniband/hw/mthca/mthca_doorbell.h b/drivers/infiniband/hw/mthca/mthca_doorbell.h index dd9a44d..e5f0ad6 100644 --- a/drivers/infiniband/hw/mthca/mthca_doorbell.h +++ b/drivers/infiniband/hw/mthca/mthca_doorbell.h @@ -42,6 +42,10 @@ #define MTHCA_RECEIVE_DOORBELL 0x18 #define MTHCA_CQ_DOORBELL 0x20 #define MTHCA_EQ_DOORBELL 0x28 +enum { + MTHCA_SEND_DOORBELL_FENCE = 1 << 5 +}; + #if BITS_PER_LONG == 64 /* * Assume that we can just write a 64-bit doorbell atomically. s390 diff --git a/drivers/infiniband/hw/mthca/mthca_qp.c b/drivers/infiniband/hw/mthca/mthca_qp.c index cd8b672..6efba4a 100644 --- a/drivers/infiniband/hw/mthca/mthca_qp.c +++ b/drivers/infiniband/hw/mthca/mthca_qp.c @@ -1502,7 +1502,7 @@ int mthca_tavor_post_send(struct ib_qp * int i; int size; int size0 = 0; - u32 f0 = 0; + u32 f0 = unlikely(wr->send_flags & IB_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; int ind; u8 op0 = 0; @@ -1843,7 +1843,7 @@ int mthca_arbel_post_send(struct ib_qp * int i; int size; int size0 = 0; - u32 f0 = 0; + u32 f0 = unlikely(wr->send_flags & IB_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; int ind; u8 op0 = 0; @@ -1864,6 +1864,7 @@ int mthca_arbel_post_send(struct ib_qp * qp->sq.head += MTHCA_ARBEL_MAX_WQES_PER_SEND_DB; size0 = 0; + f0 = unlikely(wr->send_flags & IB_SEND_FENCE) ? MTHCA_SEND_DOORBELL_FENCE : 0; /* * Make sure that descriptors are written before -- 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