From b73b697a6a496e333dd50c18e09f3c29cb54b6f4 Mon Sep 17 00:00:00 2001 From: Pragaspathi Thilagaraj Date: Sun, 2 Dec 2018 22:47:29 +0530 Subject: [PATCH] qcacld-3.0: Remove legacy powersave ini and refactor to mlme component Add the functionality changes to replace the legacy powersave parameters corresponding to the ini values that were converged. Remove the legacy powersave ini items. Change-Id: I1da9af9aac4a02a16dc22a43f7f9d526e196d599 CRs-Fixed: 2364964 --- mlme/dispatcher/inc/wlan_mlme_api.h | 77 +++++++++++++++ mlme/dispatcher/inc/wlan_mlme_ucfg_api.h | 114 +++++++++++++++++++++++ mlme/dispatcher/src/wlan_mlme_api.c | 109 ++++++++++++++++++++++ 3 files changed, 300 insertions(+) diff --git a/mlme/dispatcher/inc/wlan_mlme_api.h b/mlme/dispatcher/inc/wlan_mlme_api.h index 14e2483d6c..cdbe3acffa 100644 --- a/mlme/dispatcher/inc/wlan_mlme_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_api.h @@ -1973,4 +1973,81 @@ wlan_mlme_get_mcc_feature(struct wlan_objmgr_psoc *psoc, */ QDF_STATUS wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc, bool *value); + +/* + * wlan_mlme_get_dtim_selection_diversity() - get dtim selection diversity + * bitmap + * @psoc: pointer to psoc object + * @dtim_selection_div: value that is requested by the caller + * This function gets the dtim selection diversity bitmap to be + * sent to the firmware + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_get_dtim_selection_diversity(struct wlan_objmgr_psoc *psoc, + uint32_t *dtim_selection_div); + +/** + * wlan_mlme_get_bmps_min_listen_interval() - get beacon mode powersave + * minimum listen interval value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_get_bmps_min_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_get_bmps_max_listen_interval() - get beacon mode powersave + * maximum listen interval value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_get_bmps_max_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_get_auto_bmps_timer_value() - get bmps timer value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_get_auto_bmps_timer_value(struct wlan_objmgr_psoc *psoc, + uint32_t *value); + +/** + * wlan_mlme_is_bmps_enabled() - check if beacon mode powersave is + * enabled/disabled + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_is_bmps_enabled(struct wlan_objmgr_psoc *psoc, + bool *value); + +/** + * wlan_mlme_override_bmps_imps() - disable imps/bmps + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_override_bmps_imps(struct wlan_objmgr_psoc *psoc); + +/** + * wlan_mlme_is_imps_enabled() - check if idle mode powersave is + * enabled/disabled + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +QDF_STATUS wlan_mlme_is_imps_enabled(struct wlan_objmgr_psoc *psoc, + bool *value); + #endif /* _WLAN_MLME_API_H_ */ diff --git a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h index 4c40f589ac..03e726ce40 100644 --- a/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h +++ b/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h @@ -3219,4 +3219,118 @@ QDF_STATUS ucfg_wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc, QDF_STATUS ucfg_mlme_get_latency_enable(struct wlan_objmgr_psoc *psoc, bool *value); +/** + * ucfg_mlme_get_dtim_selection_diversity() - get dtim selection diversity + * bitmap + * @psoc: pointer to psoc object + * @dtim_selection_div: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_get_dtim_selection_diversity(struct wlan_objmgr_psoc *psoc, + uint32_t *dtim_selection_div) +{ + return wlan_mlme_get_dtim_selection_diversity(psoc, dtim_selection_div); +} + +/** + * ucfg_mlme_get_bmps_min_listen_interval() - get beacon mode powersave + * minimum listen interval value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_get_bmps_min_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_get_bmps_min_listen_interval(psoc, value); +} + +/** + * ucfg_mlme_get_bmps_max_listen_interval() - get beacon mode powersave + * maximum listen interval value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_get_bmps_max_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_get_bmps_max_listen_interval(psoc, value); +} + +/** + * ucfg_mlme_get_auto_bmps_timer_value() - get bmps timer value + * minimum listen interval value + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_get_auto_bmps_timer_value(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + return wlan_mlme_get_auto_bmps_timer_value(psoc, value); +} + +/** + * ucfg_mlme_is_bmps_enabled() - check if beacon mode powersave is + * enabled/disabled + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_is_bmps_enabled(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_is_bmps_enabled(psoc, value); +} + +/** + * ucfg_mlme_is_imps_enabled() - check if idle mode powersave is + * enabled/disabled + * @psoc: pointer to psoc object + * @value: value that is requested by the caller + * + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_is_imps_enabled(struct wlan_objmgr_psoc *psoc, bool *value) +{ + return wlan_mlme_is_imps_enabled(psoc, value); +} + +/** + * ucfg_mlme_override_bmps_imps() - disable imps/bmps as part of + * override to disable all ps features + * @psoc: pointer to psoc object + * Inline UCFG API to be used by HDD/OSIF callers + * + * Return: QDF_STATUS_SUCCESS - in case of success + */ +static inline QDF_STATUS +ucfg_mlme_override_bmps_imps(struct wlan_objmgr_psoc *psoc) +{ + return wlan_mlme_override_bmps_imps(psoc); +} + #endif /* _WLAN_MLME_UCFG_API_H_ */ diff --git a/mlme/dispatcher/src/wlan_mlme_api.c b/mlme/dispatcher/src/wlan_mlme_api.c index 8247025d11..241ba24018 100644 --- a/mlme/dispatcher/src/wlan_mlme_api.c +++ b/mlme/dispatcher/src/wlan_mlme_api.c @@ -2876,6 +2876,54 @@ QDF_STATUS wlan_mlme_is_sap_uapsd_enabled(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_SUCCESS; } +QDF_STATUS wlan_mlme_get_dtim_selection_diversity(struct wlan_objmgr_psoc *psoc, + uint32_t *dtim_selection_div) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *dtim_selection_div = cfg_default(CFG_DTIM_SELECTION_DIVERSITY); + return QDF_STATUS_E_FAILURE; + } + + *dtim_selection_div = mlme_obj->cfg.ps_params.dtim_selection_diversity; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_get_bmps_min_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *value = cfg_default(CFG_BMPS_MINIMUM_LI); + return QDF_STATUS_E_FAILURE; + } + + *value = mlme_obj->cfg.ps_params.bmps_min_listen_interval; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_get_bmps_max_listen_interval(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *value = cfg_default(CFG_BMPS_MAXIMUM_LI); + return QDF_STATUS_E_FAILURE; + } + + *value = mlme_obj->cfg.ps_params.bmps_max_listen_interval; + + return QDF_STATUS_SUCCESS; +} + QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc, bool value) { @@ -2900,6 +2948,67 @@ QDF_STATUS wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc, return QDF_STATUS_E_FAILURE; *value = mlme_obj->cfg.rrm_config.rrm_enabled; + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_get_auto_bmps_timer_value(struct wlan_objmgr_psoc *psoc, + uint32_t *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *value = cfg_default(CFG_AUTO_BMPS_ENABLE_TIMER); + return QDF_STATUS_E_FAILURE; + } + + *value = mlme_obj->cfg.ps_params.auto_bmps_timer_val; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_is_bmps_enabled(struct wlan_objmgr_psoc *psoc, + bool *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *value = cfg_default(CFG_ENABLE_PS); + return QDF_STATUS_E_FAILURE; + } + + *value = mlme_obj->cfg.ps_params.is_bmps_enabled; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_is_imps_enabled(struct wlan_objmgr_psoc *psoc, + bool *value) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) { + *value = cfg_default(CFG_ENABLE_IMPS); + return QDF_STATUS_E_FAILURE; + } + + *value = mlme_obj->cfg.ps_params.is_imps_enabled; + + return QDF_STATUS_SUCCESS; +} + +QDF_STATUS wlan_mlme_override_bmps_imps(struct wlan_objmgr_psoc *psoc) +{ + struct wlan_mlme_psoc_obj *mlme_obj; + + mlme_obj = mlme_get_psoc_obj(psoc); + if (!mlme_obj) + return QDF_STATUS_E_FAILURE; + + mlme_obj->cfg.ps_params.is_imps_enabled = 0; + mlme_obj->cfg.ps_params.is_bmps_enabled = 0; return QDF_STATUS_SUCCESS; }