nl80211: Clear ignore_next_local_deauth flag
The de-authentication flow in wpa_driver_nl80211_deauthenticate() can result in a locally generated de-authentication event. To avoid getting this extra event ignore_next_local_deauth flag is set, and should be cleared when the next local deauth event is received. However, it is not cleared when the event shows up after the wpa_supplicant has started a connection with a new AP, and as a result it might ignore future deauth event from the driver. Fix this by clearing the flag if the event is locally generated. Signed-off-by: Ayala Beker <ayala.beker@intel.com>
This commit is contained in:
parent
cb2a926df8
commit
757785dab2
1 changed files with 14 additions and 3 deletions
|
@ -651,10 +651,21 @@ static void mlme_event_deauth_disassoc(struct wpa_driver_nl80211_data *drv,
|
|||
* Avoid issues with some roaming cases where
|
||||
* disconnection event for the old AP may show up after
|
||||
* we have started connection with the new AP.
|
||||
* In case of locally generated event clear
|
||||
* ignore_next_local_deauth as well, to avoid next local
|
||||
* deauth event be wrongly ignored.
|
||||
*/
|
||||
wpa_printf(MSG_DEBUG, "nl80211: Ignore deauth/disassoc event from old AP " MACSTR " when already authenticating with " MACSTR,
|
||||
MAC2STR(bssid),
|
||||
MAC2STR(drv->auth_attempt_bssid));
|
||||
if (!os_memcmp(mgmt->sa, drv->first_bss->addr,
|
||||
ETH_ALEN)) {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"nl80211: Received a locally generated deauth event. Clear ignore_next_local_deauth flag");
|
||||
drv->ignore_next_local_deauth = 0;
|
||||
} else {
|
||||
wpa_printf(MSG_DEBUG,
|
||||
"nl80211: Ignore deauth/disassoc event from old AP " MACSTR " when already authenticating with " MACSTR,
|
||||
MAC2STR(bssid),
|
||||
MAC2STR(drv->auth_attempt_bssid));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue