aboutsummaryrefslogtreecommitdiffstats
path: root/net
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-02-03 12:28:55 -0500
committerGreg Kroah-Hartman <gregkh@suse.de>2010-04-26 10:47:48 -0400
commit4c35513318cdb86f13ce5d46a32b1d4045dc0856 (patch)
tree841e1e2461af149807f9275525cbea98285ad854 /net
parent358f3455718bf3db530eddf4c85ba5465e5f3e2d (diff)
mac80211: tear down all agg queues when restart/reconfig hw
commit 74e2bd1fa3ae9695af566ad5a7a288898787b909 upstream. When there is a need to restart/reconfig hw, tear down all the aggregation queues and let the mac80211 and driver get in-sync to have the opportunity to re-establish the aggregation queues again. Need to wait until driver re-establish all the station information before tear down the aggregation queues, driver(at least iwlwifi driver) will reject the stop aggregation queue request if station is not ready. But also need to make sure the aggregation queues are tear down before waking up the queues, so mac80211 will not sending frames with aggregation bit set. Signed-off-by: Wey-Yi Guy <wey-yi.w.guy@intel.com> Signed-off-by: John W. Linville <linville@tuxdriver.com> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
Diffstat (limited to 'net')
-rw-r--r--net/mac80211/util.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/net/mac80211/util.c b/net/mac80211/util.c
index c7179cbb0d8e..27212e8fcaf4 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1145,6 +1145,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1145 } 1145 }
1146 } 1146 }
1147 1147
1148 rcu_read_lock();
1149 if (hw->flags & IEEE80211_HW_AMPDU_AGGREGATION) {
1150 list_for_each_entry_rcu(sta, &local->sta_list, list) {
1151 ieee80211_sta_tear_down_BA_sessions(sta);
1152 }
1153 }
1154 rcu_read_unlock();
1155
1148 /* add back keys */ 1156 /* add back keys */
1149 list_for_each_entry(sdata, &local->interfaces, list) 1157 list_for_each_entry(sdata, &local->interfaces, list)
1150 if (netif_running(sdata->dev)) 1158 if (netif_running(sdata->dev))