esp_wifi:Add wifi station config for enabling transition_disbale feature

This commit is contained in:
Shreyas Sheth 2022-11-09 13:30:32 +05:30 committed by jack
parent 3823a991db
commit 2bbd3ac583
5 changed files with 20 additions and 3 deletions

View File

@ -277,7 +277,8 @@ typedef struct {
uint32_t rm_enabled:1; /**< Whether Radio Measurements are enabled for the connection */
uint32_t btm_enabled:1; /**< Whether BSS Transition Management is enabled for the connection */
uint32_t mbo_enabled:1; /**< Whether MBO is enabled for the connection */
uint32_t reserved:29; /**< Reserved for future feature set */
uint32_t transition_disable:1; /**< Whether to enable transition disable feature */
uint32_t reserved:28; /**< Reserved for future feature set */
wifi_sae_pwe_method_t sae_pwe_h2e; /**< Whether SAE hash to element is enabled */
uint8_t failure_retry_cnt; /**< Number of connection retries station will do before moving to next AP. scan_method should be set as WIFI_ALL_CHANNEL_SCAN to use this config. Note: Enabling this may cause connection time to increase incase best AP doesn't behave properly. */
} wifi_sta_config_t;

View File

@ -61,6 +61,15 @@ void wpa_sm_free_eapol(u8 *buffer)
os_free(buffer);
}
void wpa_supplicant_transition_disable(void *sm, u8 bitmap)
{
wpa_printf(MSG_INFO, "TRANSITION_DISABLE %02x", bitmap);
if (bitmap & TRANSITION_DISABLE_WPA3_PERSONAL) {
esp_wifi_sta_disable_wpa2_authmode_internal();
}
}
void wpa_sm_deauthenticate(struct wpa_sm *sm, u8 reason_code)
{

View File

@ -30,4 +30,6 @@ int wpa_sm_get_beacon_ie(struct wpa_sm *sm);
void wpa_sm_free_eapol(u8 *buffer);
void wpa_supplicant_transition_disable(void *sm, u8 bitmap);
#endif /* WPAS_GLUE_H */

View File

@ -311,6 +311,10 @@ struct rsn_rdie {
#endif /* CONFIG_IEEE80211R */
/* WFA Transition Disable KDE (using OUI_WFA) */
/* Transition Disable Bitmap bits */
#define TRANSITION_DISABLE_WPA3_PERSONAL BIT(0)
struct wpa_ie_data {
int proto;
int pairwise_cipher;

View File

@ -1264,8 +1264,9 @@ static void wpa_supplicant_process_3_of_4(struct wpa_sm *sm,
goto failed;
}
if (ie.transition_disable)
esp_wifi_sta_disable_wpa2_authmode_internal();
if (ie.transition_disable) {
wpa_supplicant_transition_disable(sm, ie.transition_disable[0]);
}
if (sm->key_install && sm->key_info & WPA_KEY_INFO_INSTALL && sm->use_ext_key_id) {
wpa_supplicant_install_ptk(sm, KEY_FLAG_RX);