RDMA/ocrdma: Do not skip setting deferred_arm
When ib_request_notify_cq() is called for the first time, ocrdma tries to skip setting deffered_arm flag. This may lead CQ to an un-armed state thus never generating a CQ event and leaving consumer hung. This patch removes the part of code that skips setting deferred_arm. Signed-off-by: Devesh Sharma <devesh.sharma@emulex.com> Signed-off-by: Selvin Xavier <selvin.xavier@emulex.com> Signed-off-by: Mitesh Ahuja <mitesh.ahuja@emulex.com> Signed-off-by: Roland Dreier <roland@purestorage.com>
This commit is contained in:
parent
d6a488f21c
commit
f93439e476
|
@ -2846,11 +2846,9 @@ int ocrdma_arm_cq(struct ib_cq *ibcq, enum ib_cq_notify_flags cq_flags)
|
||||||
if (cq->first_arm) {
|
if (cq->first_arm) {
|
||||||
ocrdma_ring_cq_db(dev, cq_id, arm_needed, sol_needed, 0);
|
ocrdma_ring_cq_db(dev, cq_id, arm_needed, sol_needed, 0);
|
||||||
cq->first_arm = false;
|
cq->first_arm = false;
|
||||||
goto skip_defer;
|
|
||||||
}
|
}
|
||||||
cq->deferred_arm = true;
|
|
||||||
|
|
||||||
skip_defer:
|
cq->deferred_arm = true;
|
||||||
cq->deferred_sol = sol_needed;
|
cq->deferred_sol = sol_needed;
|
||||||
spin_unlock_irqrestore(&cq->cq_lock, flags);
|
spin_unlock_irqrestore(&cq->cq_lock, flags);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue