aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/infiniband
diff options
context:
space:
mode:
authorRalph Campbell <ralph.campbell@qlogic.com>2010-08-02 18:39:24 -0400
committerRoland Dreier <rolandd@cisco.com>2010-08-03 16:59:25 -0400
commit3e3aed0b88f680fed5c604caf7b10d77b2ec45c4 (patch)
tree54213dba31eceaeb9990583030fb715d5795f000 /drivers/infiniband
parent4c6931f5d4f423238ae6e93423081c6ff9753d26 (diff)
IB/qib: Limit the number of packets processed per interrupt
Don't processes too many packets without allowing other IRQ functions a chance to run. Otherwise, there is a chance of getting a "soft lockup" messages and poor application response times. Signed-off-by: Ralph Campbell <ralph.campbell@qlogic.com> Signed-off-by: Roland Dreier <rolandd@cisco.com>
Diffstat (limited to 'drivers/infiniband')
-rw-r--r--drivers/infiniband/hw/qib/qib_driver.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/drivers/infiniband/hw/qib/qib_driver.c b/drivers/infiniband/hw/qib/qib_driver.c
index f15ce076ac49..9cd193603fb1 100644
--- a/drivers/infiniband/hw/qib/qib_driver.c
+++ b/drivers/infiniband/hw/qib/qib_driver.c
@@ -335,7 +335,7 @@ u32 qib_kreceive(struct qib_ctxtdata *rcd, u32 *llic, u32 *npkts)
335 smp_rmb(); /* prevent speculative reads of dma'ed hdrq */ 335 smp_rmb(); /* prevent speculative reads of dma'ed hdrq */
336 } 336 }
337 337
338 for (last = 0, i = 1; !last; i += !last) { 338 for (last = 0, i = 1; !last && i <= 64; i += !last) {
339 hdr = dd->f_get_msgheader(dd, rhf_addr); 339 hdr = dd->f_get_msgheader(dd, rhf_addr);
340 eflags = qib_hdrget_err_flags(rhf_addr); 340 eflags = qib_hdrget_err_flags(rhf_addr);
341 etype = qib_hdrget_rcv_type(rhf_addr); 341 etype = qib_hdrget_rcv_type(rhf_addr);