提交 b0140fda 编写于 作者: W Wen Gong 提交者: Johannes Berg

mac80211: mlme: save ssid info to ieee80211_bss_conf while assoc

The ssid info of ieee80211_bss_conf is filled in ieee80211_start_ap()
for AP mode. For STATION mode, it is empty, save the info from struct
ieee80211_mgd_assoc_data, the struct ieee80211_mgd_assoc_data will be
freed after assoc, so the ssid info of ieee80211_mgd_assoc_data can not
access after assoc, save ssid info to ieee80211_bss_conf, then ssid info
can be still access after assoc.
Signed-off-by: NWen Gong <wgong@codeaurora.org>
Link: https://lore.kernel.org/r/1607312195-3583-2-git-send-email-wgong@codeaurora.org
[reset on disassoc]
Signed-off-by: NJohannes Berg <johannes.berg@intel.com>
上级 44b72ca8
...@@ -2403,6 +2403,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata, ...@@ -2403,6 +2403,8 @@ static void ieee80211_set_disassoc(struct ieee80211_sub_if_data *sdata,
/* clear bssid only after building the needed mgmt frames */ /* clear bssid only after building the needed mgmt frames */
eth_zero_addr(ifmgd->bssid); eth_zero_addr(ifmgd->bssid);
sdata->vif.bss_conf.ssid_len = 0;
/* remove AP and TDLS peers */ /* remove AP and TDLS peers */
sta_info_flush(sdata); sta_info_flush(sdata);
...@@ -5518,6 +5520,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata, ...@@ -5518,6 +5520,7 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
struct ieee80211_mgd_assoc_data *assoc_data; struct ieee80211_mgd_assoc_data *assoc_data;
const struct cfg80211_bss_ies *beacon_ies; const struct cfg80211_bss_ies *beacon_ies;
struct ieee80211_supported_band *sband; struct ieee80211_supported_band *sband;
struct ieee80211_bss_conf *bss_conf = &sdata->vif.bss_conf;
const u8 *ssidie, *ht_ie, *vht_ie; const u8 *ssidie, *ht_ie, *vht_ie;
int i, err; int i, err;
bool override = false; bool override = false;
...@@ -5535,6 +5538,8 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata, ...@@ -5535,6 +5538,8 @@ int ieee80211_mgd_assoc(struct ieee80211_sub_if_data *sdata,
} }
memcpy(assoc_data->ssid, ssidie + 2, ssidie[1]); memcpy(assoc_data->ssid, ssidie + 2, ssidie[1]);
assoc_data->ssid_len = ssidie[1]; assoc_data->ssid_len = ssidie[1];
memcpy(bss_conf->ssid, assoc_data->ssid, assoc_data->ssid_len);
bss_conf->ssid_len = assoc_data->ssid_len;
rcu_read_unlock(); rcu_read_unlock();
if (ifmgd->associated) { if (ifmgd->associated) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册