File tree Expand file tree Collapse file tree 2 files changed +8
-2
lines changed
components/wpa_supplicant/esp_supplicant/src Expand file tree Collapse file tree 2 files changed +8
-2
lines changed Original file line number Diff line number Diff line change 1
1
/*
2
- * SPDX-FileCopyrightText: 2019-2024 Espressif Systems (Shanghai) CO LTD
2
+ * SPDX-FileCopyrightText: 2019-2025 Espressif Systems (Shanghai) CO LTD
3
3
*
4
4
* SPDX-License-Identifier: Apache-2.0
5
5
*/
@@ -877,9 +877,11 @@ int wps_finish(void)
877
877
return ret ;
878
878
}
879
879
880
+ /* This will get executed in the wifi task's context */
880
881
static void wps_sm_notify_deauth (void )
881
882
{
882
- if (gWpsSm && gWpsSm -> wps -> state != WPS_FINISHED ) {
883
+ if (gWpsSm && gWpsSm -> wps -> state != WPS_FINISHED &&
884
+ !gWpsSm -> intermediate_disconnect ) {
883
885
wps_stop_process (WPS_FAIL_REASON_RECV_DEAUTH );
884
886
}
885
887
}
@@ -1593,6 +1595,7 @@ wifi_station_wps_deinit(void)
1593
1595
sm -> wps = NULL ;
1594
1596
}
1595
1597
if (s_wps_sm_cb ) {
1598
+ s_wps_sm_cb -> wps_sm_notify_deauth = NULL ;
1596
1599
os_free (s_wps_sm_cb );
1597
1600
s_wps_sm_cb = NULL ;
1598
1601
}
@@ -1643,7 +1646,9 @@ wifi_wps_scan_done(void *arg, ETS_STATUS status)
1643
1646
sm -> discover_ssid_cnt = 0 ;
1644
1647
1645
1648
if (wps_get_status () == WPS_STATUS_PENDING ) {
1649
+ sm -> intermediate_disconnect = true;
1646
1650
esp_wifi_disconnect ();
1651
+ sm -> intermediate_disconnect = false;
1647
1652
1648
1653
os_memcpy (wifi_config .sta .bssid , sm -> bssid , ETH_ALEN );
1649
1654
os_memcpy (wifi_config .sta .ssid , (char * )sm -> creds [0 ].ssid , sm -> creds [0 ].ssid_len );
Original file line number Diff line number Diff line change @@ -84,6 +84,7 @@ struct wps_sm {
84
84
bool wps_pbc_overlap ;
85
85
struct discard_ap_list_t dis_ap_list [WPS_MAX_DIS_AP_NUM ];
86
86
u8 discard_ap_cnt ;
87
+ bool intermediate_disconnect ;
87
88
};
88
89
89
90
#define API_MUTEX_TAKE () do {\
You can’t perform that action at this time.
0 commit comments