aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorJohannes Berg <johannes@sipsolutions.net>2008-05-15 06:55:26 -0400
committerJohn W. Linville <linville@tuxdriver.com>2008-05-21 21:48:08 -0400
commit36d6825b91bc492b65b6333c369cd96a2fc8c903 (patch)
tree9113754ce110d593da8019a329c4afb229a036b3 /net
parentc4680470a34a4f39af3d0a5c40f70befd8701908 (diff)
mac80211: let drivers wake but not start queues
Having drivers start queues is just confusing, their ->start() callback can block and do whatever is necessary, so let mac80211 start queues and have drivers wake queues when necessary (to get packets flowing again right away.) Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Acked-by: David S. Miller <davem@davemloft.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/main.c8
-rw-r--r--net/mac80211/util.c12
2 files changed, 7 insertions, 13 deletions
diff --git a/net/mac80211/main.c b/net/mac80211/main.c
index b0fddb7de549..9761d9bd5a79 100644
--- a/net/mac80211/main.c
+++ b/net/mac80211/main.c
@@ -110,7 +110,13 @@ static int ieee80211_master_open(struct net_device *dev)
110 break; 110 break;
111 } 111 }
112 } 112 }
113 return res; 113
114 if (res)
115 return res;
116
117 netif_start_queue(local->mdev);
118
119 return 0;
114} 120}
115 121
116static int ieee80211_master_stop(struct net_device *dev) 122static int ieee80211_master_stop(struct net_device *dev)
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index 9cd07e1031af..800c15aff6e7 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -350,18 +350,6 @@ void ieee80211_stop_queue(struct ieee80211_hw *hw, int queue)
350} 350}
351EXPORT_SYMBOL(ieee80211_stop_queue); 351EXPORT_SYMBOL(ieee80211_stop_queue);
352 352
353void ieee80211_start_queues(struct ieee80211_hw *hw)
354{
355 struct ieee80211_local *local = hw_to_local(hw);
356 int i;
357
358 for (i = 0; i < hw->queues + hw->ampdu_queues; i++)
359 clear_bit(IEEE80211_LINK_STATE_XOFF, &local->state[i]);
360 if (!ieee80211_qdisc_installed(local->mdev))
361 netif_start_queue(local->mdev);
362}
363EXPORT_SYMBOL(ieee80211_start_queues);
364
365void ieee80211_stop_queues(struct ieee80211_hw *hw) 353void ieee80211_stop_queues(struct ieee80211_hw *hw)
366{ 354{
367 int i; 355 int i;