soc: espressif: enable Wi-Fi/Bluetooth SW coexistence mgmt

Update and enable Wi-Fi/Bluetooth software coexistence management.
This improves package handling and is recommended to be used
in high traffic scenarios.

Signed-off-by: Sylvio Alves <sylvio.alves@espressif.com>
This commit is contained in:
Sylvio Alves 2025-02-10 14:06:23 -03:00 committed by Benjamin Cabé
commit 10860ecbba
9 changed files with 23 additions and 21 deletions

View file

@ -71,11 +71,6 @@ config ESP32_WIFI_STA_SCAN_ALL
highest RSSI. Without this, a fast scan is performed which connects to the first AP highest RSSI. Without this, a fast scan is performed which connects to the first AP
found. found.
config ESP32_WIFI_SW_COEXIST_ENABLE
bool
help
Software controls WiFi/Bluetooth coexistence. Not supported yet.
config ESP32_WIFI_NET_ALLOC_SPIRAM config ESP32_WIFI_NET_ALLOC_SPIRAM
bool "Allocate memory of WiFi and NET in SPIRAM" bool "Allocate memory of WiFi and NET in SPIRAM"
depends on ESP_SPIRAM depends on ESP_SPIRAM
@ -227,7 +222,6 @@ config ESP32_WIFI_RX_MGMT_BUF_NUM_DEF
config ESP32_WIFI_CSI_ENABLED config ESP32_WIFI_CSI_ENABLED
bool "WiFi CSI(Channel State Information)" bool "WiFi CSI(Channel State Information)"
default n
help help
Select this option to enable CSI(Channel State Information) feature. Select this option to enable CSI(Channel State Information) feature.
CSI takes about CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM KB of RAM. CSI takes about CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM KB of RAM.
@ -280,7 +274,6 @@ config ESP32_WIFI_RX_BA_WIN
config ESP32_WIFI_AMSDU_TX_ENABLED config ESP32_WIFI_AMSDU_TX_ENABLED
bool "WiFi AMSDU TX" bool "WiFi AMSDU TX"
depends on ESP_SPIRAM depends on ESP_SPIRAM
default n
help help
Select this option to enable AMSDU TX feature Select this option to enable AMSDU TX feature
@ -293,8 +286,6 @@ config ESP32_WIFI_MGMT_SBUF_NUM
config ESP32_WIFI_IRAM_OPT config ESP32_WIFI_IRAM_OPT
bool "WiFi IRAM speed optimization" bool "WiFi IRAM speed optimization"
default n if (BT && ESP_SPIRAM && SOC_SERIES_ESP32)
default y
help help
Select this option to place frequently called Wi-Fi library functions in IRAM. 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 When this option is disabled, more than 10Kbytes of IRAM memory will be saved
@ -302,7 +293,6 @@ config ESP32_WIFI_IRAM_OPT
config ESP32_WIFI_RX_IRAM_OPT config ESP32_WIFI_RX_IRAM_OPT
bool "WiFi RX IRAM speed optimization" bool "WiFi RX IRAM speed optimization"
default n if (BT && ESP_SPIRAM && SOC_SERIES_ESP32)
help help
Select this option to place frequently called Wi-Fi library RX functions in IRAM. 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 When this option is disabled, more than 17Kbytes of IRAM memory will be saved
@ -345,7 +335,6 @@ config ESP32_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME
config ESP32_WIFI_FTM_ENABLE config ESP32_WIFI_FTM_ENABLE
bool "WiFi FTM" bool "WiFi FTM"
default n
depends on SOC_SERIES_ESP32C2 || SOC_SERIES_ESP32C3 || SOC_SERIES_ESP32C6 || SOC_SERIES_ESP32S2 || SOC_SERIES_ESP32S3 depends on SOC_SERIES_ESP32C2 || SOC_SERIES_ESP32C3 || SOC_SERIES_ESP32C6 || SOC_SERIES_ESP32S2 || SOC_SERIES_ESP32S3
help help
Enable feature Fine Timing Measurement for calculating WiFi Round-Trip-Time (RTT). Enable feature Fine Timing Measurement for calculating WiFi Round-Trip-Time (RTT).
@ -368,7 +357,6 @@ config ESP32_WIFI_SOFTAP_SUPPORT
config ESP32_WIFI_MBEDTLS_CRYPTO config ESP32_WIFI_MBEDTLS_CRYPTO
bool "Use MbedTLS crypto APIs" bool "Use MbedTLS crypto APIs"
default n
select MBEDTLS_ECP_C select MBEDTLS_ECP_C
select MBEDTLS_ECDH_C select MBEDTLS_ECDH_C
select MBEDTLS_ECDSA_C select MBEDTLS_ECDSA_C
@ -382,7 +370,6 @@ config ESP32_WIFI_MBEDTLS_CRYPTO
config ESP32_WIFI_ENABLE_WPA3_SAE config ESP32_WIFI_ENABLE_WPA3_SAE
bool "WPA3-Personal" bool "WPA3-Personal"
default n
select ESP32_WIFI_MBEDTLS_CRYPTO select ESP32_WIFI_MBEDTLS_CRYPTO
help help
Select this option to allow the device to establish a WPA3-Personal connection. Select this option to allow the device to establish a WPA3-Personal connection.
@ -403,7 +390,6 @@ config ESP32_WIFI_ENABLE_SAE_PK
config ESP32_WIFI_DEBUG_PRINT config ESP32_WIFI_DEBUG_PRINT
bool "Print debug messages from WPA Supplicant" bool "Print debug messages from WPA Supplicant"
default n
help help
Select this option to print logging information from WPA supplicant, Select this option to print logging information from WPA supplicant,
this includes handshake information and key hex dumps depending this includes handshake information and key hex dumps depending

