Postpone updating of wpa_s->current_bss till association event
In the case of driver-based BSS selection, a bssid_hint in the connect request might not result in to the selection of the same BSS. Thus, postpone the updation of the wpa_s->current_bss till the association event is received unless the BSSID is forced. This fixes issues where wpa_s->current_bss may end up being updated to point to the BSS that wpa_supplicant provided as a hint for a roaming case, but then not restored if the driver decides to "return" to the current BSS instead. This could result in some operations (e.g., WNM BSS TM response) not working properly due to incorrect BSS being identified in wpa_s->current_bss. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
3784c0589e
commit
4d3be9cdd1
1 changed files with 2 additions and 1 deletions
|
@ -2400,7 +2400,8 @@ static void wpas_start_assoc_cb(struct wpa_radio_work *work, int deinit)
|
||||||
}
|
}
|
||||||
old_ssid = wpa_s->current_ssid;
|
old_ssid = wpa_s->current_ssid;
|
||||||
wpa_s->current_ssid = ssid;
|
wpa_s->current_ssid = ssid;
|
||||||
wpa_s->current_bss = bss;
|
if (!wpas_driver_bss_selection(wpa_s) || ssid->bssid_set)
|
||||||
|
wpa_s->current_bss = bss;
|
||||||
wpa_supplicant_rsn_supp_set_config(wpa_s, wpa_s->current_ssid);
|
wpa_supplicant_rsn_supp_set_config(wpa_s, wpa_s->current_ssid);
|
||||||
wpa_supplicant_initiate_eapol(wpa_s);
|
wpa_supplicant_initiate_eapol(wpa_s);
|
||||||
if (old_ssid != wpa_s->current_ssid)
|
if (old_ssid != wpa_s->current_ssid)
|
||||||
|
|
Loading…
Reference in a new issue