IB/qib: Limit the number of packets processed per interrupt
authorRalph Campbell <ralph.campbell@qlogic.com>
Mon, 2 Aug 2010 22:39:24 +0000 (22:39 +0000)
committerRoland Dreier <rolandd@cisco.com>
Tue, 3 Aug 2010 20:59:25 +0000 (13:59 -0700)
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>
drivers/infiniband/hw/qib/qib_driver.c

index f15ce076ac498cb298cf148f76d5eca397ff55ea..9cd193603fb170d1a99ab34a69827794ae377273 100644 (file)
@@ -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);