feat(wifi): support disable 11ac and 11ax in efuse

This commit is contained in:
yinqingzhao
2026-05-07 12:27:46 +08:00
parent 37ff5a8ea8
commit be8bc4f247
7 changed files with 34 additions and 5 deletions
+1 -1
View File
@@ -79,7 +79,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 esp_pm esp_timer nvs_flash
PRIV_REQUIRES 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
+7 -1
View File
@@ -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,
};
+7 -1
View File
@@ -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,
};
+9 -1
View File
@@ -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,
};
@@ -650,6 +650,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 esp32s31.
}
wifi_osi_funcs_t g_wifi_osi_funcs = {
._version = ESP_WIFI_OS_ADAPTER_VERSION,
._env_is_chip = esp_coex_common_env_is_chip_wrapper,
@@ -774,5 +779,6 @@ wifi_osi_funcs_t g_wifi_osi_funcs = {
._coex_schm_flexible_period_get = coex_schm_flexible_period_get_wrapper,
._coex_schm_get_phase_by_idx = coex_schm_get_phase_by_idx_wrapper,
._coex_configure_preemption_end_cb = coex_configure_preemption_end_cb_wrapper,
._wifi_disable_ac_ax = esp_wifi_disable_ac_ax_wrapper,
._magic = ESP_WIFI_OS_ADAPTER_MAGIC,
};
@@ -158,6 +158,9 @@ typedef struct wifi_osi_funcs_t {
void * (*_coex_schm_get_phase_by_idx)(int);
#if CONFIG_IDF_TARGET_ESP32S31
int (* _coex_configure_preemption_end_cb)(bool is_register, int(*cb)(uint32_t));
#endif
#if CONFIG_SOC_WIFI_HE_SUPPORT
bool (*_wifi_disable_ac_ax)(void);
#endif
int32_t _magic;
} wifi_osi_funcs_t;