|
@@ -1727,23 +1727,7 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
|
|
|
|
|
|
ind = qp->rq.next_ind;
|
|
|
|
|
|
- for (nreq = 0; wr; ++nreq, wr = wr->next) {
|
|
|
- if (unlikely(nreq == MTHCA_TAVOR_MAX_WQES_PER_RECV_DB)) {
|
|
|
- nreq = 0;
|
|
|
-
|
|
|
- doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0);
|
|
|
- doorbell[1] = cpu_to_be32(qp->qpn << 8);
|
|
|
-
|
|
|
- wmb();
|
|
|
-
|
|
|
- mthca_write64(doorbell,
|
|
|
- dev->kar + MTHCA_RECEIVE_DOORBELL,
|
|
|
- MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
|
|
|
-
|
|
|
- qp->rq.head += MTHCA_TAVOR_MAX_WQES_PER_RECV_DB;
|
|
|
- size0 = 0;
|
|
|
- }
|
|
|
-
|
|
|
+ for (nreq = 0; wr; wr = wr->next) {
|
|
|
if (mthca_wq_overflow(&qp->rq, nreq, qp->ibqp.recv_cq)) {
|
|
|
mthca_err(dev, "RQ %06x full (%u head, %u tail,"
|
|
|
" %d max, %d nreq)\n", qp->qpn,
|
|
@@ -1797,6 +1781,23 @@ int mthca_tavor_post_receive(struct ib_qp *ibqp, struct ib_recv_wr *wr,
|
|
|
++ind;
|
|
|
if (unlikely(ind >= qp->rq.max))
|
|
|
ind -= qp->rq.max;
|
|
|
+
|
|
|
+ ++nreq;
|
|
|
+ if (unlikely(nreq == MTHCA_TAVOR_MAX_WQES_PER_RECV_DB)) {
|
|
|
+ nreq = 0;
|
|
|
+
|
|
|
+ doorbell[0] = cpu_to_be32((qp->rq.next_ind << qp->rq.wqe_shift) | size0);
|
|
|
+ doorbell[1] = cpu_to_be32(qp->qpn << 8);
|
|
|
+
|
|
|
+ wmb();
|
|
|
+
|
|
|
+ mthca_write64(doorbell,
|
|
|
+ dev->kar + MTHCA_RECEIVE_DOORBELL,
|
|
|
+ MTHCA_GET_DOORBELL_LOCK(&dev->doorbell_lock));
|
|
|
+
|
|
|
+ qp->rq.head += MTHCA_TAVOR_MAX_WQES_PER_RECV_DB;
|
|
|
+ size0 = 0;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
out:
|