aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/ieee80211_i.h
diff options
context:
space:
mode:
authorEyal Shapira <eyal@wizery.com>2012-08-06 07:26:16 -0400
committerJohannes Berg <johannes.berg@intel.com>2012-08-20 07:20:56 -0400
commitaa7a00809cf6afe3cd6f5af2889110b47b798667 (patch)
tree4b2d537fdad3058f61ab0bb894b935afc75442b5 /net/mac80211/ieee80211_i.h
parentf609a43dca2964a8a604ef554be92fa11c3b4c41 (diff)
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/ieee80211_i.h')
-rw-r--r--net/mac80211/ieee80211_i.h8
1 files changed, 7 insertions, 1 deletions
diff --git a/net/mac80211/ieee80211_i.h b/net/mac80211/ieee80211_i.h
index d1a7c58a8c62..e22aee83ba53 100644
--- a/net/mac80211/ieee80211_i.h
+++ b/net/mac80211/ieee80211_i.h
@@ -272,9 +272,15 @@ struct beacon_data {
272 struct rcu_head rcu_head; 272 struct rcu_head rcu_head;
273}; 273};
274 274
275struct probe_resp {
276 struct rcu_head rcu_head;
277 int len;
278 u8 data[0];
279};
280
275struct ieee80211_if_ap { 281struct ieee80211_if_ap {
276 struct beacon_data __rcu *beacon; 282 struct beacon_data __rcu *beacon;
277 struct sk_buff __rcu *probe_resp; 283 struct probe_resp __rcu *probe_resp;
278 284
279 struct list_head vlans; 285 struct list_head vlans;
280 286