aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211
diff options
context:
space:
mode:
authorWey-Yi Guy <wey-yi.w.guy@intel.com>2010-02-03 12:28:55 -0500
committerJohn W. Linville <linville@tuxdriver.com>2010-02-08 16:50:54 -0500
commit74e2bd1fa3ae9695af566ad5a7a288898787b909 (patch)
tree25b0c76fb983cef091fe3a02fe27ab2891b0efb8 /net/mac80211
parent3f7c5c10e9dc6bf90179eb9f7c06151d508fb324 (diff)
mac80211: tear down all agg queues when restart/reconfig hw
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>
Diffstat (limited to 'net/mac80211')
-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 3af439a85b33..c453226f06b2 100644
--- a/net/mac80211/util.c
+++ b/net/mac80211/util.c
@@ -1178,6 +1178,14 @@ int ieee80211_reconfig(struct ieee80211_local *local)
1178 } 1178 }
1179 } 1179 }
1180 1180
1181 rcu_read_lock();
1182 if (hw->flags & IEEE80211_HW_AMPDU_AGGREGATION) {
1183 list_for_each_entry_rcu(sta, &local->sta_list, list) {
1184 ieee80211_sta_tear_down_BA_sessions(sta);
1185 }
1186 }
1187 rcu_read_unlock();
1188
1181 /* add back keys */ 1189 /* add back keys */
1182 list_for_each_entry(sdata, &local->interfaces, list) 1190 list_for_each_entry(sdata, &local->interfaces, list)
1183 if (ieee80211_sdata_running(sdata)) 1191 if (ieee80211_sdata_running(sdata))