diff --git a/components/wpa_supplicant/port/esp_supplicant/esp_wpa_main.c b/components/wpa_supplicant/port/esp_supplicant/esp_wpa_main.c index 2e56d7ec..c8c180aa 100644 --- a/components/wpa_supplicant/port/esp_supplicant/esp_wpa_main.c +++ b/components/wpa_supplicant/port/esp_supplicant/esp_wpa_main.c @@ -144,6 +144,11 @@ void ICACHE_FLASH_ATTR wpa_sta_init() wpa_config_assoc_ie, wpa_install_key, wpa_get_key, wpa_deauthenticate, wpa_neg_complete); } +void wpa_sta_deinit(void) +{ + wpa_sm_deinit(); +} + void wpa_sta_connect(uint8_t *bssid) { wpa_config_profile(); diff --git a/components/wpa_supplicant/src/rsn_supp/wpa.c b/components/wpa_supplicant/src/rsn_supp/wpa.c index 30382982..88abbf96 100644 --- a/components/wpa_supplicant/src/rsn_supp/wpa.c +++ b/components/wpa_supplicant/src/rsn_supp/wpa.c @@ -2009,6 +2009,15 @@ void ICACHE_FLASH_ATTR wpa_register(char* payload, WPA_SEND_FUNC snd_func, return true; } +/** + * * wpa_sm_deinit - Deinitialize WPA state machine + * */ +void wpa_sm_deinit(void) +{ + struct wpa_sm *sm = &gWpaSm; + pmksa_cache_deinit(sm->pmksa); +} + void wpa_set_profile(u32 wpa_proto, u8 auth_mode) { struct wpa_sm *sm = &gWpaSm; diff --git a/components/wpa_supplicant/src/rsn_supp/wpa_i.h b/components/wpa_supplicant/src/rsn_supp/wpa_i.h index 85c16700..06b41bbd 100755 --- a/components/wpa_supplicant/src/rsn_supp/wpa_i.h +++ b/components/wpa_supplicant/src/rsn_supp/wpa_i.h @@ -163,6 +163,8 @@ void wpa_register(char * payload, WPA_SEND_FUNC snd_func, \ void eapol_txcb(void *eb); +void wpa_sm_deinit(void); + void wpa_set_profile(u32 wpa_proto, u8 auth_mode); int wpa_set_bss(char *macddr, char * bssid, u8 pairwise_cipher, u8 group_cipher, char *passphrase, u8 *ssid, size_t ssid_len);