aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/iface.c
diff options
context:
space:
mode:
authorJohn W. Linville <linville@tuxdriver.com>2010-07-29 16:14:13 -0400
committerJohn W. Linville <linville@tuxdriver.com>2010-08-16 14:39:46 -0400
commit4e6cbfd09c66893e5134c9896e9af353c2322b66 (patch)
tree274e8374c2b097058a5152da3bf6cf62d99dbad7 /net/mac80211/iface.c
parent68e887ef21dfd9adcf896ef92a9676bf9036a0aa (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.c4
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