diff options
author | John W. Linville <linville@tuxdriver.com> | 2010-07-29 16:14:13 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-08-16 14:39:46 -0400 |
commit | 4e6cbfd09c66893e5134c9896e9af353c2322b66 (patch) | |
tree | 274e8374c2b097058a5152da3bf6cf62d99dbad7 /net/mac80211/iface.c | |
parent | 68e887ef21dfd9adcf896ef92a9676bf9036a0aa (diff) |
mac80211: support use of NAPI for bottom-half processing
This patch implement basic infrastructure to support use of NAPI by
mac80211-based hardware drivers.
Because mac80211 devices can support multiple netdevs, a dummy netdev
is used for interfacing with the NAPI code in the core of the network
stack. That structure is hidden from the hardware drivers, but the
actual napi_struct is exposed in the ieee80211_hw structure so that the
poll routines in drivers can retrieve that structure. Hardware drivers
can also specify their own weight value for NAPI polling.
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r-- | net/mac80211/iface.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index ebbe264e2b0b..c1008a9d7bfb 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c | |||
@@ -187,6 +187,8 @@ static int ieee80211_open(struct net_device *dev) | |||
187 | res = drv_start(local); | 187 | res = drv_start(local); |
188 | if (res) | 188 | if (res) |
189 | goto err_del_bss; | 189 | goto err_del_bss; |
190 | if (local->ops->napi_poll) | ||
191 | napi_enable(&local->napi); | ||
190 | /* we're brought up, everything changes */ | 192 | /* we're brought up, everything changes */ |
191 | hw_reconf_flags = ~0; | 193 | hw_reconf_flags = ~0; |
192 | ieee80211_led_radio(local, true); | 194 | ieee80211_led_radio(local, true); |
@@ -519,6 +521,8 @@ static int ieee80211_stop(struct net_device *dev) | |||
519 | ieee80211_recalc_ps(local, -1); | 521 | ieee80211_recalc_ps(local, -1); |
520 | 522 | ||
521 | if (local->open_count == 0) { | 523 | if (local->open_count == 0) { |
524 | if (local->ops->napi_poll) | ||
525 | napi_disable(&local->napi); | ||
522 | ieee80211_clear_tx_pending(local); | 526 | ieee80211_clear_tx_pending(local); |
523 | ieee80211_stop_device(local); | 527 | ieee80211_stop_device(local); |
524 | 528 | ||