diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index 8677918390..cda9c5ecae 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -7,630 +7,637 @@ menu "Wi-Fi" bool default y if SOC_WIFI_SUPPORTED - config ESP_WIFI_STATIC_RX_BUFFER_NUM - int "Max number of WiFi static RX buffers" - range 2 25 if !SOC_WIFI_HE_SUPPORT - range 2 128 if SOC_WIFI_HE_SUPPORT - default 10 if !SPIRAM_TRY_ALLOCATE_WIFI_LWIP - default 16 if SPIRAM_TRY_ALLOCATE_WIFI_LWIP - help - Set the number of WiFi static RX buffers. Each buffer takes approximately 1.6KB of RAM. - The static rx buffers are allocated when esp_wifi_init is called, they are not freed - until esp_wifi_deinit is called. - - WiFi hardware use these buffers to receive all 802.11 frames. - A higher number may allow higher throughput but increases memory use. If ESP_WIFI_AMPDU_RX_ENABLED - is enabled, this value is recommended to set equal or bigger than ESP_WIFI_RX_BA_WIN in order to - achieve better throughput and compatibility with both stations and APs. - - config ESP_WIFI_DYNAMIC_RX_BUFFER_NUM - int "Max number of WiFi dynamic RX buffers" - range 0 128 if !LWIP_WND_SCALE - range 0 1024 if LWIP_WND_SCALE - default 32 - help - Set the number of WiFi dynamic RX buffers, 0 means unlimited RX buffers will be allocated - (provided sufficient free RAM). The size of each dynamic RX buffer depends on the size of - the received data frame. - - For each received data frame, the WiFi driver makes a copy to an RX buffer and then delivers - it to the high layer TCP/IP stack. The dynamic RX buffer is freed after the higher layer has - successfully received the data frame. - - For some applications, WiFi data frames may be received faster than the application can - process them. In these cases we may run out of memory if RX buffer number is unlimited (0). - - If a dynamic RX buffer limit is set, it should be at least the number of static RX buffers. - - choice ESP_WIFI_TX_BUFFER - prompt "Type of WiFi TX buffers" - default ESP_WIFI_DYNAMIC_TX_BUFFER - help - Select type of WiFi TX buffers: - - If "Static" is selected, WiFi TX buffers are allocated when WiFi is initialized and released - when WiFi is de-initialized. The size of each static TX buffer is fixed to about 1.6KB. - - If "Dynamic" is selected, each WiFi TX buffer is allocated as needed when a data frame is - delivered to the Wifi driver from the TCP/IP stack. The buffer is freed after the data frame - has been sent by the WiFi driver. The size of each dynamic TX buffer depends on the length - of each data frame sent by the TCP/IP layer. - - If PSRAM is enabled, "Static" should be selected to guarantee enough WiFi TX buffers. - If PSRAM is disabled, "Dynamic" should be selected to improve the utilization of RAM. - - config ESP_WIFI_STATIC_TX_BUFFER - bool "Static" - config ESP_WIFI_DYNAMIC_TX_BUFFER - bool "Dynamic" - depends on !SPIRAM_USE_MALLOC - endchoice - - config ESP_WIFI_TX_BUFFER_TYPE - int - default 0 if ESP_WIFI_STATIC_TX_BUFFER - default 1 if ESP_WIFI_DYNAMIC_TX_BUFFER - - config ESP_WIFI_STATIC_TX_BUFFER_NUM - int "Max number of WiFi static TX buffers" - depends on ESP_WIFI_STATIC_TX_BUFFER - range 1 64 - default 16 - help - Set the number of WiFi static TX buffers. Each buffer takes approximately 1.6KB of RAM. - The static RX buffers are allocated when esp_wifi_init() is called, they are not released - until esp_wifi_deinit() is called. - - For each transmitted data frame from the higher layer TCP/IP stack, the WiFi driver makes a - copy of it in a TX buffer. For some applications especially UDP applications, the upper - layer can deliver frames faster than WiFi layer can transmit. In these cases, we may run out - of TX buffers. - - config ESP_WIFI_CACHE_TX_BUFFER_NUM - int "Max number of WiFi cache TX buffers" - depends on SPIRAM - range 16 128 - default 32 - help - Set the number of WiFi cache TX buffer number. - - For each TX packet from uplayer, such as LWIP etc, WiFi driver needs to allocate a static TX - buffer and makes a copy of uplayer packet. If WiFi driver fails to allocate the static TX buffer, - it caches the uplayer packets to a dedicated buffer queue, this option is used to configure the - size of the cached TX queue. - - config ESP_WIFI_DYNAMIC_TX_BUFFER_NUM - int "Max number of WiFi dynamic TX buffers" - depends on ESP_WIFI_DYNAMIC_TX_BUFFER - range 1 128 - default 32 - help - Set the number of WiFi dynamic TX buffers. The size of each dynamic TX buffer is not fixed, - it depends on the size of each transmitted data frame. - - For each transmitted frame from the higher layer TCP/IP stack, the WiFi driver makes a copy - of it in a TX buffer. For some applications, especially UDP applications, the upper layer - can deliver frames faster than WiFi layer can transmit. In these cases, we may run out of TX - buffers. - - choice ESP_WIFI_MGMT_RX_BUFFER - prompt "Type of WiFi RX MGMT buffers" - default ESP_WIFI_STATIC_RX_MGMT_BUFFER - help - Select type of WiFi RX MGMT buffers: - - If "Static" is selected, WiFi RX MGMT buffers are allocated when WiFi is initialized and released - when WiFi is de-initialized. The size of each static RX MGMT buffer is fixed to about 500 Bytes. - - If "Dynamic" is selected, each WiFi RX MGMT buffer is allocated as needed when a MGMT data frame is - received. The MGMT buffer is freed after the MGMT data frame has been processed by the WiFi driver. - - - config ESP_WIFI_STATIC_RX_MGMT_BUFFER - bool "Static" - config ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER - bool "Dynamic" - endchoice - - config ESP_WIFI_DYNAMIC_RX_MGMT_BUF - int - default 0 if ESP_WIFI_STATIC_RX_MGMT_BUFFER - default 1 if ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER - - config ESP_WIFI_RX_MGMT_BUF_NUM_DEF - int "Max number of WiFi RX MGMT buffers" - range 1 10 - default 5 - help - Set the number of WiFi RX_MGMT buffers. - - For Management buffers, the number of dynamic and static management buffers is the same. - In order to prevent memory fragmentation, the management buffer type should be set to static first. - - config ESP_WIFI_CSI_ENABLED - bool "WiFi CSI(Channel State Information)" - depends on SOC_WIFI_CSI_SUPPORT - default n - help - Select this option to enable CSI(Channel State Information) feature. CSI takes about - CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM KB of RAM. If CSI is not used, it is better to disable - this feature in order to save memory. - - config ESP_WIFI_AMPDU_TX_ENABLED - bool "WiFi AMPDU TX" - default y - help - Select this option to enable AMPDU TX feature - - - config ESP_WIFI_TX_BA_WIN - int "WiFi AMPDU TX BA window size" - depends on ESP_WIFI_AMPDU_TX_ENABLED - range 2 32 if !SOC_WIFI_HE_SUPPORT - range 2 64 if SOC_WIFI_HE_SUPPORT - default 6 - help - Set the size of WiFi Block Ack TX window. Generally a bigger value means higher throughput but - more memory. Most of time we should NOT change the default value unless special reason, e.g. - test the maximum UDP TX throughput with iperf etc. For iperf test in shieldbox, the recommended - value is 9~12. - - config ESP_WIFI_AMPDU_RX_ENABLED - bool "WiFi AMPDU RX" - default y - help - Select this option to enable AMPDU RX feature - - config ESP_WIFI_RX_BA_WIN - int "WiFi AMPDU RX BA window size" - depends on ESP_WIFI_AMPDU_RX_ENABLED - range 2 32 if !SOC_WIFI_HE_SUPPORT - range 2 64 if SOC_WIFI_HE_SUPPORT - default 6 if !SPIRAM_TRY_ALLOCATE_WIFI_LWIP - default 16 if SPIRAM_TRY_ALLOCATE_WIFI_LWIP - help - Set the size of WiFi Block Ack RX window. Generally a bigger value means higher throughput and better - compatibility but more memory. Most of time we should NOT change the default value unless special - reason, e.g. test the maximum UDP RX throughput with iperf etc. For iperf test in shieldbox, the - recommended value is 9~12. If PSRAM is used and WiFi memory is prefered to allocat in PSRAM first, - the default and minimum value should be 16 to achieve better throughput and compatibility with both - stations and APs. - - config ESP_WIFI_AMSDU_TX_ENABLED - bool "WiFi AMSDU TX" - depends on SPIRAM - default n - help - Select this option to enable AMSDU TX feature - - config ESP_WIFI_NVS_ENABLED - bool "WiFi NVS flash" - default y - help - Select this option to enable WiFi NVS flash - - choice ESP_WIFI_TASK_CORE_ID - depends on !FREERTOS_UNICORE - prompt "WiFi Task Core ID" - default ESP_WIFI_TASK_PINNED_TO_CORE_0 - help - Pinned WiFi task to core 0 or core 1. - - config ESP_WIFI_TASK_PINNED_TO_CORE_0 - bool "Core 0" - config ESP_WIFI_TASK_PINNED_TO_CORE_1 - bool "Core 1" - endchoice - - config ESP_WIFI_SOFTAP_BEACON_MAX_LEN - int "Max length of WiFi SoftAP Beacon" - range 752 1256 - default 752 - help - ESP-MESH utilizes beacon frames to detect and resolve root node conflicts (see documentation). However the - default length of a beacon frame can simultaneously hold only five root node identifier structures, - meaning that a root node conflict of up to five nodes can be detected at one time. In the occurence of - more root nodes conflict involving more than five root nodes, the conflict resolution process will detect - five of the root nodes, resolve the conflict, and re-detect more root nodes. This process will repeat - until all root node conflicts are resolved. However this process can generally take a very long time. - - To counter this situation, the beacon frame length can be increased such that more root nodes can be - detected simultaneously. Each additional root node will require 36 bytes and should be added ontop of the - default beacon frame length of - 752 bytes. For example, if you want to detect 10 root nodes simultaneously, you need to set the beacon - frame length as - 932 (752+36*5). - - Setting a longer beacon length also assists with debugging as the conflicting root nodes can be identified - more quickly. - - config ESP_WIFI_MGMT_SBUF_NUM - int "WiFi mgmt short buffer number" - range 6 32 - default 32 - help - Set the number of WiFi management short buffer. - - config ESP_WIFI_IRAM_OPT - bool "WiFi IRAM speed optimization" - default n if (BT_ENABLED && SPIRAM && IDF_TARGET_ESP32) - default y - help - Select this option to place frequently called Wi-Fi library functions in IRAM. - When this option is disabled, more than 10Kbytes of IRAM memory will be saved - but Wi-Fi throughput will be reduced. - - config ESP_WIFI_EXTRA_IRAM_OPT - bool "WiFi EXTRA IRAM speed optimization" - default y if IDF_TARGET_ESP32C6 - default n - help - Select this option to place additional frequently called Wi-Fi library functions - in IRAM. When this option is disabled, more than 5Kbytes of IRAM memory will be saved - but Wi-Fi throughput will be reduced. - - config ESP_WIFI_RX_IRAM_OPT - bool "WiFi RX IRAM speed optimization" - default n if (BT_ENABLED && SPIRAM && IDF_TARGET_ESP32) - default y - help - Select this option to place frequently called Wi-Fi library RX functions in IRAM. - When this option is disabled, more than 17Kbytes of IRAM memory will be saved - but Wi-Fi performance will be reduced. - - config ESP_WIFI_ENABLE_WPA3_SAE - bool "Enable WPA3-Personal" - default y - select ESP_WIFI_MBEDTLS_CRYPTO - help - Select this option to allow the device to establish a WPA3-Personal connection with eligible AP's. - PMF (Protected Management Frames) is a prerequisite feature for a WPA3 connection, it needs to be - explicitly configured before attempting connection. Please refer to the Wi-Fi Driver API Guide for details. - - config ESP_WIFI_ENABLE_SAE_PK - bool "Enable SAE-PK" - default y - depends on ESP_WIFI_ENABLE_WPA3_SAE - help - Select this option to enable SAE-PK - - config ESP_WIFI_SOFTAP_SAE_SUPPORT - bool "Enable WPA3 Personal(SAE) SoftAP" - default y - depends on ESP_WIFI_ENABLE_WPA3_SAE - depends on ESP_WIFI_SOFTAP_SUPPORT - help - Select this option to enable SAE support in softAP mode. - - config ESP_WIFI_ENABLE_WPA3_OWE_STA - bool "Enable OWE STA" - default y - select ESP_WIFI_MBEDTLS_CRYPTO - help - Select this option to allow the device to establish OWE connection with eligible AP's. - PMF (Protected Management Frames) is a prerequisite feature for a WPA3 connection, it needs to be - explicitly configured before attempting connection. Please refer to the Wi-Fi Driver API Guide for details. - - config ESP_WIFI_SLP_IRAM_OPT - bool "WiFi SLP IRAM speed optimization" - select PM_SLP_DEFAULT_PARAMS_OPT - select PERIPH_CTRL_FUNC_IN_IRAM - help - Select this option to place called Wi-Fi library TBTT process and receive beacon functions in IRAM. - Some functions can be put in IRAM either by ESP_WIFI_IRAM_OPT and ESP_WIFI_RX_IRAM_OPT, or this one. - If already enabled ESP_WIFI_IRAM_OPT, the other 7.3KB IRAM memory would be taken by this option. - If already enabled ESP_WIFI_RX_IRAM_OPT, the other 1.3KB IRAM memory would be taken by this option. - If neither of them are enabled, the other 7.4KB IRAM memory would be taken by this option. - Wi-Fi power-save mode average current would be reduced if this option is enabled. - - config ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME - int "Minimum active time" - range 8 60 - default 50 - depends on ESP_WIFI_SLP_IRAM_OPT - help - The minimum timeout for waiting to receive data, unit: milliseconds. - - config ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME - int "Maximum keep alive time" - range 10 60 - default 10 - depends on ESP_WIFI_SLP_IRAM_OPT - help - The maximum time that wifi keep alive, unit: seconds. - - config ESP_WIFI_FTM_ENABLE - bool "WiFi FTM" - default n - depends on SOC_WIFI_FTM_SUPPORT - help - Enable feature Fine Timing Measurement for calculating WiFi Round-Trip-Time (RTT). - - config ESP_WIFI_FTM_INITIATOR_SUPPORT - bool "FTM Initiator support" - default y - depends on ESP_WIFI_FTM_ENABLE - - config ESP_WIFI_FTM_RESPONDER_SUPPORT - bool "FTM Responder support" - default y - depends on ESP_WIFI_FTM_ENABLE - - config ESP_WIFI_STA_DISCONNECTED_PM_ENABLE - bool "Power Management for station at disconnected" - default y - help - Select this option to enable power_management for station when disconnected. - Chip will do modem-sleep when rf module is not in use any more. - - config ESP_WIFI_GCMP_SUPPORT - bool "WiFi GCMP Support(GCMP128 and GCMP256)" - default n - depends on SOC_WIFI_GCMP_SUPPORT - help - Select this option to enable GCMP support. GCMP support is compulsory for WiFi Suite-B support. - - config ESP_WIFI_GMAC_SUPPORT - bool "WiFi GMAC Support(GMAC128 and GMAC256)" - default n - help - Select this option to enable GMAC support. GMAC support is compulsory for WiFi 192 bit certification. - - config ESP_WIFI_SOFTAP_SUPPORT - bool "WiFi SoftAP Support" - default y - help - WiFi module can be compiled without SoftAP to save code size. - - config ESP_WIFI_ENHANCED_LIGHT_SLEEP - bool "WiFi modem automatically receives the beacon" - default n - depends on ESP_PHY_MAC_BB_PD && SOC_PM_SUPPORT_BEACON_WAKEUP - help - The wifi modem automatically receives the beacon frame during light sleep. - - config ESP_WIFI_SLP_BEACON_LOST_OPT - bool "Wifi sleep optimize when beacon lost" - help - Enable wifi sleep optimization when beacon loss occurs and immediately enter - sleep mode when the WiFi module detects beacon loss. - - config ESP_WIFI_SLP_BEACON_LOST_TIMEOUT - int "Beacon loss timeout" - range 5 100 - default 10 - depends on ESP_WIFI_SLP_BEACON_LOST_OPT - help - Timeout time for close rf phy when beacon loss occurs, Unit: 1024 microsecond. - - config ESP_WIFI_SLP_BEACON_LOST_THRESHOLD - int "Maximum number of consecutive lost beacons allowed" - range 0 8 - default 3 - depends on ESP_WIFI_SLP_BEACON_LOST_OPT - help - Maximum number of consecutive lost beacons allowed, WiFi keeps Rx state when - the number of consecutive beacons lost is greater than the given threshold. - - config ESP_WIFI_SLP_PHY_ON_DELTA_EARLY_TIME - int "Delta early time for RF PHY on" - range 0 100 - default 2 - depends on ESP_WIFI_SLP_BEACON_LOST_OPT && SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW - help - Delta early time for rf phy on, When the beacon is lost, the next rf phy on will - be earlier the time specified by the configuration item, Unit: 32 microsecond. - - config ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME - int "Delta timeout time for RF PHY off" - range 0 8 - default 2 - depends on ESP_WIFI_SLP_BEACON_LOST_OPT && SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW - help - Delta timeout time for rf phy off, When the beacon is lost, the next rf phy off will - be delayed for the time specified by the configuration item. Unit: 1024 microsecond. - - config ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM - int "Maximum espnow encrypt peers number" - range 0 4 if IDF_TARGET_ESP32C2 - range 0 17 if (!IDF_TARGET_ESP32C2) - default 2 if IDF_TARGET_ESP32C2 - default 7 if (!IDF_TARGET_ESP32C2) - help - Maximum number of encrypted peers supported by espnow. - The number of hardware keys for encryption is fixed. And the espnow and SoftAP share the same - hardware keys. So this configuration will affect the maximum connection number of SoftAP. - Maximum espnow encrypted peers number + maximum number of connections of SoftAP = Max hardware keys number. - When using ESP mesh, this value should be set to a maximum of 6. - - config ESP_WIFI_NAN_ENABLE - bool "WiFi Aware" - default n - depends on SOC_WIFI_NAN_SUPPORT - help - Enable WiFi Aware (NAN) feature. - - config ESP_WIFI_ENABLE_WIFI_TX_STATS - bool "Enable Wi-Fi transmission statistics" - depends on SOC_WIFI_HE_SUPPORT - default "y" - help - Enable Wi-Fi transmission statistics. Total support 4 access category. Each access category - will use 346 bytes memory. - - config ESP_WIFI_MBEDTLS_CRYPTO - bool "Use MbedTLS crypto APIs" - default y - select MBEDTLS_AES_C - select MBEDTLS_ECP_C - select MBEDTLS_ECDH_C - select MBEDTLS_ECDSA_C - select MBEDTLS_CMAC_C - select MBEDTLS_ECP_DP_SECP256R1_ENABLED - help - Select this option to enable the use of MbedTLS crypto APIs. - The internal crypto support within the supplicant is limited - and may not suffice for all new security features, including WPA3. - - It is recommended to always keep this option enabled. Additionally, - note that MbedTLS can leverage hardware acceleration if available, - resulting in significantly faster cryptographic operations. - - if ESP_WIFI_MBEDTLS_CRYPTO - config ESP_WIFI_MBEDTLS_TLS_CLIENT - bool "Use MbedTLS TLS client for WiFi Enterprise connection" - depends on ESP_WIFI_ENTERPRISE_SUPPORT + if ESP_WIFI_ENABLED + + config ESP_WIFI_STATIC_RX_BUFFER_NUM + int "Max number of WiFi static RX buffers" + range 2 25 if !SOC_WIFI_HE_SUPPORT + range 2 128 if SOC_WIFI_HE_SUPPORT + default 10 if !SPIRAM_TRY_ALLOCATE_WIFI_LWIP + default 16 if SPIRAM_TRY_ALLOCATE_WIFI_LWIP + help + Set the number of WiFi static RX buffers. Each buffer takes approximately 1.6KB of RAM. + The static rx buffers are allocated when esp_wifi_init is called, they are not freed + until esp_wifi_deinit is called. + + WiFi hardware use these buffers to receive all 802.11 frames. + A higher number may allow higher throughput but increases memory use. If ESP_WIFI_AMPDU_RX_ENABLED + is enabled, this value is recommended to set equal or bigger than ESP_WIFI_RX_BA_WIN in order to + achieve better throughput and compatibility with both stations and APs. + + config ESP_WIFI_DYNAMIC_RX_BUFFER_NUM + int "Max number of WiFi dynamic RX buffers" + range 0 128 if !LWIP_WND_SCALE + range 0 1024 if LWIP_WND_SCALE + default 32 + help + Set the number of WiFi dynamic RX buffers, 0 means unlimited RX buffers will be allocated + (provided sufficient free RAM). The size of each dynamic RX buffer depends on the size of + the received data frame. + + For each received data frame, the WiFi driver makes a copy to an RX buffer and then delivers + it to the high layer TCP/IP stack. The dynamic RX buffer is freed after the higher layer has + successfully received the data frame. + + For some applications, WiFi data frames may be received faster than the application can + process them. In these cases we may run out of memory if RX buffer number is unlimited (0). + + If a dynamic RX buffer limit is set, it should be at least the number of static RX buffers. + + choice ESP_WIFI_TX_BUFFER + prompt "Type of WiFi TX buffers" + default ESP_WIFI_DYNAMIC_TX_BUFFER + help + Select type of WiFi TX buffers: + + If "Static" is selected, WiFi TX buffers are allocated when WiFi is initialized and released + when WiFi is de-initialized. The size of each static TX buffer is fixed to about 1.6KB. + + If "Dynamic" is selected, each WiFi TX buffer is allocated as needed when a data frame is + delivered to the Wifi driver from the TCP/IP stack. The buffer is freed after the data frame + has been sent by the WiFi driver. The size of each dynamic TX buffer depends on the length + of each data frame sent by the TCP/IP layer. + + If PSRAM is enabled, "Static" should be selected to guarantee enough WiFi TX buffers. + If PSRAM is disabled, "Dynamic" should be selected to improve the utilization of RAM. + + config ESP_WIFI_STATIC_TX_BUFFER + bool "Static" + config ESP_WIFI_DYNAMIC_TX_BUFFER + bool "Dynamic" + depends on !SPIRAM_USE_MALLOC + endchoice + + config ESP_WIFI_TX_BUFFER_TYPE + int + default 0 if ESP_WIFI_STATIC_TX_BUFFER + default 1 if ESP_WIFI_DYNAMIC_TX_BUFFER + + config ESP_WIFI_STATIC_TX_BUFFER_NUM + int "Max number of WiFi static TX buffers" + depends on ESP_WIFI_STATIC_TX_BUFFER + range 1 64 + default 16 + help + Set the number of WiFi static TX buffers. Each buffer takes approximately 1.6KB of RAM. + The static RX buffers are allocated when esp_wifi_init() is called, they are not released + until esp_wifi_deinit() is called. + + For each transmitted data frame from the higher layer TCP/IP stack, the WiFi driver makes a + copy of it in a TX buffer. For some applications especially UDP applications, the upper + layer can deliver frames faster than WiFi layer can transmit. In these cases, we may run out + of TX buffers. + + config ESP_WIFI_CACHE_TX_BUFFER_NUM + int "Max number of WiFi cache TX buffers" + depends on SPIRAM + range 16 128 + default 32 + help + Set the number of WiFi cache TX buffer number. + + For each TX packet from uplayer, such as LWIP etc, WiFi driver needs to allocate a static TX + buffer and makes a copy of uplayer packet. If WiFi driver fails to allocate the static TX buffer, + it caches the uplayer packets to a dedicated buffer queue, this option is used to configure the + size of the cached TX queue. + + config ESP_WIFI_DYNAMIC_TX_BUFFER_NUM + int "Max number of WiFi dynamic TX buffers" + depends on ESP_WIFI_DYNAMIC_TX_BUFFER + range 1 128 + default 32 + help + Set the number of WiFi dynamic TX buffers. The size of each dynamic TX buffer is not fixed, + it depends on the size of each transmitted data frame. + + For each transmitted frame from the higher layer TCP/IP stack, the WiFi driver makes a copy + of it in a TX buffer. For some applications, especially UDP applications, the upper layer + can deliver frames faster than WiFi layer can transmit. In these cases, we may run out of TX + buffers. + + choice ESP_WIFI_MGMT_RX_BUFFER + prompt "Type of WiFi RX MGMT buffers" + default ESP_WIFI_STATIC_RX_MGMT_BUFFER + help + Select type of WiFi RX MGMT buffers: + + If "Static" is selected, WiFi RX MGMT buffers are allocated when WiFi is initialized and released + when WiFi is de-initialized. The size of each static RX MGMT buffer is fixed to about 500 Bytes. + + If "Dynamic" is selected, each WiFi RX MGMT buffer is allocated as needed when a MGMT data frame is + received. The MGMT buffer is freed after the MGMT data frame has been processed by the WiFi driver. + + + config ESP_WIFI_STATIC_RX_MGMT_BUFFER + bool "Static" + config ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER + bool "Dynamic" + endchoice + + config ESP_WIFI_DYNAMIC_RX_MGMT_BUF + int + default 0 if ESP_WIFI_STATIC_RX_MGMT_BUFFER + default 1 if ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER + + config ESP_WIFI_RX_MGMT_BUF_NUM_DEF + int "Max number of WiFi RX MGMT buffers" + range 1 10 + default 5 + help + Set the number of WiFi RX_MGMT buffers. + + For Management buffers, the number of dynamic and static management buffers is the same. + In order to prevent memory fragmentation, the management buffer type should be set to static first. + + config ESP_WIFI_CSI_ENABLED + bool "WiFi CSI(Channel State Information)" + depends on SOC_WIFI_CSI_SUPPORT + default n + help + Select this option to enable CSI(Channel State Information) feature. CSI takes about + CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM KB of RAM. If CSI is not used, it is better to disable + this feature in order to save memory. + + config ESP_WIFI_AMPDU_TX_ENABLED + bool "WiFi AMPDU TX" default y - select MBEDTLS_TLS_ENABLED help - Select this option to use MbedTLS TLS client for WPA2 enterprise connection. - Please note that from MbedTLS-3.0 onwards, MbedTLS does not support SSL-3.0 - TLS-v1.0, TLS-v1.1 versions. Incase your server is using one of these version, - it is advisable to update your server. - Please disable this option for compatibilty with older TLS versions. - endif + Select this option to enable AMPDU TX feature - config ESP_WIFI_WAPI_PSK - bool "Enable WAPI PSK support" - depends on SOC_WIFI_WAPI_SUPPORT - default n - help - Select this option to enable WAPI-PSK - which is a Chinese National Standard Encryption for Wireless LANs (GB 15629.11-2003). - config ESP_WIFI_SUITE_B_192 - bool "Enable NSA suite B support with 192 bit key" - default n - depends on SOC_WIFI_GCMP_SUPPORT - select ESP_WIFI_GCMP_SUPPORT - select ESP_WIFI_GMAC_SUPPORT - help - Select this option to enable 192 bit NSA suite-B. - This is necessary to support WPA3 192 bit security. + config ESP_WIFI_TX_BA_WIN + int "WiFi AMPDU TX BA window size" + depends on ESP_WIFI_AMPDU_TX_ENABLED + range 2 32 if !SOC_WIFI_HE_SUPPORT + range 2 64 if SOC_WIFI_HE_SUPPORT + default 6 + help + Set the size of WiFi Block Ack TX window. Generally a bigger value means higher throughput but + more memory. Most of time we should NOT change the default value unless special reason, e.g. + test the maximum UDP TX throughput with iperf etc. For iperf test in shieldbox, the recommended + value is 9~12. - config ESP_WIFI_11KV_SUPPORT - bool "Enable 802.11k, 802.11v APIs Support" - default n - help - Select this option to enable 802.11k 802.11v APIs(RRM and BTM support). - Only APIs which are helpful for network assisted roaming - are supported for now. - Enable this option with BTM and RRM enabled in sta config - to make device ready for network assisted roaming. - BTM: BSS transition management enables an AP to request a station to transition - to a specific AP, or to indicate to a station a set of preferred APs. - RRM: Radio measurements enable STAs to understand the radio environment, - it enables STAs to observe and gather data on radio link performance - and on the radio environment. Current implementation adds beacon report, - link measurement, neighbor report. + config ESP_WIFI_AMPDU_RX_ENABLED + bool "WiFi AMPDU RX" + default y + help + Select this option to enable AMPDU RX feature - config ESP_WIFI_SCAN_CACHE - bool "Keep scan results in cache" - depends on ESP_WIFI_11KV_SUPPORT - default n - help - Keep scan results in cache, if not enabled, those - will be flushed immediately. + config ESP_WIFI_RX_BA_WIN + int "WiFi AMPDU RX BA window size" + depends on ESP_WIFI_AMPDU_RX_ENABLED + range 2 32 if !SOC_WIFI_HE_SUPPORT + range 2 64 if SOC_WIFI_HE_SUPPORT + default 6 if !SPIRAM_TRY_ALLOCATE_WIFI_LWIP + default 16 if SPIRAM_TRY_ALLOCATE_WIFI_LWIP + help + Set the size of WiFi Block Ack RX window. Generally a bigger value means higher throughput and better + compatibility but more memory. Most of time we should NOT change the default value unless special + reason, e.g. test the maximum UDP RX throughput with iperf etc. For iperf test in shieldbox, the + recommended value is 9~12. If PSRAM is used and WiFi memory is prefered to allocat in PSRAM first, + the default and minimum value should be 16 to achieve better throughput and compatibility with both + stations and APs. - config ESP_WIFI_MBO_SUPPORT - bool "Enable Multi Band Operation Certification Support" - default n - select ESP_WIFI_11KV_SUPPORT - select ESP_WIFI_SCAN_CACHE - help - Select this option to enable WiFi Multiband operation certification support. - - config ESP_WIFI_DPP_SUPPORT - bool "Enable DPP support" - default n - select ESP_WIFI_MBEDTLS_CRYPTO - help - Select this option to enable WiFi Easy Connect Support. - - config ESP_WIFI_11R_SUPPORT - bool "Enable 802.11R (Fast Transition) Support" - default n - help - Select this option to enable WiFi Fast Transition Support. - - config ESP_WIFI_WPS_SOFTAP_REGISTRAR - bool "Add WPS Registrar support in SoftAP mode" - depends on ESP_WIFI_SOFTAP_SUPPORT - default n - help - Select this option to enable WPS registrar support in softAP mode. - - config ESP_WIFI_ENABLE_WIFI_RX_STATS - bool "Enable Wi-Fi reception statistics" - depends on SOC_WIFI_HE_SUPPORT - default "y" - help - Enable Wi-Fi reception statistics. Total support 2 access category. Each access category - will use 190 bytes memory. - - config ESP_WIFI_ENABLE_WIFI_RX_MU_STATS - bool "Enable Wi-Fi DL MU-MIMO and DL OFDMA reception statistics" - depends on ESP_WIFI_ENABLE_WIFI_RX_STATS - default "y" - help - Enable Wi-Fi DL MU-MIMO and DL OFDMA reception statistics. Will use 10932 bytes memory. - - menu "WPS Configuration Options" - config ESP_WIFI_WPS_STRICT - bool "Strictly validate all WPS attributes" + config ESP_WIFI_AMSDU_TX_ENABLED + bool "WiFi AMSDU TX" + depends on SPIRAM default n help - Select this option to enable validate each WPS attribute - rigorously. Disabling this add the workaorunds with various APs. - Enabling this may cause inter operability issues with some APs. + Select this option to enable AMSDU TX feature - config ESP_WIFI_WPS_PASSPHRASE - bool "Get WPA2 passphrase in WPS config" + config ESP_WIFI_NVS_ENABLED + bool "WiFi NVS flash" + default y + help + Select this option to enable WiFi NVS flash + + choice ESP_WIFI_TASK_CORE_ID + depends on !FREERTOS_UNICORE + prompt "WiFi Task Core ID" + default ESP_WIFI_TASK_PINNED_TO_CORE_0 + help + Pinned WiFi task to core 0 or core 1. + + config ESP_WIFI_TASK_PINNED_TO_CORE_0 + bool "Core 0" + config ESP_WIFI_TASK_PINNED_TO_CORE_1 + bool "Core 1" + endchoice + + config ESP_WIFI_SOFTAP_BEACON_MAX_LEN + int "Max length of WiFi SoftAP Beacon" + range 752 1256 + default 752 + help + ESP-MESH utilizes beacon frames to detect and resolve root node conflicts (see documentation). However + the default length of a beacon frame can simultaneously hold only five root node identifier structures, + meaning that a root node conflict of up to five nodes can be detected at one time. In the occurence of + more root nodes conflict involving more than five root nodes, the conflict resolution process will + detect five of the root nodes, resolve the conflict, and re-detect more root nodes. This process will + repeat until all root node conflicts are resolved. However this process can generally take a very long + time. + + To counter this situation, the beacon frame length can be increased such that more root nodes can be + detected simultaneously. Each additional root node will require 36 bytes and should be added ontop of + the default beacon frame length of + 752 bytes. For example, if you want to detect 10 root nodes simultaneously, you need to set the beacon + frame length as + 932 (752+36*5). + + Setting a longer beacon length also assists with debugging as the conflicting root nodes can be + identified more quickly. + + config ESP_WIFI_MGMT_SBUF_NUM + int "WiFi mgmt short buffer number" + range 6 32 + default 32 + help + Set the number of WiFi management short buffer. + + config ESP_WIFI_IRAM_OPT + bool "WiFi IRAM speed optimization" + default n if (BT_ENABLED && SPIRAM && IDF_TARGET_ESP32) + default y + help + Select this option to place frequently called Wi-Fi library functions in IRAM. + When this option is disabled, more than 10Kbytes of IRAM memory will be saved + but Wi-Fi throughput will be reduced. + + config ESP_WIFI_EXTRA_IRAM_OPT + bool "WiFi EXTRA IRAM speed optimization" + default y if IDF_TARGET_ESP32C6 default n help - Select this option to get passphrase during WPS configuration. - This option fakes the virtual display capabilites to get the - configuration in passphrase mode. - Not recommanded to be used since WPS credentials should not - be shared to other devices, making it in readable format increases - that risk, also passphrase requires pbkdf2 to convert in psk. + Select this option to place additional frequently called Wi-Fi library functions + in IRAM. When this option is disabled, more than 5Kbytes of IRAM memory will be saved + but Wi-Fi throughput will be reduced. - endmenu # "WPS Configuration Options" + config ESP_WIFI_RX_IRAM_OPT + bool "WiFi RX IRAM speed optimization" + default n if (BT_ENABLED && SPIRAM && IDF_TARGET_ESP32) + default y + help + Select this option to place frequently called Wi-Fi library RX functions in IRAM. + When this option is disabled, more than 17Kbytes of IRAM memory will be saved + but Wi-Fi performance will be reduced. + + config ESP_WIFI_ENABLE_WPA3_SAE + bool "Enable WPA3-Personal" + default y + select ESP_WIFI_MBEDTLS_CRYPTO + help + Select this option to allow the device to establish a WPA3-Personal connection with eligible AP's. + PMF (Protected Management Frames) is a prerequisite feature for a WPA3 connection, it needs to be + explicitly configured before attempting connection. Please refer to the Wi-Fi Driver API Guide + for details. + + config ESP_WIFI_ENABLE_SAE_PK + bool "Enable SAE-PK" + default y + depends on ESP_WIFI_ENABLE_WPA3_SAE + help + Select this option to enable SAE-PK + + config ESP_WIFI_SOFTAP_SAE_SUPPORT + bool "Enable WPA3 Personal(SAE) SoftAP" + default y + depends on ESP_WIFI_ENABLE_WPA3_SAE + depends on ESP_WIFI_SOFTAP_SUPPORT + help + Select this option to enable SAE support in softAP mode. + + config ESP_WIFI_ENABLE_WPA3_OWE_STA + bool "Enable OWE STA" + default y + select ESP_WIFI_MBEDTLS_CRYPTO + help + Select this option to allow the device to establish OWE connection with eligible AP's. + PMF (Protected Management Frames) is a prerequisite feature for a WPA3 connection, it needs to be + explicitly configured before attempting connection. Please refer to the Wi-Fi Driver API Guide + for details. + + config ESP_WIFI_SLP_IRAM_OPT + bool "WiFi SLP IRAM speed optimization" + select PM_SLP_DEFAULT_PARAMS_OPT + select PERIPH_CTRL_FUNC_IN_IRAM + help + Select this option to place called Wi-Fi library TBTT process and receive beacon functions in IRAM. + Some functions can be put in IRAM either by ESP_WIFI_IRAM_OPT and ESP_WIFI_RX_IRAM_OPT, or this one. + If already enabled ESP_WIFI_IRAM_OPT, the other 7.3KB IRAM memory would be taken by this option. + If already enabled ESP_WIFI_RX_IRAM_OPT, the other 1.3KB IRAM memory would be taken by this option. + If neither of them are enabled, the other 7.4KB IRAM memory would be taken by this option. + Wi-Fi power-save mode average current would be reduced if this option is enabled. + + config ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME + int "Minimum active time" + range 8 60 + default 50 + depends on ESP_WIFI_SLP_IRAM_OPT + help + The minimum timeout for waiting to receive data, unit: milliseconds. + + config ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME + int "Maximum keep alive time" + range 10 60 + default 10 + depends on ESP_WIFI_SLP_IRAM_OPT + help + The maximum time that wifi keep alive, unit: seconds. + + config ESP_WIFI_FTM_ENABLE + bool "WiFi FTM" + default n + depends on SOC_WIFI_FTM_SUPPORT + help + Enable feature Fine Timing Measurement for calculating WiFi Round-Trip-Time (RTT). + + config ESP_WIFI_FTM_INITIATOR_SUPPORT + bool "FTM Initiator support" + default y + depends on ESP_WIFI_FTM_ENABLE + + config ESP_WIFI_FTM_RESPONDER_SUPPORT + bool "FTM Responder support" + default y + depends on ESP_WIFI_FTM_ENABLE + + config ESP_WIFI_STA_DISCONNECTED_PM_ENABLE + bool "Power Management for station at disconnected" + default y + help + Select this option to enable power_management for station when disconnected. + Chip will do modem-sleep when rf module is not in use any more. + + config ESP_WIFI_GCMP_SUPPORT + bool "WiFi GCMP Support(GCMP128 and GCMP256)" + default n + depends on SOC_WIFI_GCMP_SUPPORT + help + Select this option to enable GCMP support. GCMP support is compulsory for WiFi Suite-B support. + + config ESP_WIFI_GMAC_SUPPORT + bool "WiFi GMAC Support(GMAC128 and GMAC256)" + default n + help + Select this option to enable GMAC support. GMAC support is compulsory for WiFi 192 bit certification. + + config ESP_WIFI_SOFTAP_SUPPORT + bool "WiFi SoftAP Support" + default y + help + WiFi module can be compiled without SoftAP to save code size. + + config ESP_WIFI_ENHANCED_LIGHT_SLEEP + bool "WiFi modem automatically receives the beacon" + default n + depends on ESP_PHY_MAC_BB_PD && SOC_PM_SUPPORT_BEACON_WAKEUP + help + The wifi modem automatically receives the beacon frame during light sleep. + + config ESP_WIFI_SLP_BEACON_LOST_OPT + bool "Wifi sleep optimize when beacon lost" + help + Enable wifi sleep optimization when beacon loss occurs and immediately enter + sleep mode when the WiFi module detects beacon loss. + + config ESP_WIFI_SLP_BEACON_LOST_TIMEOUT + int "Beacon loss timeout" + range 5 100 + default 10 + depends on ESP_WIFI_SLP_BEACON_LOST_OPT + help + Timeout time for close rf phy when beacon loss occurs, Unit: 1024 microsecond. + + config ESP_WIFI_SLP_BEACON_LOST_THRESHOLD + int "Maximum number of consecutive lost beacons allowed" + range 0 8 + default 3 + depends on ESP_WIFI_SLP_BEACON_LOST_OPT + help + Maximum number of consecutive lost beacons allowed, WiFi keeps Rx state when + the number of consecutive beacons lost is greater than the given threshold. + + config ESP_WIFI_SLP_PHY_ON_DELTA_EARLY_TIME + int "Delta early time for RF PHY on" + range 0 100 + default 2 + depends on ESP_WIFI_SLP_BEACON_LOST_OPT && SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW + help + Delta early time for rf phy on, When the beacon is lost, the next rf phy on will + be earlier the time specified by the configuration item, Unit: 32 microsecond. + + config ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME + int "Delta timeout time for RF PHY off" + range 0 8 + default 2 + depends on ESP_WIFI_SLP_BEACON_LOST_OPT && SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW + help + Delta timeout time for rf phy off, When the beacon is lost, the next rf phy off will + be delayed for the time specified by the configuration item. Unit: 1024 microsecond. + + config ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM + int "Maximum espnow encrypt peers number" + range 0 4 if IDF_TARGET_ESP32C2 + range 0 17 if (!IDF_TARGET_ESP32C2) + default 2 if IDF_TARGET_ESP32C2 + default 7 if (!IDF_TARGET_ESP32C2) + help + Maximum number of encrypted peers supported by espnow. + The number of hardware keys for encryption is fixed. And the espnow and SoftAP share the same + hardware keys. So this configuration will affect the maximum connection number of SoftAP. + Maximum espnow encrypted peers number + maximum number of connections of SoftAP = Max hardware + keys number. When using ESP mesh, this value should be set to a maximum of 6. + + config ESP_WIFI_NAN_ENABLE + bool "WiFi Aware" + default n + depends on SOC_WIFI_NAN_SUPPORT + help + Enable WiFi Aware (NAN) feature. + + config ESP_WIFI_ENABLE_WIFI_TX_STATS + bool "Enable Wi-Fi transmission statistics" + depends on SOC_WIFI_HE_SUPPORT + default "y" + help + Enable Wi-Fi transmission statistics. Total support 4 access category. Each access category + will use 346 bytes memory. + + config ESP_WIFI_MBEDTLS_CRYPTO + bool "Use MbedTLS crypto APIs" + default y + select MBEDTLS_AES_C + select MBEDTLS_ECP_C + select MBEDTLS_ECDH_C + select MBEDTLS_ECDSA_C + select MBEDTLS_CMAC_C + select MBEDTLS_ECP_DP_SECP256R1_ENABLED + help + Select this option to enable the use of MbedTLS crypto APIs. + The internal crypto support within the supplicant is limited + and may not suffice for all new security features, including WPA3. + + It is recommended to always keep this option enabled. Additionally, + note that MbedTLS can leverage hardware acceleration if available, + resulting in significantly faster cryptographic operations. + + if ESP_WIFI_MBEDTLS_CRYPTO + config ESP_WIFI_MBEDTLS_TLS_CLIENT + bool "Use MbedTLS TLS client for WiFi Enterprise connection" + depends on ESP_WIFI_ENTERPRISE_SUPPORT + default y + select MBEDTLS_TLS_ENABLED + help + Select this option to use MbedTLS TLS client for WPA2 enterprise connection. + Please note that from MbedTLS-3.0 onwards, MbedTLS does not support SSL-3.0 + TLS-v1.0, TLS-v1.1 versions. Incase your server is using one of these version, + it is advisable to update your server. + Please disable this option for compatibilty with older TLS versions. + endif + + config ESP_WIFI_WAPI_PSK + bool "Enable WAPI PSK support" + depends on SOC_WIFI_WAPI_SUPPORT + default n + help + Select this option to enable WAPI-PSK + which is a Chinese National Standard Encryption for Wireless LANs (GB 15629.11-2003). + + config ESP_WIFI_SUITE_B_192 + bool "Enable NSA suite B support with 192 bit key" + default n + depends on SOC_WIFI_GCMP_SUPPORT + select ESP_WIFI_GCMP_SUPPORT + select ESP_WIFI_GMAC_SUPPORT + help + Select this option to enable 192 bit NSA suite-B. + This is necessary to support WPA3 192 bit security. + + config ESP_WIFI_11KV_SUPPORT + bool "Enable 802.11k, 802.11v APIs Support" + default n + help + Select this option to enable 802.11k 802.11v APIs(RRM and BTM support). + Only APIs which are helpful for network assisted roaming + are supported for now. + Enable this option with BTM and RRM enabled in sta config + to make device ready for network assisted roaming. + BTM: BSS transition management enables an AP to request a station to transition + to a specific AP, or to indicate to a station a set of preferred APs. + RRM: Radio measurements enable STAs to understand the radio environment, + it enables STAs to observe and gather data on radio link performance + and on the radio environment. Current implementation adds beacon report, + link measurement, neighbor report. + + config ESP_WIFI_SCAN_CACHE + bool "Keep scan results in cache" + depends on ESP_WIFI_11KV_SUPPORT + default n + help + Keep scan results in cache, if not enabled, those + will be flushed immediately. + + config ESP_WIFI_MBO_SUPPORT + bool "Enable Multi Band Operation Certification Support" + default n + select ESP_WIFI_11KV_SUPPORT + select ESP_WIFI_SCAN_CACHE + help + Select this option to enable WiFi Multiband operation certification support. + + config ESP_WIFI_DPP_SUPPORT + bool "Enable DPP support" + default n + select ESP_WIFI_MBEDTLS_CRYPTO + help + Select this option to enable WiFi Easy Connect Support. + + config ESP_WIFI_11R_SUPPORT + bool "Enable 802.11R (Fast Transition) Support" + default n + help + Select this option to enable WiFi Fast Transition Support. + + config ESP_WIFI_WPS_SOFTAP_REGISTRAR + bool "Add WPS Registrar support in SoftAP mode" + depends on ESP_WIFI_SOFTAP_SUPPORT + default n + help + Select this option to enable WPS registrar support in softAP mode. + + config ESP_WIFI_ENABLE_WIFI_RX_STATS + bool "Enable Wi-Fi reception statistics" + depends on SOC_WIFI_HE_SUPPORT + default "y" + help + Enable Wi-Fi reception statistics. Total support 2 access category. Each access category + will use 190 bytes memory. + + config ESP_WIFI_ENABLE_WIFI_RX_MU_STATS + bool "Enable Wi-Fi DL MU-MIMO and DL OFDMA reception statistics" + depends on ESP_WIFI_ENABLE_WIFI_RX_STATS + default "y" + help + Enable Wi-Fi DL MU-MIMO and DL OFDMA reception statistics. Will use 10932 bytes memory. + + menu "WPS Configuration Options" + config ESP_WIFI_WPS_STRICT + bool "Strictly validate all WPS attributes" + default n + help + Select this option to enable validate each WPS attribute + rigorously. Disabling this add the workaorunds with various APs. + Enabling this may cause inter operability issues with some APs. + + config ESP_WIFI_WPS_PASSPHRASE + bool "Get WPA2 passphrase in WPS config" + default n + help + Select this option to get passphrase during WPS configuration. + This option fakes the virtual display capabilites to get the + configuration in passphrase mode. + Not recommanded to be used since WPS credentials should not + be shared to other devices, making it in readable format increases + that risk, also passphrase requires pbkdf2 to convert in psk. + + endmenu # "WPS Configuration Options" - config ESP_WIFI_DEBUG_PRINT - bool "Print debug messages from WPA Supplicant" - default n - help - Select this option to print logging information from WPA supplicant, - this includes handshake information and key hex dumps depending - on the project logging level. + config ESP_WIFI_DEBUG_PRINT + bool "Print debug messages from WPA Supplicant" + default n + help + Select this option to print logging information from WPA supplicant, + this includes handshake information and key hex dumps depending + on the project logging level. - Enabling this could increase the build size ~60kb - depending on the project logging level. + Enabling this could increase the build size ~60kb + depending on the project logging level. - config ESP_WIFI_TESTING_OPTIONS - bool "Add DPP testing code" - default n - help - Select this to enable unity test for DPP. + config ESP_WIFI_TESTING_OPTIONS + bool "Add DPP testing code" + default n + help + Select this to enable unity test for DPP. - config ESP_WIFI_ENTERPRISE_SUPPORT - bool "Enable enterprise option" - default y - help - Select this to enable/disable enterprise connection support. + config ESP_WIFI_ENTERPRISE_SUPPORT + bool "Enable enterprise option" + default y + help + Select this to enable/disable enterprise connection support. - disabling this will reduce binary size. - disabling this will disable the use of any esp_wifi_sta_wpa2_ent_* (as APIs will be meaningless) + disabling this will reduce binary size. + disabling this will disable the use of any esp_wifi_sta_wpa2_ent_* (as APIs will be meaningless) - config ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER - bool "Free dynamic buffers during WiFi enterprise connection" - depends on ESP_WIFI_ENTERPRISE_SUPPORT - default y if IDF_TARGET_ESP32C2 - default n if !IDF_TARGET_ESP32C2 - help - Select this configuration to free dynamic buffers during WiFi enterprise connection. - This will enable chip to reduce heap consumption during WiFi enterprise connection. + config ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER + bool "Free dynamic buffers during WiFi enterprise connection" + depends on ESP_WIFI_ENTERPRISE_SUPPORT + default y if IDF_TARGET_ESP32C2 + default n if !IDF_TARGET_ESP32C2 + help + Select this configuration to free dynamic buffers during WiFi enterprise connection. + This will enable chip to reduce heap consumption during WiFi enterprise connection. + + endif # wifi enabled endmenu # Wi-Fi diff --git a/components/esp_wifi/include/esp_private/esp_wifi_types_private.h b/components/esp_wifi/include/esp_private/esp_wifi_types_private.h index 55c70c77ca..aaf83b4072 100644 --- a/components/esp_wifi/include/esp_private/esp_wifi_types_private.h +++ b/components/esp_wifi/include/esp_private/esp_wifi_types_private.h @@ -1,16 +1,8 @@ -// Copyright 2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2019-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef _ESP_WIFI_TYPES_PRIVATE_H #define _ESP_WIFI_TYPES_PRIVATE_H @@ -19,7 +11,6 @@ #include #include "sys/queue.h" #include "esp_err.h" -#include "esp_interface.h" #include "esp_event_base.h" #endif diff --git a/components/esp_wifi/include/esp_private/wifi_os_adapter.h b/components/esp_wifi/include/esp_private/wifi_os_adapter.h index 84ace9fd1b..49d281ffe1 100644 --- a/components/esp_wifi/include/esp_private/wifi_os_adapter.h +++ b/components/esp_wifi/include/esp_private/wifi_os_adapter.h @@ -26,7 +26,7 @@ extern "C" { #define OSI_QUEUE_SEND_BACK 1 #define OSI_QUEUE_SEND_OVERWRITE 2 -typedef struct { +typedef struct wifi_osi_funcs_t { int32_t _version; bool (* _env_is_chip)(void); void (*_set_intr)(int32_t cpu_no, uint32_t intr_source, uint32_t intr_num, int32_t intr_prio); diff --git a/components/esp_wifi/include/esp_private/wifi_types.h b/components/esp_wifi/include/esp_private/wifi_types.h index 4542492c8f..816d06a691 100644 --- a/components/esp_wifi/include/esp_private/wifi_types.h +++ b/components/esp_wifi/include/esp_private/wifi_types.h @@ -1,19 +1,13 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at - -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ #ifndef _WIFI_TYPES_H #define _WIFI_TYPES_H +#include +#include #ifdef __cplusplus extern "C" { @@ -47,6 +41,26 @@ typedef struct { } data; /**< Configuration of ioctl command */ } wifi_ioctl_config_t; +/** + * @brief WiFi beacon monitor parameter configuration + * + */ +typedef struct { + bool enable; /**< Enable or disable beacon monitor */ + uint8_t loss_timeout; /**< Beacon lost timeout */ + uint8_t loss_threshold; /**< Maximum number of consecutive lost beacons allowed */ + uint8_t delta_intr_early; /**< Delta early time for RF PHY on */ + uint8_t delta_loss_timeout; /**< Delta timeout time for RF PHY off */ +#if MAC_SUPPORT_PMU_MODEM_STATE + uint8_t beacon_abort: 1, /**< Enable or disable beacon abort */ + broadcast_wakeup: 1, /**< Enable or disable TIM element multicast wakeup */ + reserved: 6; /**< Reserved */ + uint8_t tsf_time_sync_deviation; /**< Deviation range to sync with AP TSF timestamp */ + uint16_t modem_state_consecutive; /**< PMU MODEM state consecutive count limit */ + uint16_t rf_ctrl_wait_cycle; /**< RF on wait time (unit: Modem APB clock cycle) */ +#endif +} wifi_beacon_monitor_config_t; + #ifdef __cplusplus } #endif diff --git a/components/esp_wifi/include/esp_wifi.h b/components/esp_wifi/include/esp_wifi.h index e4ea220cf7..241c18fe52 100644 --- a/components/esp_wifi/include/esp_wifi.h +++ b/components/esp_wifi/include/esp_wifi.h @@ -54,7 +54,7 @@ #include "esp_err.h" #include "esp_wifi_types.h" #include "esp_event.h" -#include "esp_private/esp_wifi_private.h" +#include "esp_wifi_crypto_types.h" #include "esp_wifi_default.h" #ifdef __cplusplus @@ -90,6 +90,8 @@ extern "C" { #define ESP_ERR_WIFI_DISCARD (ESP_ERR_WIFI_BASE + 27) /*!< Discard frame */ #define ESP_ERR_WIFI_ROC_IN_PROGRESS (ESP_ERR_WIFI_BASE + 28) /*!< ROC op is in progress */ +typedef struct wifi_osi_funcs_t wifi_osi_funcs_t; + /** * @brief WiFi stack configuration parameters passed to esp_wifi_init call. */ @@ -898,6 +900,12 @@ esp_err_t esp_wifi_set_config(wifi_interface_t interface, wifi_config_t *conf); */ esp_err_t esp_wifi_get_config(wifi_interface_t interface, wifi_config_t *conf); +/** + * @brief Forward declare wifi_sta_list_t. The definition depends on the target device + * that implements esp_wifi + */ +typedef struct wifi_sta_list_t wifi_sta_list_t; + /** * @brief Get STAs associated with soft-AP * diff --git a/components/esp_wifi/include/esp_wifi_crypto_types.h b/components/esp_wifi/include/esp_wifi_crypto_types.h index 6b41cc524a..1fae0297e5 100644 --- a/components/esp_wifi/include/esp_wifi_crypto_types.h +++ b/components/esp_wifi/include/esp_wifi_crypto_types.h @@ -393,7 +393,7 @@ typedef uint32_t (*esp_crc32_le_t)(uint32_t crc, uint8_t const *buf, uint32_t le * The structure can be set as software crypto or the crypto optimized by device's * hardware. */ -typedef struct { +typedef struct wpa_crypto_funcs_t { uint32_t size; /**< The crypto callback function structure size */ uint32_t version; /**< The crypto callback function structure version */ esp_aes_wrap_t aes_wrap; /**< The AES wrap callback function used by esp_wifi */ diff --git a/components/esp_wifi/include/esp_wifi_he_types.h b/components/esp_wifi/include/esp_wifi_he_types.h index 41d4424abd..02bc5efef1 100644 --- a/components/esp_wifi/include/esp_wifi_he_types.h +++ b/components/esp_wifi/include/esp_wifi_he_types.h @@ -40,7 +40,7 @@ enum { /** * @brief Channel state information(CSI) configuration type */ -typedef struct { +typedef struct wifi_csi_config_t { uint32_t enable : 1; /**< enable to acquire CSI */ uint32_t acquire_csi_legacy : 1; /**< enable to acquire L-LTF when receiving a 11g PPDU */ uint32_t acquire_csi_ht20 : 1; /**< enable to acquire HT-LTF when receiving an HT20 PPDU */ @@ -56,7 +56,7 @@ typedef struct { uint32_t val_scale_cfg : 2; /**< value 0-3 */ uint32_t dump_ack_en : 1; /**< enable to dump 802.11 ACK frame, default disabled */ uint32_t reserved : 19; /**< reserved */ -} wifi_csi_acquire_config_t; +} wifi_csi_config_t; /** * @brief HE variant HT Control field including UPH(UL power headroom) and OM(Operation mode) @@ -139,7 +139,7 @@ typedef enum { /** * @brief RxControl Info */ -typedef struct { +typedef struct wifi_pkt_rx_ctrl_t { signed rssi : 8; /**< the RSSI of the reception frame */ unsigned rate : 5; /**< if cur_bb_format is RX_BB_FORMAT_11B, it's the transmission rate. otherwise it's Rate field of L-SIG */ unsigned : 1; /**< reserved */ @@ -201,7 +201,7 @@ typedef struct { unsigned : 2; /**< reserved */ unsigned rx_state : 8; /**< reception state, 0: successful, others: failure */ unsigned : 24; /**< reserved */ -} __attribute__((packed)) esp_wifi_rxctrl_t; +} __attribute__((packed)) wifi_pkt_rx_ctrl_t; /** Argument structure for WIFI_EVENT_TWT_SET_UP event */ typedef struct { diff --git a/components/esp_wifi/include/esp_wifi_types.h b/components/esp_wifi/include/esp_wifi_types.h index 62aca03a4e..e523f94619 100644 --- a/components/esp_wifi/include/esp_wifi_types.h +++ b/components/esp_wifi/include/esp_wifi_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2023 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -8,10 +8,8 @@ #ifndef __ESP_WIFI_TYPES_H__ #define __ESP_WIFI_TYPES_H__ -#include "esp_private/esp_wifi_types_private.h" -#if CONFIG_SOC_WIFI_HE_SUPPORT -#include "esp_wifi_he_types.h" -#endif +#include "esp_event.h" +#include "esp_interface.h" #ifdef __cplusplus extern "C" { @@ -29,7 +27,7 @@ typedef enum { typedef enum { WIFI_IF_STA = ESP_IF_WIFI_STA, WIFI_IF_AP = ESP_IF_WIFI_AP, -#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32S2) +#if CONFIG_SOC_WIFI_NAN_SUPPORT || !CONFIG_SOC_WIFI_ENABLED WIFI_IF_NAN = ESP_IF_WIFI_NAN, #endif WIFI_IF_MAX @@ -376,20 +374,6 @@ typedef struct { uint32_t reserved:26; /**< bit: 6..31 reserved */ } wifi_sta_info_t; -#if CONFIG_IDF_TARGET_ESP32C2 -#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */ -#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 -#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3 soft-AP */ -#else -#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */ -#endif - -/** @brief List of stations associated with the Soft-AP */ -typedef struct { - wifi_sta_info_t sta[ESP_WIFI_MAX_CONN_NUM]; /**< station list */ - int num; /**< number of stations in the list (other entries are invalid) */ -} wifi_sta_list_t; - typedef enum { WIFI_STORAGE_FLASH, /**< all configuration will store in both memory and flash */ WIFI_STORAGE_RAM, /**< all configuration will only store in the memory */ @@ -446,68 +430,7 @@ typedef struct { uint8_t payload[0]; /**< Payload. Length is equal to value in 'length' field, minus 4. */ } vendor_ie_data_t; -#if CONFIG_SOC_WIFI_HE_SUPPORT -typedef esp_wifi_rxctrl_t wifi_pkt_rx_ctrl_t; -#else -/** @brief Received packet radio metadata header, this is the common header at the beginning of all promiscuous mode RX callback buffers */ -typedef struct { - signed rssi:8; /**< Received Signal Strength Indicator(RSSI) of packet. unit: dBm */ - unsigned rate:5; /**< PHY rate encoding of the packet. Only valid for non HT(11bg) packet */ - unsigned :1; /**< reserved */ - unsigned sig_mode:2; /**< Protocol of the reveived packet, 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ - unsigned :16; /**< reserved */ - unsigned mcs:7; /**< Modulation Coding Scheme. If is HT(11n) packet, shows the modulation, range from 0 to 76(MSC0 ~ MCS76) */ - unsigned cwb:1; /**< Channel Bandwidth of the packet. 0: 20MHz; 1: 40MHz */ - unsigned :16; /**< reserved */ - unsigned smoothing:1; /**< Set to 1 indicates that channel estimate smoothing is recommended. - Set to 0 indicates that only per-carrierindependent (unsmoothed) channel estimate is recommended. */ - unsigned not_sounding:1; /**< Set to 0 indicates that PPDU is a sounding PPDU. Set to 1indicates that the PPDU is not a sounding PPDU. - sounding PPDU is used for channel estimation by the request receiver */ - unsigned :1; /**< reserved */ - unsigned aggregation:1; /**< Aggregation. 0: MPDU packet; 1: AMPDU packet */ - unsigned stbc:2; /**< Space Time Block Code(STBC). 0: non STBC packet; 1: STBC packet */ - unsigned fec_coding:1; /**< Forward Error Correction(FEC). Flag is set for 11n packets which are LDPC */ - unsigned sgi:1; /**< Short Guide Interval(SGI). 0: Long GI; 1: Short GI */ -#if CONFIG_IDF_TARGET_ESP32 - signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ -#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 - unsigned :8; /**< reserved */ -#endif - unsigned ampdu_cnt:8; /**< the number of subframes aggregated in AMPDU */ - unsigned channel:4; /**< primary channel on which this packet is received */ - unsigned secondary_channel:4; /**< secondary channel on which this packet is received. 0: none; 1: above; 2: below */ - unsigned :8; /**< reserved */ - unsigned timestamp:32; /**< timestamp. The local time when this packet is received. It is precise only if modem sleep or light sleep is not enabled. unit: microsecond */ - unsigned :32; /**< reserved */ -#if CONFIG_IDF_TARGET_ESP32S2 - unsigned :32; /**< reserved */ -#elif CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 - signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ - unsigned :24; /**< reserved */ - unsigned :32; /**< reserved */ -#endif - unsigned :31; /**< reserved */ - unsigned ant:1; /**< antenna number from which this packet is received. 0: WiFi antenna 0; 1: WiFi antenna 1 */ -#if CONFIG_IDF_TARGET_ESP32S2 - signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ - unsigned :24; /**< reserved */ -#elif CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 - unsigned :32; /**< reserved */ - unsigned :32; /**< reserved */ - unsigned :32; /**< reserved */ -#endif - unsigned sig_len:12; /**< length of packet including Frame Check Sequence(FCS) */ - unsigned :12; /**< reserved */ - unsigned rx_state:8; /**< state of the packet. 0: no error; others: error numbers which are not public */ -} wifi_pkt_rx_ctrl_t; -#endif - -/** @brief Payload passed to 'buf' parameter of promiscuous mode RX callback. - */ -typedef struct { - wifi_pkt_rx_ctrl_t rx_ctrl; /**< metadata header */ - uint8_t payload[0]; /**< Data or management payload. Length of payload is described by rx_ctrl.sig_len. Type of content determined by packet type argument of callback. */ -} wifi_promiscuous_pkt_t; +typedef struct wifi_pkt_rx_ctrl_t wifi_pkt_rx_ctrl_t; /** * @brief Promiscuous frame type @@ -556,36 +479,13 @@ typedef struct { * @brief Channel state information(CSI) configuration type * */ -#if CONFIG_SOC_WIFI_HE_SUPPORT -typedef wifi_csi_acquire_config_t wifi_csi_config_t; -#else -typedef struct { - bool lltf_en; /**< enable to receive legacy long training field(lltf) data. Default enabled */ - bool htltf_en; /**< enable to receive HT long training field(htltf) data. Default enabled */ - bool stbc_htltf2_en; /**< enable to receive space time block code HT long training field(stbc-htltf2) data. Default enabled */ - bool ltf_merge_en; /**< enable to generate htlft data by averaging lltf and ht_ltf data when receiving HT packet. Otherwise, use ht_ltf data directly. Default enabled */ - bool channel_filter_en; /**< enable to turn on channel filter to smooth adjacent sub-carrier. Disable it to keep independence of adjacent sub-carrier. Default enabled */ - bool manu_scale; /**< manually scale the CSI data by left shifting or automatically scale the CSI data. If set true, please set the shift bits. false: automatically. true: manually. Default false */ - uint8_t shift; /**< manually left shift bits of the scale of the CSI data. The range of the left shift bits is 0~15 */ - bool dump_ack_en; /**< enable to dump 802.11 ACK frame, default disabled */ -} wifi_csi_config_t; -#endif +typedef struct wifi_csi_config_t wifi_csi_config_t; /** * @brief CSI data type * */ -typedef struct { - wifi_pkt_rx_ctrl_t rx_ctrl;/**< received packet radio metadata header of the CSI data */ - uint8_t mac[6]; /**< source MAC address of the CSI data */ - uint8_t dmac[6]; /**< destination MAC address of the CSI data */ - bool first_word_invalid; /**< first four bytes of the CSI data is invalid or not, true indicates the first four bytes is invalid due to hardware limition */ - int8_t *buf; /**< valid buffer of CSI data */ - uint16_t len; /**< valid length of CSI data */ - uint8_t *hdr; /**< header of the wifi packet */ - uint8_t *payload; /**< payload of the wifi packet */ - uint16_t payload_len; /**< payload len of the wifi packet */ -} wifi_csi_info_t; +typedef struct wifi_csi_info_t wifi_csi_info_t; /** * @brief WiFi GPIO configuration for antenna selection @@ -638,7 +538,6 @@ typedef struct { */ typedef int (* wifi_action_rx_cb_t)(uint8_t *hdr, uint8_t *payload, size_t len, uint8_t channel); - /** * @brief Action Frame Tx Request * @@ -664,26 +563,6 @@ typedef struct { uint16_t burst_period; /**< Requested time period between consecutive FTM bursts in 100's of milliseconds (0 - No pref) */ } wifi_ftm_initiator_cfg_t; -/** - * @brief WiFi beacon monitor parameter configuration - * - */ -typedef struct { - bool enable; /**< Enable or disable beacon monitor */ - uint8_t loss_timeout; /**< Beacon lost timeout */ - uint8_t loss_threshold; /**< Maximum number of consecutive lost beacons allowed */ - uint8_t delta_intr_early; /**< Delta early time for RF PHY on */ - uint8_t delta_loss_timeout; /**< Delta timeout time for RF PHY off */ -#if MAC_SUPPORT_PMU_MODEM_STATE - uint8_t beacon_abort: 1, /**< Enable or disable beacon abort */ - broadcast_wakeup: 1, /**< Enable or disable TIM element multicast wakeup */ - reserved: 6; /**< Reserved */ - uint8_t tsf_time_sync_deviation; /**< Deviation range to sync with AP TSF timestamp */ - uint16_t modem_state_consecutive; /**< PMU MODEM state consecutive count limit */ - uint16_t rf_ctrl_wait_cycle; /**< RF on wait time (unit: Modem APB clock cycle) */ -#endif -} wifi_beacon_monitor_config_t; - #define ESP_WIFI_NAN_MAX_SVC_SUPPORTED 2 #define ESP_WIFI_NAN_DATAPATH_MAX_PEERS 2 @@ -816,7 +695,7 @@ typedef enum { WIFI_PHY_RATE_MCS5_LGI = 0x15, /**< MCS5 with long GI */ WIFI_PHY_RATE_MCS6_LGI = 0x16, /**< MCS6 with long GI */ WIFI_PHY_RATE_MCS7_LGI = 0x17, /**< MCS7 with long GI */ -#if CONFIG_SOC_WIFI_HE_SUPPORT +#if CONFIG_SOC_WIFI_HE_SUPPORT || !CONFIG_SOC_WIFI_SUPPORT WIFI_PHY_RATE_MCS8_LGI, /**< MCS8 with long GI */ WIFI_PHY_RATE_MCS9_LGI, /**< MCS9 with long GI */ #endif @@ -843,7 +722,7 @@ typedef enum { WIFI_PHY_RATE_MCS5_SGI, /**< MCS5 with short GI */ WIFI_PHY_RATE_MCS6_SGI, /**< MCS6 with short GI */ WIFI_PHY_RATE_MCS7_SGI, /**< MCS7 with short GI */ -#if CONFIG_SOC_WIFI_HE_SUPPORT +#if CONFIG_SOC_WIFI_HE_SUPPORT || !CONFIG_SOC_WIFI_SUPPORT WIFI_PHY_RATE_MCS8_SGI, /**< MCS8 with short GI */ WIFI_PHY_RATE_MCS9_SGI, /**< MCS9 with short GI */ #endif diff --git a/components/esp_wifi/include/local/esp_wifi_native.h b/components/esp_wifi/include/local/esp_wifi_native.h new file mode 100644 index 0000000000..12d7f1e396 --- /dev/null +++ b/components/esp_wifi/include/local/esp_wifi_native.h @@ -0,0 +1,121 @@ +/* + * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ + +#pragma once + +#include "sdkconfig.h" +#if CONFIG_SOC_WIFI_HE_SUPPORT +#include "esp_wifi_he_types.h" +#endif + + +#if CONFIG_IDF_TARGET_ESP32C2 +#define ESP_WIFI_MAX_CONN_NUM (4) /**< max number of stations which can connect to ESP32C2 soft-AP */ +#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C6 +#define ESP_WIFI_MAX_CONN_NUM (10) /**< max number of stations which can connect to ESP32C3 soft-AP */ +#else +#define ESP_WIFI_MAX_CONN_NUM (15) /**< max number of stations which can connect to ESP32/ESP32S3/ESP32S2 soft-AP */ +#endif + +/** @brief List of stations associated with the Soft-AP */ +typedef struct wifi_sta_list_t { + wifi_sta_info_t sta[ESP_WIFI_MAX_CONN_NUM]; /**< station list */ + int num; /**< number of stations in the list (other entries are invalid) */ +} wifi_sta_list_t; + +#if !CONFIG_SOC_WIFI_HE_SUPPORT +/** @brief Received packet radio metadata header, this is the common header at the beginning of all promiscuous mode RX callback buffers */ +typedef struct wifi_pkt_rx_ctrl_t{ + signed rssi:8; /**< Received Signal Strength Indicator(RSSI) of packet. unit: dBm */ + unsigned rate:5; /**< PHY rate encoding of the packet. Only valid for non HT(11bg) packet */ + unsigned :1; /**< reserved */ + unsigned sig_mode:2; /**< Protocol of the reveived packet, 0: non HT(11bg) packet; 1: HT(11n) packet; 3: VHT(11ac) packet */ + unsigned :16; /**< reserved */ + unsigned mcs:7; /**< Modulation Coding Scheme. If is HT(11n) packet, shows the modulation, range from 0 to 76(MSC0 ~ MCS76) */ + unsigned cwb:1; /**< Channel Bandwidth of the packet. 0: 20MHz; 1: 40MHz */ + unsigned :16; /**< reserved */ + unsigned smoothing:1; /**< Set to 1 indicates that channel estimate smoothing is recommended. + Set to 0 indicates that only per-carrierindependent (unsmoothed) channel estimate is recommended. */ + unsigned not_sounding:1; /**< Set to 0 indicates that PPDU is a sounding PPDU. Set to 1indicates that the PPDU is not a sounding PPDU. + sounding PPDU is used for channel estimation by the request receiver */ + unsigned :1; /**< reserved */ + unsigned aggregation:1; /**< Aggregation. 0: MPDU packet; 1: AMPDU packet */ + unsigned stbc:2; /**< Space Time Block Code(STBC). 0: non STBC packet; 1: STBC packet */ + unsigned fec_coding:1; /**< Forward Error Correction(FEC). Flag is set for 11n packets which are LDPC */ + unsigned sgi:1; /**< Short Guide Interval(SGI). 0: Long GI; 1: Short GI */ +#if CONFIG_IDF_TARGET_ESP32 + signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ +#elif CONFIG_IDF_TARGET_ESP32S2 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 + unsigned :8; /**< reserved */ +#endif + unsigned ampdu_cnt:8; /**< the number of subframes aggregated in AMPDU */ + unsigned channel:4; /**< primary channel on which this packet is received */ + unsigned secondary_channel:4; /**< secondary channel on which this packet is received. 0: none; 1: above; 2: below */ + unsigned :8; /**< reserved */ + unsigned timestamp:32; /**< timestamp. The local time when this packet is received. It is precise only if modem sleep or light sleep is not enabled. unit: microsecond */ + unsigned :32; /**< reserved */ +#if CONFIG_IDF_TARGET_ESP32S2 + unsigned :32; /**< reserved */ +#elif CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 + signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ + unsigned :24; /**< reserved */ + unsigned :32; /**< reserved */ +#endif + unsigned :31; /**< reserved */ + unsigned ant:1; /**< antenna number from which this packet is received. 0: WiFi antenna 0; 1: WiFi antenna 1 */ +#if CONFIG_IDF_TARGET_ESP32S2 + signed noise_floor:8; /**< noise floor of Radio Frequency Module(RF). unit: dBm*/ + unsigned :24; /**< reserved */ +#elif CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32C2 + unsigned :32; /**< reserved */ + unsigned :32; /**< reserved */ + unsigned :32; /**< reserved */ +#endif + unsigned sig_len:12; /**< length of packet including Frame Check Sequence(FCS) */ + unsigned :12; /**< reserved */ + unsigned rx_state:8; /**< state of the packet. 0: no error; others: error numbers which are not public */ +} wifi_pkt_rx_ctrl_t; +#endif + +/** @brief Payload passed to 'buf' parameter of promiscuous mode RX callback. + */ +typedef struct { + wifi_pkt_rx_ctrl_t rx_ctrl; /**< metadata header */ + uint8_t payload[0]; /**< Data or management payload. Length of payload is described by rx_ctrl.sig_len. Type of content determined by packet type argument of callback. */ +} wifi_promiscuous_pkt_t; + +/** + * @brief Channel state information(CSI) configuration type + * + */ +#if !CONFIG_SOC_WIFI_HE_SUPPORT +typedef struct wifi_csi_config_t{ + bool lltf_en; /**< enable to receive legacy long training field(lltf) data. Default enabled */ + bool htltf_en; /**< enable to receive HT long training field(htltf) data. Default enabled */ + bool stbc_htltf2_en; /**< enable to receive space time block code HT long training field(stbc-htltf2) data. Default enabled */ + bool ltf_merge_en; /**< enable to generate htlft data by averaging lltf and ht_ltf data when receiving HT packet. Otherwise, use ht_ltf data directly. Default enabled */ + bool channel_filter_en; /**< enable to turn on channel filter to smooth adjacent sub-carrier. Disable it to keep independence of adjacent sub-carrier. Default enabled */ + bool manu_scale; /**< manually scale the CSI data by left shifting or automatically scale the CSI data. If set true, please set the shift bits. false: automatically. true: manually. Default false */ + uint8_t shift; /**< manually left shift bits of the scale of the CSI data. The range of the left shift bits is 0~15 */ + bool dump_ack_en; /**< enable to dump 802.11 ACK frame, default disabled */ +} wifi_csi_config_t; +#endif + +/** + * @brief CSI data type + * + */ +typedef struct wifi_csi_info_t { + wifi_pkt_rx_ctrl_t rx_ctrl;/**< received packet radio metadata header of the CSI data */ + uint8_t mac[6]; /**< source MAC address of the CSI data */ + uint8_t dmac[6]; /**< destination MAC address of the CSI data */ + bool first_word_invalid; /**< first four bytes of the CSI data is invalid or not, true indicates the first four bytes is invalid due to hardware limition */ + int8_t *buf; /**< valid buffer of CSI data */ + uint16_t len; /**< valid length of CSI data */ + uint8_t *hdr; /**< header of the wifi packet */ + uint8_t *payload; /**< payload of the wifi packet */ + uint16_t payload_len; /**< payload len of the wifi packet */ +} wifi_csi_info_t; diff --git a/components/wpa_supplicant/port/include/os.h b/components/wpa_supplicant/port/include/os.h index a3442fade9..5e95c17fec 100644 --- a/components/wpa_supplicant/port/include/os.h +++ b/components/wpa_supplicant/port/include/os.h @@ -21,6 +21,7 @@ #include #include "esp_err.h" #include "supplicant_opt.h" +#include "esp_private/esp_wifi_private.h" #include "esp_wifi.h" typedef time_t os_time_t; diff --git a/components/wpa_supplicant/src/utils/includes.h b/components/wpa_supplicant/src/utils/includes.h index 38e7607221..e22c75bb32 100644 --- a/components/wpa_supplicant/src/utils/includes.h +++ b/components/wpa_supplicant/src/utils/includes.h @@ -20,6 +20,7 @@ #define INCLUDES_H #include "supplicant_opt.h" +#include "esp_private/esp_wifi_private.h" #define AES_SMALL_TABLES #define CONFIG_NO_RANDOM_POOL diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 519620bac9..100bce010b 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -483,8 +483,6 @@ components/esp_rom/linux/esp_rom_crc.c components/esp_rom/linux/esp_rom_md5.c components/esp_rom/patches/esp_rom_crc.c components/esp_system/ubsan.c -components/esp_wifi/include/esp_private/esp_wifi_types_private.h -components/esp_wifi/include/esp_private/wifi_types.h components/esp_wifi/src/mesh_event.c components/fatfs/diskio/diskio.c components/fatfs/diskio/diskio_impl.h