diff options
author | Ralph Campbell <ralph.campbell@qlogic.com> | 2010-08-03 00:39:24 +0200 |
---|---|---|
committer | Roland Dreier <rolandd@cisco.com> | 2010-08-03 22:59:25 +0200 |
commit | 3e3aed0b88f680fed5c604caf7b10d77b2ec45c4 (patch) | |
tree | 54213dba31eceaeb9990583030fb715d5795f000 /drivers/infiniband | |
parent | IB/qib: Allow writes to the diag_counters to be able to clear them (diff) | |
download | linux-3e3aed0b88f680fed5c604caf7b10d77b2ec45c4.tar.xz linux-3e3aed0b88f680fed5c604caf7b10d77b2ec45c4.zip |
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.c | 2 |
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) smp_rmb(); /* prevent speculative reads of dma'ed hdrq */ } - for (last = 0, i = 1; !last; i += !last) { + for (last = 0, i = 1; !last && i <= 64; i += !last) { hdr = dd->f_get_msgheader(dd, rhf_addr); eflags = qib_hdrget_err_flags(rhf_addr); etype = qib_hdrget_rcv_type(rhf_addr); |