diff --git a/components/esp_rom/esp32c2/ld/esp32c2.rom.eco4.ld b/components/esp_rom/esp32c2/ld/esp32c2.rom.eco4.ld index d35efbeca4..40dc9cfda1 100644 --- a/components/esp_rom/esp32c2/ld/esp32c2.rom.eco4.ld +++ b/components/esp_rom/esp32c2/ld/esp32c2.rom.eco4.ld @@ -56,7 +56,7 @@ lmac_stop_hw_txq = 0x40001df8; ppTxFragmentProc = 0x40001e08; esf_buf_setup = 0x40001e0c; hal_crypto_set_key_entry = 0x40001e18; -pm_start = 0x40001e34; +/*pm_start = 0x40001e34;*/ pm_stop = 0x40001e38; hal_set_sta_tbtt = 0x40001e4c; //pm_update_next_tbtt = 0x40001e50; @@ -65,7 +65,7 @@ pm_set_sleep_type = 0x40001e54; //pm_tx_data_process = 0x40001eb4; /*pm_attach = 0x40001eb8;*/ /*pm_coex_schm_process = 0x40001ebc;*/ -pm_on_probe_resp_rx = 0x40001ecc; +/*pm_on_probe_resp_rx = 0x40001ecc;*/ pm_send_probe_stop = 0x40001edc; hal_sniffer_rx_set_promis = 0x40001ef4; hal_sniffer_set_promis_misc_pkt = 0x40001efc; @@ -183,7 +183,7 @@ hal_get_time_to_sta_next_tbtt = 0x4000303c; pm_scale_listen_interval = 0x40003040; pm_beacon_monitor_tbtt_start = 0x40003044; pm_beacon_monitor_tbtt_stop = 0x40003048; -pm_beacon_monitor_timeout_process = 0x4000304c; +/*pm_beacon_monitor_timeout_process = 0x4000304c;*/ pm_beacon_monitor_tbtt_timeout_process = 0x40003050; pm_on_tsf_timer = 0x40003054; pp_coex_tx_release = 0x40003058; @@ -191,26 +191,26 @@ ppRegressAmpdu = 0x4000305c; trc_onPPTxDone = 0x40003060; is_fragmented_pkt = 0x40003064; pm_tx_null_data_done_quick_wake_process = 0x40003068; -pm_enable_beacon_monitor_timer = 0x4000306c; +/*pm_enable_beacon_monitor_timer = 0x4000306c;*/ pm_disable_beacon_monitor_timer = 0x40003070; -pm_beacon_offset_get_average = 0x40003074; +/*pm_beacon_offset_get_average = 0x40003074; pm_beacon_offset_get_expect = 0x40003078; pm_beacon_offset_get_params = 0x4000307c; -pm_beacon_offset_sample_start = 0x40003080; +pm_beacon_offset_sample_start = 0x40003080;*/ pm_beacon_offset_sample = 0x40003084; -pm_beacon_offset_reset = 0x40003088; +/*pm_beacon_offset_reset = 0x40003088;*/ pm_beacon_offset_is_sampling = 0x4000308c; pm_beacon_offset_is_enabled = 0x40003090; -pm_beacon_offset_configure = 0x40003094; +/*pm_beacon_offset_configure = 0x40003094;*/ pm_beacon_offset_resample_timeout_process = 0x40003098; -pm_beacon_offset_set_rx_beacon_standard = 0x4000309c; -pm_beacon_offset_get_rx_beacon_success_rate = 0x400030a0; +/*pm_beacon_offset_set_rx_beacon_standard = 0x4000309c;*/ +/*pm_beacon_offset_get_rx_beacon_success_rate = 0x400030a0;*/ pm_beacon_offset_add_total_counter = 0x400030a4; pm_beacon_offset_add_loss_counter = 0x400030a8; -pm_beacon_offset_check = 0x400030ac; -pm_beacon_offset_init = 0x400030b0; +/*pm_beacon_offset_check = 0x400030ac;*/ +/*pm_beacon_offset_init = 0x400030b0;*/ pm_beacon_offset_deinit = 0x400030b4; -pm_get_tbtt_count = 0x400030b8; +/*pm_get_tbtt_count = 0x400030b8;*/ pm_coex_schm_overall_period_get = 0x400030bc; pm_coex_pwr_update = 0x400030c0; /* Data (.data, .bss, .rodata) */ diff --git a/components/esp_rom/esp32c2/ld/esp32c2.rom.ld b/components/esp_rom/esp32c2/ld/esp32c2.rom.ld index a2855e2cf5..08c1d4a7dd 100644 --- a/components/esp_rom/esp32c2/ld/esp32c2.rom.ld +++ b/components/esp_rom/esp32c2/ld/esp32c2.rom.ld @@ -568,7 +568,7 @@ ppResortTxAMPDU = 0x40001c20; ppResumeTxAMPDU = 0x40001c24; /*ppRxFragmentProc = 0x40001c28;*/ /* ppRxPkt = 0x40001c2c; */ -ppRxProtoProc = 0x40001c30; +/* ppRxProtoProc = 0x40001c30; */ ppSearchTxQueue = 0x40001c34; ppSearchTxframe = 0x40001c38; ppSelectNextQueue = 0x40001c3c; diff --git a/components/esp_rom/esp32c3/ld/esp32c3.rom.ld b/components/esp_rom/esp32c3/ld/esp32c3.rom.ld index 5b1804c435..80b1445ae2 100644 --- a/components/esp_rom/esp32c3/ld/esp32c3.rom.ld +++ b/components/esp_rom/esp32c3/ld/esp32c3.rom.ld @@ -755,7 +755,7 @@ ppResortTxAMPDU = 0x400016fc; ppResumeTxAMPDU = 0x40001700; /* ppRxFragmentProc = 0x40001704; */ /* ppRxPkt = 0x40001708; */ -ppRxProtoProc = 0x4000170c; +/* ppRxProtoProc = 0x4000170c; */ ppSearchTxQueue = 0x40001710; ppSearchTxframe = 0x40001714; ppSelectNextQueue = 0x40001718; diff --git a/components/esp_rom/esp32c5/ld/esp32c5.rom.pp.ld b/components/esp_rom/esp32c5/ld/esp32c5.rom.pp.ld index cba31c7178..61c3d9d6a6 100644 --- a/components/esp_rom/esp32c5/ld/esp32c5.rom.pp.ld +++ b/components/esp_rom/esp32c5/ld/esp32c5.rom.pp.ld @@ -156,11 +156,11 @@ pm_beacon_monitor_tbtt_timeout_process = 0x40000e00; /*pm_update_next_tbtt = 0x40000e04;*/ pm_twt_disallow_tx = 0x40000e08; pm_clear_wakeup_signal = 0x40000e0c; -pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000e10; +/*pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000e10; pm_mac_disable_tsf_tbtt_modem_wakeup = 0x40000e14; pm_mac_enable_tsf_tbtt_soc_wakeup = 0x40000e18; pm_mac_enable_tsf_tbtt_modem_wakeup = 0x40000e1c; -pm_mac_modem_params_rt_update = 0x40000e20; +pm_mac_modem_params_rt_update = 0x40000e20;*/ pm_update_at_next_beacon = 0x40000e24; tbtt_adaptive_setup = 0x40000e28; tbtt_adaptive_servo = 0x40000e2c; @@ -187,8 +187,8 @@ ppRecycleRxPkt = 0x40000e7c; ppResortTxAMPDU = 0x40000e80; ppResumeTxAMPDU = 0x40000e84; ppRxFragmentProc = 0x40000e88; -/*ppRxPkt = 0x40000e8c;*/ -ppRxProtoProc = 0x40000e90; +/* ppRxPkt = 0x40000e8c; */ +/* ppRxProtoProc = 0x40000e90; */ ppSearchTxQueue = 0x40000e94; ppSearchTxframe = 0x40000e98; ppSelectNextQueue = 0x40000e9c; @@ -338,7 +338,7 @@ get_sublen_offset = 0x400010d8; pm_coex_schm_overall_period_get = 0x40001504; ppRemoveHEAMPDUflags = 0x4000150c; tsf_hal_get_tbtt_interval = 0x40001510; -pm_get_tbtt_count = 0x4000151c; +/*pm_get_tbtt_count = 0x4000151c;*/ tsf_hal_get_time = 0x40001520; tsf_hal_get_counter_value = 0x40001524; /* Data (.data, .bss, .rodata) */ diff --git a/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld b/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld index 7ff2770e50..0465d92762 100644 --- a/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld +++ b/components/esp_rom/esp32c6/ld/esp32c6.rom.pp.ld @@ -102,7 +102,7 @@ ppRecycleRxPkt = 0x40000d14; ppResumeTxAMPDU = 0x40000d1c; /*ppRxFragmentProc = 0x40000d20;*/ //ppRxPkt = 0x40000d24; -ppRxProtoProc = 0x40000d28; +//ppRxProtoProc = 0x40000d28; ppSearchTxQueue = 0x40000d2c; ppSearchTxframe = 0x40000d30; ppSelectNextQueue = 0x40000d34; diff --git a/components/esp_rom/esp32c61/ld/esp32c61.rom.pp.ld b/components/esp_rom/esp32c61/ld/esp32c61.rom.pp.ld index 31ab72872b..f1c676d96e 100644 --- a/components/esp_rom/esp32c61/ld/esp32c61.rom.pp.ld +++ b/components/esp_rom/esp32c61/ld/esp32c61.rom.pp.ld @@ -160,11 +160,11 @@ pm_beacon_monitor_tbtt_timeout_process = 0x40000d6c; pm_update_next_tbtt = 0x40000d70; pm_twt_disallow_tx = 0x40000d74; pm_clear_wakeup_signal = 0x40000d78; -pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000d7c; +/*pm_mac_disable_tsf_tbtt_soc_wakeup = 0x40000d7c; pm_mac_disable_tsf_tbtt_modem_wakeup = 0x40000d80; pm_mac_enable_tsf_tbtt_soc_wakeup = 0x40000d84; pm_mac_enable_tsf_tbtt_modem_wakeup = 0x40000d88; -pm_mac_modem_params_rt_update = 0x40000d8c; +pm_mac_modem_params_rt_update = 0x40000d8c;*/ pm_update_at_next_beacon = 0x40000d90; pm_get_null_max_tx_time = 0x40000d94; pm_coex_schm_overall_period_get = 0x40000d98; diff --git a/components/esp_rom/esp32s3/ld/esp32s3.rom.ld b/components/esp_rom/esp32s3/ld/esp32s3.rom.ld index c3799fb4cf..3f728168ca 100644 --- a/components/esp_rom/esp32s3/ld/esp32s3.rom.ld +++ b/components/esp_rom/esp32s3/ld/esp32s3.rom.ld @@ -1010,7 +1010,7 @@ ppResortTxAMPDU = 0x40005634; ppResumeTxAMPDU = 0x40005640; /* ppRxFragmentProc = 0x4000564c; */ /* ppRxPkt = 0x40005658; */ -ppRxProtoProc = 0x40005664; +/* ppRxProtoProc = 0x40005664; */ ppSearchTxQueue = 0x40005670; ppSearchTxframe = 0x4000567c; ppSelectNextQueue = 0x40005688; diff --git a/components/esp_wifi/Kconfig b/components/esp_wifi/Kconfig index eded761a34..12bb27c372 100644 --- a/components/esp_wifi/Kconfig +++ b/components/esp_wifi/Kconfig @@ -462,8 +462,9 @@ menu "Wi-Fi" 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. + Maximum number of consecutive lost beacons allowed, the WiFi Rx state behaviour + will be determined by ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_POLICY + 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" @@ -483,6 +484,77 @@ menu "Wi-Fi" 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. + choice ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_POLICY + prompt "Beacon strategy when beacon loss exceeds threshold" + depends on ESP_WIFI_SLP_BEACON_LOST_OPT + default ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_AUTO + help + Select the strategy to apply when the number of lost beacons exceeds the threshold. + + - "Receive beacon": Keep RF on until a beacon is successfully received. + + - "Drop beacon": Turn off RF and skip beacon reception during this period. + + - "Auto": Beacon will been dropped only if ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE enabled + and expected rx beacon probability stays below the standard. + + config ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_RECEIVE + bool "Receive beacon" + config ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_DROP + bool "Drop beacon" + config ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_AUTO + bool "Auto" + endchoice + + config ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + bool "Sample beacon to calculate beacon offset" + default n + depends on ESP_WIFI_SLP_BEACON_LOST_OPT && !ESP_WIFI_ENHANCED_LIGHT_SLEEP + help + Select to enable feature sampling beacons to calculate beacon offset. + + menu "Beacon Sample Configuration Options" + visible if ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + config ESP_WIFI_SLP_SAMPLE_BEACON_COUNT + int "Sample beacons at wifi connected to adjust beacon parameters" + range 100 1200 + default 300 + depends on ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + help + Numble of sampled beacons at wifi connected to adjust beacon parameters. + + config ESP_WIFI_SLP_SAMPLE_BEACON_DIFFERENCE_PERCENT + int "Difference percentage triggers unstable event" + range 0 100 + default 20 + depends on ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + help + Difference triggers event WIFI_EVENT_STA_BEACON_OFFSET_UNSTABLE + when the actual rx beacon probability continuously falls below + the expected probability by this value. + unit: percentage + + config ESP_WIFI_SLP_SAMPLE_BEACON_STANDARD_PERCENT + int "Standard percentage triggers beacon drop" + range 0 100 + default 55 + depends on ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + help + Standard triggers beacon drop when the expected rx beacon probability + falls below this value under ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_AUTO mode. + unit: percentage + + config ESP_WIFI_SLP_SAMPLE_BEACON_RESAMPLE_PERIOD + int "Resample period" + range 0 255 + default 3 + depends on ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + help + Resample period if beacon drop is active under ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_AUTO mode. + It means never resample if setting this value to 0. + unit: hours + endmenu # "Beacon Sample Configuration Options" + config ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM int "Maximum espnow encrypt peers number" range 0 4 if IDF_TARGET_ESP32C2 diff --git a/components/esp_wifi/include/esp_private/wifi.h b/components/esp_wifi/include/esp_private/wifi.h index ca7d636454..e7c210d00f 100644 --- a/components/esp_wifi/include/esp_private/wifi.h +++ b/components/esp_wifi/include/esp_private/wifi.h @@ -790,6 +790,24 @@ esp_err_t esp_wifi_disconnect_internal(void); */ uint32_t esp_wifi_internal_get_mac_clock_time(void); +#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE +/** + * @brief Configure wifi beacon offset default parameters + * + * @param config: the configuration parameters for wifi beacon offset + * + * @return + * - ESP_OK: succeed + * - others: failed + */ +esp_err_t esp_wifi_beacon_offset_configure(wifi_beacon_offset_config_t *config); +#endif + +/** + * @brief empty init pm_beacon_offset. + */ +void pm_beacon_offset_funcs_empty_init(void); + #ifdef __cplusplus } #endif diff --git a/components/esp_wifi/include/esp_private/wifi_types.h b/components/esp_wifi/include/esp_private/wifi_types.h index 22fee86b0e..76b679a3d9 100644 --- a/components/esp_wifi/include/esp_private/wifi_types.h +++ b/components/esp_wifi/include/esp_private/wifi_types.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2015-2024 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2015-2025 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -41,6 +41,16 @@ typedef struct { } data; /**< Configuration of ioctl command */ } wifi_ioctl_config_t; +/** + * @brief Mode for WiFi beacon drop + * + */ +typedef enum { + WIFI_BEACON_DROP_DISABLED, + WIFI_BEACON_DROP_AUTO, + WIFI_BEACON_DROP_FORCED, +} wifi_beacon_drop_t; + /** * @brief WiFi beacon monitor parameter configuration * @@ -59,8 +69,22 @@ typedef struct { 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_drop_t beacon_drop; /**< Whether to drop the beacon if the beacon lost exceeds loss_threshold */ } wifi_beacon_monitor_config_t; +/** + * @brief WiFi beacon sample parameter configuration + * + */ +typedef struct { + uint16_t sample_period; /**< Sample beacon period, unit: number of beacons */ + uint8_t resample_period; /**< Resample period if beacon drop is active under the auto mode, unit: hours */ + /**< Standard triggers beacon drop when the expected rx beacon probability falls below this value under the auto mode, unit: percentage */ + uint8_t standard; + /**< Difference triggers an unstable event when the actual rx beacon probability continuously falls below the expected probability by this value, unit: percentage */ + uint8_t difference; +} wifi_beacon_offset_config_t; + #ifdef __cplusplus } #endif diff --git a/components/esp_wifi/include/esp_wifi.h b/components/esp_wifi/include/esp_wifi.h index cd43eb1eb0..af2360f949 100644 --- a/components/esp_wifi/include/esp_wifi.h +++ b/components/esp_wifi/include/esp_wifi.h @@ -1840,6 +1840,21 @@ esp_err_t esp_wifi_action_tx_req(wifi_action_tx_req_t *req); * - ESP_FAIL: failed to perform roc operation */ esp_err_t esp_wifi_remain_on_channel(wifi_roc_req_t * req); + +#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE +/** + * @brief Sample numbers of beacons to calculate beacon parameters + * + * @attention This API should be called after station connected to AP. + * + * @return + * - ESP_OK: succeed + * - ESP_ERR_WIFI_NOT_INIT: WiFi is not initialized by esp_wifi_init + * - ESP_ERR_WIFI_NOT_STARTED: WiFi is not started by esp_wifi_start + */ +esp_err_t esp_wifi_beacon_offset_sample_beacon(void); +#endif + #ifdef __cplusplus } #endif diff --git a/components/esp_wifi/include/esp_wifi_types_generic.h b/components/esp_wifi/include/esp_wifi_types_generic.h index ea2f2aabe2..82667bf3bd 100644 --- a/components/esp_wifi/include/esp_wifi_types_generic.h +++ b/components/esp_wifi/include/esp_wifi_types_generic.h @@ -1110,6 +1110,7 @@ typedef enum { WIFI_EVENT_AP_WRONG_PASSWORD, /**< a station tried to connect with wrong password */ + WIFI_EVENT_STA_BEACON_OFFSET_UNSTABLE, /**< Station sampled beacon offset unstable */ WIFI_EVENT_MAX, /**< Invalid Wi-Fi event ID */ } wifi_event_t; @@ -1509,6 +1510,11 @@ typedef struct { typedef wifi_tx_info_t esp_80211_tx_info_t; +/** Argument structure for WIFI_EVENT_STA_BEACON_OFFSET_UNSTABLE event */ +typedef struct { + float beacon_success_rate; /**< Received beacon success rate */ +} wifi_event_sta_beacon_offset_unstable_t; + #ifdef __cplusplus } #endif diff --git a/components/esp_wifi/src/wifi_init.c b/components/esp_wifi/src/wifi_init.c index 3e2707f0a0..d1c298b2ff 100644 --- a/components/esp_wifi/src/wifi_init.c +++ b/components/esp_wifi/src/wifi_init.c @@ -64,6 +64,14 @@ static esp_pm_lock_handle_t s_wifi_modem_sleep_lock; wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL; #endif +#if CONFIG_ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_AUTO +#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_AUTO +#elif CONFIG_ESP_WIFI_SLP_BEACON_LOST_OVER_THRESHOLD_DROP +#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_FORCED +#else +#define ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE WIFI_BEACON_DROP_DISABLED +#endif + #if SOC_PM_SUPPORT_PMU_MODEM_STATE # define WIFI_BEACON_MONITOR_CONFIG_DEFAULT(ena) { \ .enable = (ena), \ @@ -75,7 +83,8 @@ wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL; .broadcast_wakeup = 1, \ .tsf_time_sync_deviation = 5, \ .modem_state_consecutive = 10, \ - .rf_ctrl_wait_cycle = 20 \ + .rf_ctrl_wait_cycle = 20, \ + .beacon_drop = ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE \ } #else # define WIFI_BEACON_MONITOR_CONFIG_DEFAULT(ena) { \ @@ -83,10 +92,18 @@ wifi_mac_time_update_cb_t s_wifi_mac_time_update_cb = NULL; .loss_timeout = CONFIG_ESP_WIFI_SLP_BEACON_LOST_TIMEOUT, \ .loss_threshold = CONFIG_ESP_WIFI_SLP_BEACON_LOST_THRESHOLD, \ .delta_intr_early = CONFIG_ESP_WIFI_SLP_PHY_ON_DELTA_EARLY_TIME, \ - .delta_loss_timeout = CONFIG_ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME \ + .delta_loss_timeout = CONFIG_ESP_WIFI_SLP_PHY_OFF_DELTA_TIMEOUT_TIME, \ + .beacon_drop = ESP_WIFI_SLP_BEACON_LOST_DROP_BEACON_MODE \ } #endif +#define WIFI_BEACON_OFFSET_CONFIG_DEFAULT(ena) { \ + .sample_period = (ena) ? CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_COUNT : 0, \ + .resample_period = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_RESAMPLE_PERIOD, \ + .standard = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_STANDARD_PERCENT, \ + .difference = CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_DIFFERENCE_PERCENT \ +} + static const char* TAG = "wifi_init"; static void __attribute__((constructor)) s_set_default_wifi_log_level(void) @@ -185,6 +202,11 @@ static esp_err_t wifi_deinit_internal(void) roam_deinit_app(); #endif +#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + wifi_beacon_offset_config_t offset_config = WIFI_BEACON_OFFSET_CONFIG_DEFAULT(false); + esp_wifi_beacon_offset_configure(&offset_config); +#endif + err = esp_wifi_deinit_internal(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to deinit Wi-Fi driver (0x%x)", err); @@ -460,6 +482,12 @@ esp_err_t esp_wifi_init(const wifi_init_config_t *config) wifi_beacon_monitor_config_t monitor_config = WIFI_BEACON_MONITOR_CONFIG_DEFAULT(true); esp_wifi_beacon_monitor_configure(&monitor_config); #endif + +#if CONFIG_ESP_WIFI_SLP_SAMPLE_BEACON_FEATURE + wifi_beacon_offset_config_t offset_config = WIFI_BEACON_OFFSET_CONFIG_DEFAULT(true); + esp_wifi_beacon_offset_configure(&offset_config); +#endif + adc2_cal_include(); //This enables the ADC2 calibration constructor at start up. esp_wifi_config_info(); @@ -702,5 +730,6 @@ void esp32c2_eco4_rom_ptr_init(void) void pm_beacon_offset_funcs_init(void) { /* Do not remove, stub to overwrite weak link in Wi-Fi Lib */ + pm_beacon_offset_funcs_empty_init(); } #endif