View file

@ -48,6 +48,16 @@ config ESP32_PHY_MAX_TX_POWER
Set maximum transmit power for Wi-Fi radio. Actual transmit power for high Set maximum transmit power for Wi-Fi radio. Actual transmit power for high
data rates may be lower than this setting. data rates may be lower than this setting.
config ESP32_SW_COEXIST_ENABLE
bool "Software controls Wi-Fi/Bluetooth coexistence"
default y if (BT_ESP32 && WIFI_ESP32)
help
If enabled, Wi-Fi & Bluetooth coexistence is controlled by software rather than hardware.
Recommended for heavy traffic scenarios. Both coexistence configuration options are
automatically managed, no user intervention is required.
If only Bluetooth is used, it is recommended to disable this option to reduce binary file
size.
endif endif
rsource "Kconfig.amp" rsource "Kconfig.amp"

View file

@ -443,6 +443,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -948,6 +949,7 @@ SECTIONS
#ifndef CONFIG_ESP32_WIFI_IRAM_OPT #ifndef CONFIG_ESP32_WIFI_IRAM_OPT
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif #endif
#ifndef CONFIG_ESP32_WIFI_RX_IRAM_OPT #ifndef CONFIG_ESP32_WIFI_RX_IRAM_OPT

View file

@ -319,7 +319,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*) *libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -652,6 +652,7 @@ SECTIONS
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif /* CONFIG_ESP32_WIFI_IRAM_OPT */ #endif /* CONFIG_ESP32_WIFI_IRAM_OPT */
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

View file

@ -413,7 +413,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*) *libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -751,6 +751,7 @@ SECTIONS
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif /* CONFIG_ESP32_WIFI_IRAM_OPT */ #endif /* CONFIG_ESP32_WIFI_IRAM_OPT */
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

View file

@ -430,7 +430,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*) *libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -778,6 +778,7 @@ SECTIONS
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.* .wifi_extra_iram.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif /* CONFIG_ESP32_WIFI_IRAM_OPT */ #endif /* CONFIG_ESP32_WIFI_IRAM_OPT */
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

View file

@ -450,7 +450,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*) *libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -852,7 +852,7 @@ SECTIONS
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif #endif
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

View file

@ -458,7 +458,7 @@ SECTIONS
#if defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:(.wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.*) *libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
/* [mapping:esp_wifi] */ /* [mapping:esp_wifi] */
*(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper) *(.literal.wifi_clock_enable_wrapper .text.wifi_clock_enable_wrapper)
@ -848,6 +848,7 @@ SECTIONS
#if !defined(CONFIG_ESP32_WIFI_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_IRAM_OPT)
*libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*) *libnet80211.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiextrairam .wifiextrairam.*)
*libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*) *libpp.a:( .wifi0iram .wifi0iram.* .wifislpiram .wifislpiram.* .wifiorslpiram .wifiorslpiram.* .wifiextrairam .wifiextrairam.*)
*libcoexist.a:(.wifi_slp_iram .wifi_slp_iram.* .coexiram .coexiram.* .coexsleepiram .coexsleepiram.*)
#endif #endif
#if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT) #if !defined(CONFIG_ESP32_WIFI_RX_IRAM_OPT)

View file

@ -162,7 +162,7 @@ manifest:
groups: groups:
- hal - hal
- name: hal_espressif - name: hal_espressif
revision: fbbe8f22f34cadc43b69f9eb3fca10e301874e36 revision: 970156407d42c968c50d4b2e3c85c0c548bd9a9e
path: modules/hal/espressif path: modules/hal/espressif
west-commands: west/west-commands.yml west-commands: west/west-commands.yml
groups: groups: