RDMA/ocrdma: Fix CQE expansion of unsignaled WQE
Fix CQE expansion of unsignaled WQE -- don't expand the CQE when the WQE index of the completed CQE matches with last pending WQE (tail) in the queue. Signed-off-by: Parav Pandit <parav.pandit@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
fea7a08acb
commit
ae3bca90e9
|
@ -2219,7 +2219,6 @@ static bool ocrdma_poll_success_scqe(struct ocrdma_qp *qp,
|
|||
u32 wqe_idx;
|
||||
|
||||
if (!qp->wqe_wr_id_tbl[tail].signaled) {
|
||||
expand = true; /* CQE cannot be consumed yet */
|
||||
*polled = false; /* WC cannot be consumed yet */
|
||||
} else {
|
||||
ibwc->status = IB_WC_SUCCESS;
|
||||
|
@ -2227,10 +2226,11 @@ static bool ocrdma_poll_success_scqe(struct ocrdma_qp *qp,
|
|||
ibwc->qp = &qp->ibqp;
|
||||
ocrdma_update_wc(qp, ibwc, tail);
|
||||
*polled = true;
|
||||
wqe_idx = le32_to_cpu(cqe->wq.wqeidx) & OCRDMA_CQE_WQEIDX_MASK;
|
||||
if (tail != wqe_idx)
|
||||
expand = true; /* Coalesced CQE can't be consumed yet */
|
||||
}
|
||||
wqe_idx = le32_to_cpu(cqe->wq.wqeidx) & OCRDMA_CQE_WQEIDX_MASK;
|
||||
if (tail != wqe_idx)
|
||||
expand = true; /* Coalesced CQE can't be consumed yet */
|
||||
|
||||
ocrdma_hwq_inc_tail(&qp->sq);
|
||||
return expand;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue