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: Wen 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: Johannes Berg <johannes.berg@intel.com>
This commit is contained in:
parent
44b72ca816
commit
b0140fda62
1 changed files with 5 additions and 0 deletions
|
@ -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,
|
||||||
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,
|
||||||
}
|
}
|
||||||
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) {
|
||||||
|
|
Loading…
Add table
Reference in a new issue