提交 af74d195 编写于 作者: D Devesh Sharma 提交者: Doug Ledford

RDMA/ocrdma: Prevent CQ-Doorbell floods

Changing CQ-Doorbell(DB) logic to prevent DB floods, it is supposed to be
pressed only if any hw CQE is polled. If cq-arm was requested
previously then don't bother about number of hw CQEs polled and
arm the CQ.
Signed-off-by: NDevesh Sharma <devesh.sharma@avagotech.com>
Signed-off-by: NSelvin Xavier <selvin.xavier@avagotech.com>
Signed-off-by: NDoug Ledford <dledford@redhat.com>
上级 aeb922df
......@@ -2933,16 +2933,11 @@ static int ocrdma_poll_hwcq(struct ocrdma_cq *cq, int num_entries,
}
stop_cqe:
cq->getp = cur_getp;
if (cq->deferred_arm) {
ocrdma_ring_cq_db(dev, cq->id, true, cq->deferred_sol,
polled_hw_cqes);
if (cq->deferred_arm || polled_hw_cqes) {
ocrdma_ring_cq_db(dev, cq->id, cq->deferred_arm,
cq->deferred_sol, polled_hw_cqes);
cq->deferred_arm = false;
cq->deferred_sol = false;
} else {
/* We need to pop the CQE. No need to arm */
ocrdma_ring_cq_db(dev, cq->id, false, cq->deferred_sol,
polled_hw_cqes);
cq->deferred_sol = false;
}
return i;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册