diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_common.c b/components/wpa_supplicant/esp_supplicant/src/esp_common.c index 0fbbfcd9c7..01a0cc1eab 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_common.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_common.c @@ -214,11 +214,16 @@ static void supplicant_sta_disconn_handler(void* arg, esp_event_base_t event_bas int32_t event_id, void* event_data) { struct wpa_supplicant *wpa_s = &g_wpa_supp; + wifi_event_sta_disconnected_t *disconn = event_data; + wpas_rrm_reset(wpa_s); if (wpa_s->current_bss) { wpa_s->current_bss = NULL; } - clear_bssid_flag(wpa_s); + + if (disconn->reason != WIFI_REASON_ROAMING) { + clear_bssid_flag(wpa_s); + } } static int ieee80211_handle_rx_frm(u8 type, u8 *frame, size_t len, u8 *sender, @@ -295,7 +300,6 @@ int esp_supplicant_common_init(struct wpa_funcs *wpa_cb) wpa_s->type = 0; wpa_s->subtype = 0; - wpa_s->type |= (1 << WLAN_FC_STYPE_BEACON) | (1 << WLAN_FC_STYPE_PROBE_RESP); esp_wifi_register_mgmt_frame_internal(wpa_s->type, wpa_s->subtype); wpa_cb->wpa_sta_rx_mgmt = ieee80211_handle_rx_frm; /* Matching is done only for MBO at the moment, this can be extended for other features*/ diff --git a/components/wpa_supplicant/esp_supplicant/src/esp_scan.c b/components/wpa_supplicant/esp_supplicant/src/esp_scan.c index 41bf97e082..7a3a0d6f24 100644 --- a/components/wpa_supplicant/esp_supplicant/src/esp_scan.c +++ b/components/wpa_supplicant/esp_supplicant/src/esp_scan.c @@ -19,6 +19,7 @@ #include "common/ieee802_11_common.h" #include "esp_common_i.h" #include "common/wnm_sta.h" +#include "esp_scan_i.h" extern struct wpa_supplicant g_wpa_supp; @@ -28,11 +29,11 @@ static void scan_done_event_handler(void *arg, STATUS status) /* update last scan time */ wpa_s->scan_start_tsf = esp_wifi_get_tsf_time(WIFI_IF_STA); - if (!wpa_s->scanning) { + if (wpa_s->scanning) { wpa_s->type &= ~(1 << WLAN_FC_STYPE_BEACON) & ~(1 << WLAN_FC_STYPE_PROBE_RESP); esp_wifi_register_mgmt_frame_internal(wpa_s->type, wpa_s->subtype); } - esp_supplicant_post_evt(SIG_SUPPLICANT_SCAN_DONE, 0); + esp_supplicant_handle_scan_done_evt(); } static void handle_wnm_scan_done(struct wpa_supplicant *wpa_s)