aboutsummaryrefslogtreecommitdiffstats
path: root/net/mac80211/iface.c
diff options
context:
space:
mode:
authorArik Nemtsov <arik@wizery.com>2011-11-10 04:28:57 -0500
committerJohn W. Linville <linville@tuxdriver.com>2011-11-11 12:32:51 -0500
commit029458212604570eec4789049a8a74428484dbb4 (patch)
treecabbe65d50e83498300a25b02a67f8475c02c3b7 /net/mac80211/iface.c
parent00f740e1a3b7abb51980371ee8fa113df22ae0b8 (diff)
mac80211: Save probe response data for bss
Allow setting a probe response template for an interface operating in AP mode. Low level drivers are notified about changes in the probe response template and are able to retrieve a copy of the current probe response. This data can, for example, be uploaded to hardware as a template. Signed-off-by: Guy Eilam <guy@wizery.com> Signed-off-by: Arik Nemtsov <arik@wizery.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/iface.c')
-rw-r--r--net/mac80211/iface.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/net/mac80211/iface.c b/net/mac80211/iface.c
index 7b0c25bf8bbf..12a6d4bb5d37 100644
--- a/net/mac80211/iface.c
+++ b/net/mac80211/iface.c
@@ -462,15 +462,19 @@ static void ieee80211_do_stop(struct ieee80211_sub_if_data *sdata,
462 struct ieee80211_sub_if_data *vlan, *tmpsdata; 462 struct ieee80211_sub_if_data *vlan, *tmpsdata;
463 struct beacon_data *old_beacon = 463 struct beacon_data *old_beacon =
464 rtnl_dereference(sdata->u.ap.beacon); 464 rtnl_dereference(sdata->u.ap.beacon);
465 struct sk_buff *old_probe_resp =
466 rtnl_dereference(sdata->u.ap.probe_resp);
465 467
466 /* sdata_running will return false, so this will disable */ 468 /* sdata_running will return false, so this will disable */
467 ieee80211_bss_info_change_notify(sdata, 469 ieee80211_bss_info_change_notify(sdata,
468 BSS_CHANGED_BEACON_ENABLED); 470 BSS_CHANGED_BEACON_ENABLED);
469 471
470 /* remove beacon */ 472 /* remove beacon and probe response */
471 RCU_INIT_POINTER(sdata->u.ap.beacon, NULL); 473 RCU_INIT_POINTER(sdata->u.ap.beacon, NULL);
474 RCU_INIT_POINTER(sdata->u.ap.probe_resp, NULL);
472 synchronize_rcu(); 475 synchronize_rcu();
473 kfree(old_beacon); 476 kfree(old_beacon);
477 kfree(old_probe_resp);
474 478
475 /* down all dependent devices, that is VLANs */ 479 /* down all dependent devices, that is VLANs */
476 list_for_each_entry_safe(vlan, tmpsdata, &sdata->u.ap.vlans, 480 list_for_each_entry_safe(vlan, tmpsdata, &sdata->u.ap.vlans,