mirror of
https://github.com/espressif/esp-idf.git
synced 2025-10-04 02:50:58 +02:00
Merge branch 'fix/backport_some_wifi_fixes_v5.5' into 'release/v5.5'
fix(wifi): backport some wifi fixes to v5.5 See merge request espressif/esp-idf!40815
This commit is contained in:
@@ -53,7 +53,7 @@ lmacInit = 0x40001dc8;
|
|||||||
hal_init = 0x40001dd0;
|
hal_init = 0x40001dd0;
|
||||||
mac_txrx_init = 0x40001de0;
|
mac_txrx_init = 0x40001de0;
|
||||||
lmac_stop_hw_txq = 0x40001df8;
|
lmac_stop_hw_txq = 0x40001df8;
|
||||||
ppTxFragmentProc = 0x40001e08;
|
/*ppTxFragmentProc = 0x40001e08;*/
|
||||||
esf_buf_setup = 0x40001e0c;
|
esf_buf_setup = 0x40001e0c;
|
||||||
hal_crypto_set_key_entry = 0x40001e18;
|
hal_crypto_set_key_entry = 0x40001e18;
|
||||||
/*pm_start = 0x40001e34;*/
|
/*pm_start = 0x40001e34;*/
|
||||||
@@ -108,6 +108,7 @@ ieee80211_output_do = 0x4000210c;
|
|||||||
ieee80211_send_nulldata = 0x40002110;
|
ieee80211_send_nulldata = 0x40002110;
|
||||||
//ieee80211_setup_robust_mgmtframe = 0x40002114;
|
//ieee80211_setup_robust_mgmtframe = 0x40002114;
|
||||||
//ieee80211_mgmt_output = 0x40002118;
|
//ieee80211_mgmt_output = 0x40002118;
|
||||||
|
ieee80211_encap_null_data = 0x4000211c;
|
||||||
//ieee80211_send_deauth_no_bss = 0x40002120;
|
//ieee80211_send_deauth_no_bss = 0x40002120;
|
||||||
//ieee80211_tx_mgt_cb = 0x4000212c;
|
//ieee80211_tx_mgt_cb = 0x4000212c;
|
||||||
//sta_rx_csa = 0x40002134;
|
//sta_rx_csa = 0x40002134;
|
||||||
|
@@ -940,7 +940,7 @@ ieee80211_alloc_tx_buf = 0x40002108;
|
|||||||
/* ieee80211_output_do = 0x4000210c; */
|
/* ieee80211_output_do = 0x4000210c; */
|
||||||
/* ieee80211_send_nulldata = 0x40002110; */
|
/* ieee80211_send_nulldata = 0x40002110; */
|
||||||
/* ieee80211_setup_robust_mgmtframe = 0x40002114; */
|
/* ieee80211_setup_robust_mgmtframe = 0x40002114; */
|
||||||
ieee80211_encap_null_data = 0x4000211c;
|
//ieee80211_encap_null_data = 0x4000211c;
|
||||||
/* ieee80211_send_deauth_no_bss = 0x40002120; */
|
/* ieee80211_send_deauth_no_bss = 0x40002120; */
|
||||||
ieee80211_alloc_deauth = 0x40002124;
|
ieee80211_alloc_deauth = 0x40002124;
|
||||||
ieee80211_send_proberesp = 0x40002128;
|
ieee80211_send_proberesp = 0x40002128;
|
||||||
|
@@ -67,7 +67,7 @@ wifi_rf_phy_enable = 0x40000bcc;
|
|||||||
wifi_is_started = 0x40000bd0;
|
wifi_is_started = 0x40000bd0;
|
||||||
/*sta_input = 0x40000bd4;*/
|
/*sta_input = 0x40000bd4;*/
|
||||||
sta_rx_eapol = 0x40000bd8;
|
sta_rx_eapol = 0x40000bd8;
|
||||||
sta_reset_beacon_timeout = 0x40000bdc;
|
//sta_reset_beacon_timeout = 0x40000bdc;
|
||||||
sta_get_beacon_timeout = 0x40000be0;
|
sta_get_beacon_timeout = 0x40000be0;
|
||||||
ampdu_process_multicast_address_qos_frame = 0x40000be4;
|
ampdu_process_multicast_address_qos_frame = 0x40000be4;
|
||||||
/* Data (.data, .bss, .rodata) */
|
/* Data (.data, .bss, .rodata) */
|
||||||
|
@@ -176,7 +176,7 @@ ppEnqueueRxq = 0x40000e58;
|
|||||||
ppEnqueueTxDone = 0x40000e5c;
|
ppEnqueueTxDone = 0x40000e5c;
|
||||||
ppGetTxframe = 0x40000e60;
|
ppGetTxframe = 0x40000e60;
|
||||||
/*ppMapTxQueue = 0x40000e64;*/
|
/*ppMapTxQueue = 0x40000e64;*/
|
||||||
ppProcTxSecFrame = 0x40000e68;
|
//ppProcTxSecFrame = 0x40000e68;
|
||||||
ppProcessRxPktHdr = 0x40000e6c;
|
ppProcessRxPktHdr = 0x40000e6c;
|
||||||
/*ppProcessTxQ = 0x40000e70;*/
|
/*ppProcessTxQ = 0x40000e70;*/
|
||||||
ppRecordBarRRC = 0x40000e74;
|
ppRecordBarRRC = 0x40000e74;
|
||||||
|
@@ -63,7 +63,7 @@ wifi_rf_phy_enable = 0x40000b34;
|
|||||||
wifi_is_started = 0x40000b38;
|
wifi_is_started = 0x40000b38;
|
||||||
/*sta_input = 0x40000b3c;*/
|
/*sta_input = 0x40000b3c;*/
|
||||||
sta_rx_eapol = 0x40000b40;
|
sta_rx_eapol = 0x40000b40;
|
||||||
sta_reset_beacon_timeout = 0x40000b44;
|
//sta_reset_beacon_timeout = 0x40000b44;
|
||||||
sta_get_beacon_timeout = 0x40000b48;
|
sta_get_beacon_timeout = 0x40000b48;
|
||||||
ampdu_process_multicast_address_qos_frame = 0x40000b4c;
|
ampdu_process_multicast_address_qos_frame = 0x40000b4c;
|
||||||
/* Data (.data, .bss, .rodata) */
|
/* Data (.data, .bss, .rodata) */
|
||||||
|
@@ -176,7 +176,7 @@ ppEnqueueRxq = 0x40000dd0;
|
|||||||
ppEnqueueTxDone = 0x40000dd4;
|
ppEnqueueTxDone = 0x40000dd4;
|
||||||
ppGetTxframe = 0x40000dd8;
|
ppGetTxframe = 0x40000dd8;
|
||||||
/*ppMapTxQueue = 0x40000ddc;*/
|
/*ppMapTxQueue = 0x40000ddc;*/
|
||||||
ppProcTxSecFrame = 0x40000de0;
|
//ppProcTxSecFrame = 0x40000de0;
|
||||||
ppProcessRxPktHdr = 0x40000de4;
|
ppProcessRxPktHdr = 0x40000de4;
|
||||||
/*ppProcessTxQ = 0x40000de8;*/
|
/*ppProcessTxQ = 0x40000de8;*/
|
||||||
ppRecordBarRRC = 0x40000dec;
|
ppRecordBarRRC = 0x40000dec;
|
||||||
|
@@ -808,6 +808,11 @@ esp_err_t esp_wifi_beacon_offset_configure(wifi_beacon_offset_config_t *config);
|
|||||||
*/
|
*/
|
||||||
void pm_beacon_offset_funcs_empty_init(void);
|
void pm_beacon_offset_funcs_empty_init(void);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief This API is not context safe and enable easy fragment just for internal test only.
|
||||||
|
*/
|
||||||
|
void esp_wifi_enable_easy_fragment(bool enable);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Submodule components/esp_wifi/lib updated: 49d2500723...2457744d76
@@ -1257,7 +1257,7 @@ config SOC_WIFI_HW_TSF
|
|||||||
|
|
||||||
config SOC_WIFI_FTM_SUPPORT
|
config SOC_WIFI_FTM_SUPPORT
|
||||||
bool
|
bool
|
||||||
default n
|
default y
|
||||||
|
|
||||||
config SOC_WIFI_GCMP_SUPPORT
|
config SOC_WIFI_GCMP_SUPPORT
|
||||||
bool
|
bool
|
||||||
|
@@ -512,7 +512,7 @@
|
|||||||
|
|
||||||
/*------------------------------------ WI-FI CAPS ------------------------------------*/
|
/*------------------------------------ WI-FI CAPS ------------------------------------*/
|
||||||
#define SOC_WIFI_HW_TSF (1) /*!< Support hardware TSF */
|
#define SOC_WIFI_HW_TSF (1) /*!< Support hardware TSF */
|
||||||
#define SOC_WIFI_FTM_SUPPORT (0) /*!< Support FTM */
|
#define SOC_WIFI_FTM_SUPPORT (1) /*!< Support FTM */
|
||||||
#define SOC_WIFI_GCMP_SUPPORT (1) /*!< Support GCMP(GCMP128 and GCMP256) */
|
#define SOC_WIFI_GCMP_SUPPORT (1) /*!< Support GCMP(GCMP128 and GCMP256) */
|
||||||
#define SOC_WIFI_WAPI_SUPPORT (1) /*!< Support WAPI */
|
#define SOC_WIFI_WAPI_SUPPORT (1) /*!< Support WAPI */
|
||||||
#define SOC_WIFI_CSI_SUPPORT (1) /*!< Support CSI */
|
#define SOC_WIFI_CSI_SUPPORT (1) /*!< Support CSI */
|
||||||
|
@@ -19,7 +19,7 @@
|
|||||||
#include "ap/ieee802_1x.h"
|
#include "ap/ieee802_1x.h"
|
||||||
|
|
||||||
static const int pmksa_cache_max_entries = 10;
|
static const int pmksa_cache_max_entries = 10;
|
||||||
static const int dot11RSNAConfigPMKLifetime = 8640000;
|
static const int dot11RSNAConfigPMKLifetime = INT32_MAX;
|
||||||
|
|
||||||
|
|
||||||
struct rsn_pmksa_cache {
|
struct rsn_pmksa_cache {
|
||||||
|
@@ -18,7 +18,7 @@
|
|||||||
#ifdef IEEE8021X_EAPOL
|
#ifdef IEEE8021X_EAPOL
|
||||||
|
|
||||||
static const int pmksa_cache_max_entries = 10;
|
static const int pmksa_cache_max_entries = 10;
|
||||||
static const int dot11RSNAConfigPMKLifetime = 8640000; // 100 days = 3600 x 24 x 100 Seconds
|
static const int dot11RSNAConfigPMKLifetime = INT32_MAX;
|
||||||
static const int dot11RSNAConfigPMKReauthThreshold = 70;
|
static const int dot11RSNAConfigPMKReauthThreshold = 70;
|
||||||
|
|
||||||
struct rsn_pmksa_cache {
|
struct rsn_pmksa_cache {
|
||||||
@@ -133,8 +133,7 @@ pmksa_cache_add(struct rsn_pmksa_cache *pmksa, const u8 *pmk, size_t pmk_len,
|
|||||||
|
|
||||||
os_get_reltime(&now);
|
os_get_reltime(&now);
|
||||||
entry->expiration = now.sec + dot11RSNAConfigPMKLifetime;
|
entry->expiration = now.sec + dot11RSNAConfigPMKLifetime;
|
||||||
entry->reauth_time = now.sec + dot11RSNAConfigPMKLifetime *
|
entry->reauth_time = now.sec + dot11RSNAConfigPMKLifetime / 100 * dot11RSNAConfigPMKReauthThreshold;
|
||||||
dot11RSNAConfigPMKReauthThreshold / 100;
|
|
||||||
entry->akmp = akmp;
|
entry->akmp = akmp;
|
||||||
os_memcpy(entry->aa, aa, ETH_ALEN);
|
os_memcpy(entry->aa, aa, ETH_ALEN);
|
||||||
entry->network_ctx = network_ctx;
|
entry->network_ctx = network_ctx;
|
||||||
|
@@ -376,8 +376,14 @@ static void wpa_sm_pmksa_free_cb(struct rsn_pmksa_cache_entry *entry,
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (deauth) {
|
if (deauth) {
|
||||||
|
/* For upstream supplicant, reconnection is handled internally, whereas in ESP-IDF, the user needs to initiate a new connection.
|
||||||
|
To mitigate this, simply flush the PMK without disconnecting. This will prevent the device from disconnecting,
|
||||||
|
while allowing it to derive a new PMK during the next connection attempt. */
|
||||||
|
|
||||||
|
#ifndef ESP_SUPPLICANT
|
||||||
os_memset(sm->pmk, 0, sizeof(sm->pmk));
|
os_memset(sm->pmk, 0, sizeof(sm->pmk));
|
||||||
wpa_sm_deauthenticate(sm, WLAN_REASON_UNSPECIFIED);
|
wpa_sm_deauthenticate(sm, WLAN_REASON_UNSPECIFIED);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-S2 | ESP32-S3 |
|
| Supported Targets | ESP32-C2 | ESP32-C3 | ESP32-C5 | ESP32-C6 | ESP32-C61 | ESP32-S2 | ESP32-S3 |
|
||||||
| ----------------- | -------- | -------- | -------- | -------- | -------- | -------- |
|
| ----------------- | -------- | -------- | -------- | -------- | --------- | -------- | -------- |
|
||||||
|
|
||||||
# FTM Example
|
# FTM Example
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user