David S. Miller a0a46196cd [NET]: Add NAPI_STATE_DISABLE.
Create a bit to signal that a napi_disable() is in progress.

This sets up infrastructure such that net_rx_action() can generically
break out of the ->poll() loop on a NAPI context that has a pending
napi_disable() yet is being bombed with packets (and thus would
otherwise poll endlessly and not allow the napi_disable() to finish).

Now, what napi_disable() does is first set the NAPI_STATE_DISABLE bit
(to indicate that a disable is pending), then it polls for the
NAPI_STATE_SCHED bit, and once the NAPI_STATE_SCHED bit is acquired
the NAPI_STATE_DISABLE bit is cleared.  Here, the test_and_set_bit()
provides the necessary memory barrier between the various bitops.

napi_schedule_prep() now tests for a pending disable as it's first
action and won't try to obtain the NAPI_STATE_SCHED bit if a disable
is pending.

As a result, we can remove the netif_running() check in
netif_rx_schedule_prep() because the NAPI disable pending state serves
this purpose.  And, it does so in a NAPI centric manner which is what
we really want.

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