From 14096ea4bbf58c527b5e09512cd790b6bf3d0976 Mon Sep 17 00:00:00 2001 From: Kapil Gupta Date: Mon, 18 Jul 2022 14:55:34 +0530 Subject: [PATCH 1/2] fix(wpa_supplicant): Do not disconnect in WPS disable incase WPS is done/scanning --- components/wpa_supplicant/src/esp_supplicant/esp_wps.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c index db0991a8c3..1c5368c6be 100644 --- a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c +++ b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c @@ -2170,6 +2170,7 @@ int wifi_wps_disable_internal(void) int esp_wifi_wps_disable(void) { int ret = 0; + int wps_status; if (ESP_OK != wps_check_wifi_mode()) { return ESP_ERR_WIFI_MODE; @@ -2183,7 +2184,8 @@ int esp_wifi_wps_disable(void) return ESP_OK; } - wpa_printf(MSG_INFO, "wifi_wps_disable\n"); + wps_status = wps_get_status(); + wpa_printf(MSG_INFO, "wifi_wps_disable"); wps_set_type(WPS_TYPE_DISABLE); /* Notify WiFi task */ /* Call wps_delete_timer to delete all WPS timer, no timer will call wps_post() @@ -2201,7 +2203,10 @@ int esp_wifi_wps_disable(void) wpa_printf(MSG_ERROR, "wps disable: failed to disable wps, ret=%d", ret); } - esp_wifi_disconnect(); + /* Only disconnect in case of WPS pending */ + if (wps_status == WPS_STATUS_PENDING) { + esp_wifi_disconnect(); + } esp_wifi_set_wps_start_flag_internal(false); wps_task_deinit(); s_wps_enabled = false; From 8ea8e21803d8dbf57bdb7f981b10b8873e026f8f Mon Sep 17 00:00:00 2001 From: Kapil Gupta Date: Mon, 22 Aug 2022 20:25:02 +0530 Subject: [PATCH 2/2] fix(wpa_supplicant): Fix WPS connection issue after WPS done esp_wifi_disconnect is needed to clear the wifi state and enable station to connect to new SSID. Add changes to call it after WPS is done. --- components/wpa_supplicant/src/esp_supplicant/esp_wps.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c index 1c5368c6be..801252d435 100644 --- a/components/wpa_supplicant/src/esp_supplicant/esp_wps.c +++ b/components/wpa_supplicant/src/esp_supplicant/esp_wps.c @@ -2203,8 +2203,8 @@ int esp_wifi_wps_disable(void) wpa_printf(MSG_ERROR, "wps disable: failed to disable wps, ret=%d", ret); } - /* Only disconnect in case of WPS pending */ - if (wps_status == WPS_STATUS_PENDING) { + /* Only disconnect in case of WPS pending/done */ + if ((wps_status == WPS_STATUS_PENDING) || (wps_status == WPS_STATUS_SUCCESS)) { esp_wifi_disconnect(); } esp_wifi_set_wps_start_flag_internal(false);