From d51ed40487d23163504b556b2bb076648cce43c5 Mon Sep 17 00:00:00 2001 From: Li Shuai Date: Wed, 12 May 2021 17:00:01 +0800 Subject: [PATCH] modem sleep: optimize wifi station modem sleep percentage --- components/esp_wifi/Kconfig | 5 ++--- components/esp_wifi/src/wifi_init.c | 28 ++++++++++++++-------------- 2 files changed, 16 insertions(+), 17 deletions(-) diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index 7f518032c3..010e42e9fc 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -323,7 +323,6 @@ menu "Wi-Fi" config ESP_WIFI_SLP_IRAM_OPT bool "WiFi SLP IRAM speed optimization" - depends on FREERTOS_USE_TICKLESS_IDLE select PM_SLP_DEFAULT_PARAMS_OPT help Select this option to place called Wi-Fi library TBTT process and receive beacon functions in IRAM. @@ -336,7 +335,7 @@ menu "Wi-Fi" config ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME int "Minimum active time" range 8 60 - default 8 + default 50 depends on ESP_WIFI_SLP_IRAM_OPT help The minimum timeout for waiting to receive data, unit: milliseconds. @@ -344,7 +343,7 @@ menu "Wi-Fi" config ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME int "Maximum keep alive time" range 10 60 - default 60 + default 10 depends on ESP_WIFI_SLP_IRAM_OPT help The maximum time that wifi keep alive, unit: seconds. diff --git a/components/esp_wifi/src/wifi_init.c b/components/esp_wifi/src/wifi_init.c index 7fa30b9a83..2b00a04282 100644 --- a/components/esp_wifi/src/wifi_init.c +++ b/components/esp_wifi/src/wifi_init.c @@ -146,15 +146,15 @@ esp_err_t esp_wifi_deinit(void) #if CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER tcpip_adapter_clear_default_wifi_handlers(); #endif +#if CONFIG_ESP_WIFI_SLP_IRAM_OPT + esp_pm_unregister_light_sleep_default_params_config_callback(); +#endif #if CONFIG_FREERTOS_USE_TICKLESS_IDLE #if SOC_WIFI_HW_TSF esp_pm_unregister_skip_light_sleep_callback(esp_wifi_internal_is_tsf_active); esp_pm_unregister_inform_out_light_sleep_overhead_callback(esp_wifi_internal_update_light_sleep_wake_ahead_time); esp_sleep_disable_wifi_wakeup(); #endif -#if CONFIG_ESP_WIFI_SLP_IRAM_OPT - esp_pm_unregister_light_sleep_default_params_config_callback(); -#endif #endif #if CONFIG_MAC_BB_PD esp_unregister_mac_bb_pd_callback(pm_mac_sleep); @@ -214,17 +214,6 @@ esp_err_t esp_wifi_init(const wifi_init_config_t *config) } #endif -#if CONFIG_FREERTOS_USE_TICKLESS_IDLE -#if CONFIG_MAC_BB_PD - if (esp_register_mac_bb_pd_callback(pm_mac_sleep) != ESP_OK - || esp_register_mac_bb_pu_callback(pm_mac_wakeup) != ESP_OK) { - - esp_unregister_mac_bb_pd_callback(pm_mac_sleep); - esp_unregister_mac_bb_pu_callback(pm_mac_wakeup); - return ESP_ERR_INVALID_ARG; - } -#endif - #if CONFIG_ESP_WIFI_SLP_IRAM_OPT esp_pm_register_light_sleep_default_params_config_callback(esp_wifi_internal_update_light_sleep_default_params); @@ -239,6 +228,17 @@ esp_err_t esp_wifi_init(const wifi_init_config_t *config) esp_wifi_set_keep_alive_time(keep_alive_time_us); #endif +#if CONFIG_FREERTOS_USE_TICKLESS_IDLE +#if CONFIG_MAC_BB_PD + if (esp_register_mac_bb_pd_callback(pm_mac_sleep) != ESP_OK + || esp_register_mac_bb_pu_callback(pm_mac_wakeup) != ESP_OK) { + + esp_unregister_mac_bb_pd_callback(pm_mac_sleep); + esp_unregister_mac_bb_pu_callback(pm_mac_wakeup); + return ESP_ERR_INVALID_ARG; + } +#endif + #if SOC_WIFI_HW_TSF esp_err_t ret = esp_pm_register_skip_light_sleep_callback(esp_wifi_internal_is_tsf_active); if (ret != ESP_OK) {