From afbad5ca9d135e58ad4b2eda56f4b24f83d53c8b Mon Sep 17 00:00:00 2001 From: chenwen Date: Tue, 20 Jul 2021 11:07:26 +0800 Subject: [PATCH] riscv/esp32c3: Clear station configuration when connection fails or disconnect --- .../risc-v/src/esp32c3/esp32c3_wifi_adapter.c | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c index 169c58f9354..f6c623ff60c 100644 --- a/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c +++ b/arch/risc-v/src/esp32c3/esp32c3_wifi_adapter.c @@ -5659,6 +5659,7 @@ int esp_wifi_sta_connect(void) { int ret; uint32_t ticks; + wifi_config_t wifi_cfg; esp_wifi_lock(true); @@ -5697,6 +5698,21 @@ int esp_wifi_sta_connect(void) { g_sta_reconnect = false; wlinfo("INFO: Failed to connect to AP\n"); + ret = esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg); + if (ret) + { + wlerr("ERROR: Failed to get Wi-Fi config data ret=%d\n", ret); + return wifi_errno_trans(ret); + } + + memset(&wifi_cfg.sta, 0x0, sizeof(wifi_sta_config_t)); + ret = esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg); + if (ret) + { + wlerr("ERROR: Failed to set Wi-Fi config data ret=%d\n", ret); + return wifi_errno_trans(ret); + } + return -1; } @@ -5727,6 +5743,7 @@ errout_wifi_connect: int esp_wifi_sta_disconnect(void) { int ret; + wifi_config_t wifi_cfg; esp_wifi_lock(true); @@ -5743,6 +5760,21 @@ int esp_wifi_sta_disconnect(void) wlinfo("INFO: Wi-Fi disconnect complete, success\n"); } + ret = esp_wifi_get_config(WIFI_IF_STA, &wifi_cfg); + if (ret) + { + wlerr("ERROR: Failed to get Wi-Fi config data ret=%d\n", ret); + return wifi_errno_trans(ret); + } + + memset(&wifi_cfg.sta, 0x0, sizeof(wifi_sta_config_t)); + ret = esp_wifi_set_config(WIFI_IF_STA, &wifi_cfg); + if (ret) + { + wlerr("ERROR: Failed to set Wi-Fi config data ret=%d\n", ret); + return wifi_errno_trans(ret); + } + esp_wifi_lock(false); return ret; }