diff --git a/components/pmo/core/src/wlan_pmo_main.c b/components/pmo/core/src/wlan_pmo_main.c index c7c5102727..33b679878e 100644 --- a/components/pmo/core/src/wlan_pmo_main.c +++ b/components/pmo/core/src/wlan_pmo_main.c @@ -186,6 +186,8 @@ static void wlan_pmo_init_cfg(struct wlan_objmgr_psoc *psoc, psoc_cfg->sta_mod_dtim = cfg_get(psoc, CFG_PMO_ENABLE_MODULATED_DTIM); psoc_cfg->enable_mc_list = cfg_get(psoc, CFG_PMO_MC_ADDR_LIST_ENABLE); psoc_cfg->power_save_mode = cfg_get(psoc, CFG_PMO_POWERSAVE_MODE); + psoc_cfg->is_mod_dtim_on_sys_suspend_enabled = + cfg_get(psoc, CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND); psoc_cfg->default_power_save_mode = psoc_cfg->power_save_mode; psoc_cfg->max_ps_poll = cfg_get(psoc, CFG_PMO_MAX_PS_POLL); diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h index 91a337ad5c..3a9f1cb26d 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_common_cfg.h @@ -219,6 +219,34 @@ CFG_VALUE_OR_DEFAULT, \ "Optimized Power Management") +/* + * + * enable_mod_dtim_on_system_suspend - enable modulated DTIM + * on system suspend display off case + * @Min: 0 + * @Max: 1 + * @Default: 0 + * + * This ini is used to set modulated DTIM configuration: + * Current values of enable_mod_dtim_on_system_suspend: + * 0 -> Modulated DTIM will be enabled for every wow entry + * (RTPM wow + System suspend wow) + * 1 -> Enable modulated DTIM only for System suspend wow. + * For RTPM wow, the device will stay in DTIM 1 (non-modulated DTIM) + * + * Related: None + * + * Supported Feature: Modulated DTIM + * + * Usage: External + * + * + */ +#define CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND CFG_INI_BOOL( \ + "enable_mod_dtim_on_system_suspend", \ + 0, \ + "Modulated DTIM on System suspend wow") + /* * * gMaxPsPoll - Max powersave poll @@ -391,6 +419,7 @@ CFG(CFG_PMO_ACTIVE_MODE) \ CFG(CFG_PMO_PWR_FAILURE) \ CFG(CFG_PMO_WOW_DATA_INACTIVITY_TIMEOUT) \ - CFG(CFG_RA_RATE_LIMIT_INTERVAL) + CFG(CFG_RA_RATE_LIMIT_INTERVAL) \ + CFG(CFG_PMO_MOD_DTIM_ON_SYS_SUSPEND) #endif /* WLAN_PMO_COMMON_CFG_H__ */ diff --git a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h index 80c6d5716b..3e85676d7e 100644 --- a/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h +++ b/components/pmo/dispatcher/inc/wlan_pmo_common_public_struct.h @@ -305,6 +305,8 @@ enum active_apf_mode { * @active_mc_bc_apf_mode: Setting that determines how APF is applied in * active mode for MC/BC packets * @ito_repeat_count: Indicates ito repeated count + * @is_mod_dtim_on_sys_suspend_enabled: true when mod dtim is enabled for + * system suspend wow else false */ struct pmo_psoc_cfg { bool ptrn_match_enable_all_vdev; @@ -368,6 +370,7 @@ struct pmo_psoc_cfg { enum active_apf_mode active_uc_apf_mode; enum active_apf_mode active_mc_bc_apf_mode; uint8_t ito_repeat_count; + bool is_mod_dtim_on_sys_suspend_enabled; }; /**