aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/cfg.c
diff options
context:
space:
mode:
authorJohannes Berg <johannes.berg@intel.com>2013-12-04 22:46:11 +0100
committerJohannes Berg <johannes.berg@intel.com>2013-12-16 11:29:45 +0100
commitd34ba2168a3c10e7301cca06069c39865b4c3ec6 (patch)
tree709e9c81eba18202588852e39d66fcf893334451 /net/mac80211/cfg.c
parentmac80211: move 4-addr sta pointer clearing before synchronize_rcu() (diff)
downloadlinux-dev-d34ba2168a3c10e7301cca06069c39865b4c3ec6.tar.xz
linux-dev-d34ba2168a3c10e7301cca06069c39865b4c3ec6.zip
mac80211: don't delay station destruction
If we can assume that stations are never referenced by the driver after sta_state returns (and this is true since the previous iwlmvm patch and for all other drivers) then we don't need to delay station destruction, and don't need to play tricks with rcu_barrier() etc. This should speed up some scenarios like hostapd shutdown. Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r--net/mac80211/cfg.c10
1 files changed, 3 insertions, 7 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c
index 8b790e7b221e..e11bdb63167a 100644
--- a/net/mac80211/cfg.c
+++ b/net/mac80211/cfg.c
@@ -1098,15 +1098,11 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev)
kfree_rcu(old_probe_resp, rcu_head);
list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list)
- sta_info_flush_defer(vlan);
- sta_info_flush_defer(sdata);
+ sta_info_flush(vlan);
+ sta_info_flush(sdata);
synchronize_net();
- rcu_barrier();
- list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) {
- sta_info_flush_cleanup(vlan);
+ list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list)
ieee80211_free_keys(vlan);
- }
- sta_info_flush_cleanup(sdata);
ieee80211_free_keys(sdata);
sdata->vif.bss_conf.enable_beacon = false;