mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-08-05 16:54:27 +00:00
IB/cq: Don't process more than the given budget
The caller might not want this overhead. Reviewed-by: Bart Van Assche <bart.vanassche@sandisk.com> Reviewed-by: Leon Romanovsky <leonro@mellanox.com> Signed-off-by: Sagi Grimberg <sagi@grimberg.me> Reviewed-by: Yuval Shaia <yuval.shaia@oracle.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
9fcd67d177
commit
fedd9e1f75
1 changed files with 7 additions and 1 deletions
|
@ -29,7 +29,13 @@ static int __ib_process_cq(struct ib_cq *cq, int budget)
|
||||||
{
|
{
|
||||||
int i, n, completed = 0;
|
int i, n, completed = 0;
|
||||||
|
|
||||||
while ((n = ib_poll_cq(cq, IB_POLL_BATCH, cq->wc)) > 0) {
|
/*
|
||||||
|
* budget might be (-1) if the caller does not
|
||||||
|
* want to bound this call, thus we need unsigned
|
||||||
|
* minimum here.
|
||||||
|
*/
|
||||||
|
while ((n = ib_poll_cq(cq, min_t(u32, IB_POLL_BATCH,
|
||||||
|
budget - completed), cq->wc)) > 0) {
|
||||||
for (i = 0; i < n; i++) {
|
for (i = 0; i < n; i++) {
|
||||||
struct ib_wc *wc = &cq->wc[i];
|
struct ib_wc *wc = &cq->wc[i];
|
||||||
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue