Joshua Hoke b336369c1e macb: Don't re-enable interrupts while in polling mode
On a busy network, the macb driver could get stuck in the interrupt
handler, quickly triggering the watchdog, due to a confluence of
factors:

 1. macb_poll re-enables interrupts unconditionally, even when it will
    be called again because it exhausted its rx budget

 2. macb_interrupt only disables interrupts after scheduling
    macb_poll, but scheduling fails when macb_poll is already scheduled
    because it didn't call napi_complete

 3. macb_interrupt loops until the interrupt status register is clear,
    which will never happen in this case if the driver doesn't disable
    the RX interrupt

Since macb_interrupt runs in interrupt context, this effectively locks
up the machine, triggering the hardware watchdog.

This issue was readily reproducible on a flooded network with a
modified 2.6.27.48 kernel. The same problem appears to still be in the
2.6.36-rc8 driver code, so I am submitting this patch against that
version. I have not tested this version of the patch except to make
sure the kernel compiles.

Signed-off-by: Joshua Hoke <joshua.hoke@sixnet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2010-10-25 12:14:11 -07:00
..
2010-10-24 14:55:49 -07:00
2010-10-25 12:14:10 -07:00
2010-10-24 15:07:14 -07:00
2010-05-10 05:01:31 -07:00
2010-09-29 19:45:37 -07:00
2010-10-24 15:07:11 -07:00
2010-10-24 15:07:13 -07:00
2010-10-21 03:09:43 -07:00
2010-10-24 15:52:32 -07:00
2010-05-10 05:01:31 -07:00
2010-06-03 03:18:23 -07:00
2010-07-19 15:27:13 -07:00
2010-07-11 18:15:08 -07:00
2010-07-11 18:15:08 -07:00
2010-08-24 12:24:07 -07:00
2010-09-26 18:34:29 -07:00
2010-09-26 18:34:29 -07:00
2010-10-06 14:10:35 -07:00
2010-10-14 10:45:56 -07:00
2010-10-14 10:45:56 -07:00
2010-10-14 10:45:56 -07:00
2010-07-19 13:32:57 -07:00
2010-07-14 13:40:36 -07:00
2010-05-10 05:01:31 -07:00
2010-09-26 18:34:29 -07:00
2010-09-26 18:34:29 -07:00
2010-09-29 13:23:30 -07:00
2010-09-26 18:34:29 -07:00
2010-05-10 05:01:31 -07:00
2010-09-26 18:34:29 -07:00
2010-08-24 12:23:01 -07:00
2010-09-26 18:34:29 -07:00
2010-10-21 01:26:46 -07:00
2010-05-10 05:01:31 -07:00
2010-10-24 16:18:25 -07:00
2010-10-21 03:52:11 -07:00
2010-07-27 22:24:37 -07:00
2010-09-08 21:47:13 -07:00
2010-09-26 18:34:29 -07:00
2010-05-10 05:01:31 -07:00
2010-09-26 18:34:29 -07:00
2010-06-21 13:40:25 -07:00
2010-07-05 20:08:05 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-06-28 12:41:33 -07:00
2010-09-26 18:34:29 -07:00
2010-09-15 22:06:05 -07:00
2010-10-12 17:36:09 +02:00
2010-08-04 21:53:17 -07:00
2010-09-21 18:04:47 -07:00
2010-09-21 18:04:47 -07:00
2010-09-21 18:04:47 -07:00
2010-07-15 20:46:22 -07:00
2010-08-25 16:41:26 -07:00
2010-05-10 05:01:31 -07:00
2010-09-26 18:34:29 -07:00
2010-06-03 03:18:23 -07:00
2010-10-24 16:25:39 -07:00
2010-09-26 18:34:29 -07:00
2010-05-10 05:01:31 -07:00
2010-05-10 05:01:31 -07:00
2010-07-14 12:17:35 -07:00
2010-09-26 18:34:29 -07:00
2010-09-26 18:34:29 -07:00
2010-09-26 18:34:29 -07:00
2010-09-26 18:34:29 -07:00
2010-06-03 03:18:23 -07:00
2010-09-26 18:34:29 -07:00
2010-05-10 05:01:31 -07:00