aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2009-08-21 08:44:45 -0400
committerJohn W. Linville <linville@tuxdriver.com>2009-08-28 14:40:34 -0400
commitea77f12f2cc0f31168f2e0259e65a22202ac4dc2 (patch)
tree8ac1288e1680ae2b6093b4fdca978a4ea86f7e21 /net/mac80211/rx.c
parent3d54d25515838543e56889aa7e48f40d00719368 (diff)
mac80211: remove tasklet enable/disable
Due to the way the tasklets work in mac80211 there's no need to ever disable them. However, we need to clear the pending packets when taking down the last interface because otherwise the tx_pending_tasklet might be queued if the driver mucks with the queues (which it shouldn't). I've had a situation occasionally with ar9170 in which ksoftirq was using 100% CPU time because a disabled tasklet was scheduled, and I think that was due to ar9170 receiving a packet while the tasklet was disabled. That's strange and it really should not do that for other reasons, but there's no need to waste that much CPU time over it, it should just warn instead. Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index dff2239db6e2..b98f1afbfebf 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -2471,6 +2471,15 @@ void ieee80211_rx(struct ieee80211_hw *hw, struct sk_buff *skb)
2471 return; 2471 return;
2472 } 2472 }
2473 2473
2474 /*
2475 * The same happens when we're not even started,
2476 * but that's worth a warning.
2477 */
2478 if (WARN_ON(!local->started)) {
2479 kfree_skb(skb);
2480 return;
2481 }
2482
2474 if (status->flag & RX_FLAG_HT) { 2483 if (status->flag & RX_FLAG_HT) {
2475 /* rate_idx is MCS index */ 2484 /* rate_idx is MCS index */
2476 if (WARN_ON(status->rate_idx < 0 || 2485 if (WARN_ON(status->rate_idx < 0 ||