Files
android_kernel_xiaomi_sm8450/drivers/net
David S. Miller d1d08d1265 [NET]: Fix drivers to handle napi_disable() disabling interrupts.
When we add the generic napi_disable_pending() breakout
logic to net_rx_action() it means that napi_disable()
can cause NAPI poll interrupt events to be disabled.

And this is exactly what we want.  If a napi_disable()
is pending, and we are looping in the ->poll(), we want
->poll() event interrupts to stay disabled and we want
to complete the NAPI poll ASAP.

When ->poll() break out during device down was being handled on a
per-driver basis, often these drivers would turn interrupts back on
when '!netif_running()' was detected.

And this would just cause a reschedule of the NAPI ->poll() in the
interrupt handler before the napi_disable() could get in there and
grab the NAPI_STATE_SCHED bit.

The vast majority of drivers don't care if napi_disable() might have
the side effect of disabling NAPI ->poll() event interrupts.  In all
such cases, when a napi_disable() is performed, the driver just
disabled interrupts or is about to.

However there were three exceptions to this in PCNET32, R8169, and
SKY2.  To fix those cases, at the subsequent napi_enable() points, I
added code to ensure that the ->poll() interrupt events are enabled in
the hardware.

Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by:  Don Fry <pcnet32@verizon.net>
2008-01-08 23:30:12 -08:00
..
2007-12-04 14:52:58 -05:00
2007-11-14 18:45:47 -08:00
2007-12-07 15:00:36 -05:00
2007-12-16 14:09:44 -08:00
2008-01-08 23:30:11 -08:00
2007-12-22 22:53:06 -05:00
2007-10-17 20:23:30 -04:00
2007-10-10 16:52:06 -07:00
2007-10-10 16:51:57 -07:00
2007-07-10 12:41:08 -04:00
2007-11-05 17:57:30 -05:00
2007-10-10 16:55:27 -07:00
2007-10-10 16:51:43 -07:00
2007-10-10 16:54:07 -07:00
2007-12-11 02:45:31 -08:00
2007-12-11 02:45:30 -08:00
2008-01-04 00:47:04 -08:00
2007-02-09 16:23:17 +00:00
2007-12-22 22:53:06 -05:00
2007-12-22 22:53:06 -05:00
2007-10-19 23:00:01 -04:00
2007-10-10 16:51:13 -07:00
2007-10-10 16:51:13 -07:00
2007-10-19 11:53:42 -07:00
2007-12-22 22:53:07 -05:00
2007-11-23 20:59:59 -05:00
2007-07-30 15:48:16 -04:00
2007-07-30 15:48:16 -04:00
2007-12-04 15:06:11 -05:00
2007-10-17 20:11:28 -04:00
2007-12-14 15:26:15 -05:00
2007-10-10 16:50:46 -07:00
2007-10-25 03:31:13 -04:00
2007-10-25 03:31:13 -04:00
2007-10-19 11:53:41 -07:00
2007-10-10 16:51:13 -07:00
2008-01-08 23:30:00 -08:00
2007-10-19 11:53:42 -07:00
2007-04-28 11:01:05 -04:00
2007-10-15 14:29:49 -04:00
2008-01-08 23:29:59 -08:00
2007-10-10 16:51:13 -07:00
2007-10-23 21:28:40 -04:00
2007-10-10 16:54:38 -07:00
2007-10-10 16:54:30 -07:00
2007-11-12 18:07:31 -08:00
2007-10-19 11:53:42 -07:00
2007-10-15 14:29:48 -04:00
2007-12-17 16:02:28 -05:00
2007-12-01 16:32:30 -05:00
2007-10-16 21:10:29 -04:00
2007-05-04 17:59:08 -07:00
2007-07-16 15:02:47 +02:00
2007-12-14 15:26:04 -05:00
2007-10-10 16:51:13 -07:00
2007-12-14 15:26:00 -05:00
2007-11-15 15:38:45 -08:00
2007-10-10 16:51:34 -07:00
2007-10-10 16:51:34 -07:00
2007-12-19 16:43:48 -08:00
2007-11-12 21:22:02 -08:00
2007-10-10 16:51:13 -07:00
2007-10-19 23:00:03 -04:00
2007-12-26 19:36:34 -08:00
2007-09-13 15:43:46 -05:00
2007-12-14 16:12:38 -05:00
2007-12-26 19:36:35 -08:00
2007-10-10 16:52:04 -07:00
2007-10-10 16:53:49 -07:00