fix(wifi): Add some wifi bugfixes and features

1. Fix issue of increased stack usage when failure_retry_cnt is set
   and wifi driver internally retries connection attempts

2. Add WIFI_EVENT_AP_WRONG_PASSWORD in SoftAP.
   This event is triggered when external station tries connecting to softAP
   with wrong password.

   Current supported softAP AUTH modes: WPA-PSK, WPA2-PSK and WPA3-PSK (SAE-auth)
This commit is contained in:
Sarvesh Bodakhe
2025-02-11 10:14:28 +05:30
parent 344d3c220a
commit dac80a87a4
4 changed files with 16 additions and 1 deletions

View File

@ -910,6 +910,8 @@ typedef enum {
WIFI_EVENT_STA_NEIGHBOR_REP, /**< Received Neighbor Report response */
WIFI_EVENT_AP_WRONG_PASSWORD, /**< a station tried to connect with wrong password */
WIFI_EVENT_MAX, /**< Invalid Wi-Fi event ID */
} wifi_event_t;
@ -1211,6 +1213,11 @@ typedef enum {
WIFI_BAND_2G_5G = 3, /* Band is 2,4G + 5G */
} wifi_band_t;
/** Argument structure for WIFI_EVENT_AP_WRONG_PASSWORD event */
typedef struct {
uint8_t mac[6]; /**< MAC address of the station trying to connect to Soft-AP */
} wifi_event_ap_wrong_password_t;
/**
* @brief Argument structure for wifi_tx_rate_config
*/

View File

@ -625,6 +625,10 @@ int handle_auth_sae(struct hostapd_data *hapd, struct sta_info *sta,
if (sae_check_confirm(sta->sae, buf, len) < 0) {
resp = WLAN_STATUS_CHALLENGE_FAIL;
wifi_event_ap_wrong_password_t evt = {0};
os_memcpy(evt.mac, bssid, ETH_ALEN);
esp_event_post(WIFI_EVENT, WIFI_EVENT_AP_WRONG_PASSWORD, &evt,
sizeof(evt), 0);
goto reply;
}
sta->sae->rc = peer_send_confirm;

View File

@ -1668,6 +1668,10 @@ SM_STATE(WPA_PTK, PTKCALCNEGOTIATING)
if (!ok) {
wpa_printf(MSG_INFO, "invalid MIC in msg 2/4 of 4-Way Handshake");
wifi_event_ap_wrong_password_t evt = {0};
os_memcpy(evt.mac, sm->addr, ETH_ALEN);
esp_event_post(WIFI_EVENT, WIFI_EVENT_AP_WRONG_PASSWORD, &evt,
sizeof(evt), 0);
return;
}