diff --git a/components/esp_wifi/CMakeLists.txt b/components/esp_wifi/CMakeLists.txt index e20f4cd9e0b..a8582b9edbf 100644 --- a/components/esp_wifi/CMakeLists.txt +++ b/components/esp_wifi/CMakeLists.txt @@ -60,7 +60,7 @@ idf_component_register(SRCS "${srcs}" INCLUDE_DIRS "include" "include/local" "wifi_apps/include" "wifi_apps/nan_app/include" REQUIRES esp_event esp_phy esp_netif - PRIV_REQUIRES esptool_py esp_pm esp_timer nvs_flash + PRIV_REQUIRES esptool_py esp_pm esp_timer nvs_flash efuse wpa_supplicant hal lwip esp_coex PRIV_INCLUDE_DIRS ../wpa_supplicant/src/ ../wpa_supplicant/esp_supplicant/src/ wifi_apps/roaming_app/include wifi_apps/roaming_app/src diff --git a/components/esp_wifi/esp32c5/esp_adapter.c b/components/esp_wifi/esp32c5/esp_adapter.c index 157ead0c8e9..3d3030f2d09 100644 --- a/components/esp_wifi/esp32c5/esp_adapter.c +++ b/components/esp_wifi/esp32c5/esp_adapter.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -641,6 +641,11 @@ static void esp_phy_disable_wrapper(void) esp_phy_disable(PHY_MODEM_WIFI); } +static bool esp_wifi_disable_ac_ax_wrapper(void) +{ + return false; // disable 11ac and 11ax is not supported on esp32c5. +} + wifi_osi_funcs_t g_wifi_osi_funcs = { ._version = ESP_WIFI_OS_ADAPTER_VERSION, ._env_is_chip = esp_coex_common_env_is_chip_wrapper, @@ -764,5 +769,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = { ._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper, ._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper, ._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper, + ._wifi_disable_ac_ax = esp_wifi_disable_ac_ax_wrapper, ._magic = ESP_WIFI_OS_ADAPTER_MAGIC, }; diff --git a/components/esp_wifi/esp32c6/esp_adapter.c b/components/esp_wifi/esp32c6/esp_adapter.c index 07c46725f93..b5b805458cd 100644 --- a/components/esp_wifi/esp32c6/esp_adapter.c +++ b/components/esp_wifi/esp32c6/esp_adapter.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -579,6 +579,11 @@ static void *sleep_retention_find_link_by_id_wrapper(int id) } #endif +static bool esp_wifi_disable_ac_ax_wrapper(void) +{ + return false; // disable 11ac and 11ax is not supported on esp32c6. +} + wifi_osi_funcs_t g_wifi_osi_funcs = { ._version = ESP_WIFI_OS_ADAPTER_VERSION, ._env_is_chip = esp_coex_common_env_is_chip_wrapper, @@ -702,5 +707,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = { ._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper, ._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper, ._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper, + ._wifi_disable_ac_ax = esp_wifi_disable_ac_ax_wrapper, ._magic = ESP_WIFI_OS_ADAPTER_MAGIC, }; diff --git a/components/esp_wifi/esp32c61/esp_adapter.c b/components/esp_wifi/esp32c61/esp_adapter.c index 9f8555c76c5..f62435ef0d4 100644 --- a/components/esp_wifi/esp32c61/esp_adapter.c +++ b/components/esp_wifi/esp32c61/esp_adapter.c @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2022-2025 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2022-2026 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -40,6 +40,8 @@ #include "esp_private/periph_ctrl.h" #include "esp_private/esp_clk.h" #include "nvs.h" +#include "esp_efuse.h" +#include "esp_efuse_table.h" #include "os.h" #include "esp_smartconfig.h" #ifdef CONFIG_ESP_COEX_ENABLED @@ -641,6 +643,11 @@ static void esp_phy_disable_wrapper(void) esp_phy_disable(PHY_MODEM_WIFI); } +static bool esp_wifi_disable_ac_ax_wrapper(void) +{ + return esp_efuse_read_field_bit(ESP_EFUSE_DIS_WIFI6); +} + wifi_osi_funcs_t g_wifi_osi_funcs = { ._version = ESP_WIFI_OS_ADAPTER_VERSION, ._env_is_chip = esp_coex_common_env_is_chip_wrapper, @@ -764,5 +771,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = { ._coex_schm_flexible_period_set = coex_schm_flexible_period_set_wrapper, ._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper, ._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper, + ._wifi_disable_ac_ax = esp_wifi_disable_ac_ax_wrapper, ._magic = ESP_WIFI_OS_ADAPTER_MAGIC, }; 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 ad06dce03fd..caf5c7ad9ee 100644 --- a/components/esp_wifi/include/esp_private/wifi_os_adapter.h +++ b/components/esp_wifi/include/esp_private/wifi_os_adapter.h @@ -156,6 +156,9 @@ typedef struct wifi_osi_funcs_t { int (*_coex_schm_flexible_period_set)(uint8_t); uint8_t (*_coex_schm_flexible_period_get)(void); void * (*_coex_schm_get_phase_by_idx)(int); +#if CONFIG_SOC_WIFI_HE_SUPPORT + bool (*_wifi_disable_ac_ax)(void); +#endif int32_t _magic; } wifi_osi_funcs_t;