diff options
author | Johannes Berg <johannes.berg@intel.com> | 2013-12-04 23:18:37 +0100 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-12-16 11:29:47 +0100 |
commit | e716251d776ce92eb5169522f565ada3deed2a2a (patch) | |
tree | 70615090a03c61e6f0d3f29b8b93e54cd8622f90 /net/mac80211/cfg.c | |
parent | d778207b06ac1becd012eb689dafdf85feebb179 (diff) | |
download | op-kernel-dev-e716251d776ce92eb5169522f565ada3deed2a2a.zip op-kernel-dev-e716251d776ce92eb5169522f565ada3deed2a2a.tar.gz |
mac80211: optimise mixed AP/VLAN station removal
Teach sta_info_flush() to optionally also remove stations
from all VLANs associated with an AP interface to optimise
the station removal (in particular, synchronize_net().)
To not have to add the vlans argument throughout, do some
refactoring.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/cfg.c')
-rw-r--r-- | net/mac80211/cfg.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/net/mac80211/cfg.c b/net/mac80211/cfg.c index e11bdb6..18b56fb 100644 --- a/net/mac80211/cfg.c +++ b/net/mac80211/cfg.c @@ -1097,9 +1097,7 @@ static int ieee80211_stop_ap(struct wiphy *wiphy, struct net_device *dev) if (old_probe_resp) kfree_rcu(old_probe_resp, rcu_head); - list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) - sta_info_flush(vlan); - sta_info_flush(sdata); + __sta_info_flush(sdata, true); synchronize_net(); list_for_each_entry(vlan, &sdata->u.ap.vlans, u.vlan.list) ieee80211_free_keys(vlan); |