|
@@ -29,7 +29,13 @@ static int __ib_process_cq(struct ib_cq *cq, int budget)
|
|
|
{
|
|
|
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++) {
|
|
|
struct ib_wc *wc = &cq->wc[i];
|
|
|
|