mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-25 21:54:06 +08:00
iser-target: Introduce isert_poll_budget
In case the CQ is packed with completions, we can't just hog the CPU forever. Poll until a sufficient budget (currently hard-coded to 64k completions) and if budget is exhausted, bailout and give a chance to other threads. Signed-off-by: Sagi Grimberg <sagig@mellanox.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
bdf20e7254
commit
37d9fe80a3
@ -2044,13 +2044,19 @@ isert_handle_wc(struct ib_wc *wc)
|
||||
static void
|
||||
isert_cq_work(struct work_struct *work)
|
||||
{
|
||||
enum { isert_poll_budget = 65536 };
|
||||
struct isert_comp *comp = container_of(work, struct isert_comp,
|
||||
work);
|
||||
int completed = 0;
|
||||
struct ib_wc wc;
|
||||
|
||||
while (ib_poll_cq(comp->cq, 1, &wc) == 1)
|
||||
while (ib_poll_cq(comp->cq, 1, &wc) == 1) {
|
||||
isert_handle_wc(&wc);
|
||||
|
||||
if (++completed >= isert_poll_budget)
|
||||
break;
|
||||
}
|
||||
|
||||
ib_req_notify_cq(comp->cq, IB_CQ_NEXT_COMP);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user