diff options
author | Eyal Shapira <eyal@wizery.com> | 2012-08-06 14:26:16 +0300 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-08-20 13:20:56 +0200 |
commit | aa7a00809cf6afe3cd6f5af2889110b47b798667 (patch) | |
tree | 4b2d537fdad3058f61ab0bb894b935afc75442b5 /net/mac80211/iface.c | |
parent | f609a43dca2964a8a604ef554be92fa11c3b4c41 (diff) | |
download | op-kernel-dev-aa7a00809cf6afe3cd6f5af2889110b47b798667.zip op-kernel-dev-aa7a00809cf6afe3cd6f5af2889110b47b798667.tar.gz |
mac80211: avoid using synchronize_rcu in ieee80211_set_probe_resp
This could take a while (100ms+) and may delay sending assoc resp
in AP mode with WPS or P2P GO (as setting the probe resp takes place
there). We've encountered situations where the delay was big enough
to cause connection problems with devices like Galaxy Nexus.
Switch to using call_rcu with a free handler.
[Arik - rework to use plain buffer and instead of skb]
Signed-off-by: Eyal Shapira <eyal@wizery.com>
Signed-off-by: Arik Nemtsov <arik@wizery.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r-- | net/mac80211/iface.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c index abee3a0..fbab7a8 100644 --- a/net/mac80211/iface.c +++ b/net/mac80211/iface.c @@ -715,7 +715,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, struct ieee80211_sub_if_data *vlan, *tmpsdata; struct beacon_data *old_beacon = rtnl_dereference(sdata->u.ap.beacon); - struct sk_buff *old_probe_resp = + struct probe_resp *old_probe_resp = rtnl_dereference(sdata->u.ap.probe_resp); /* sdata_running will return false, so this will disable */ @@ -727,7 +727,7 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata, RCU_INIT_POINTER(sdata->u.ap.probe_resp, NULL); synchronize_rcu(); kfree(old_beacon); - kfree_skb(old_probe_resp); + kfree(old_probe_resp); /* down all dependent devices, that is VLANs */ list_for_each_entry_safe(vlan, tmpsdata, &sdata->u.ap.vlans, |