浏览代码

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
Pragaspathi Thilagaraj 6 年之前
父节点
当前提交
b73b697a6a
共有 3 个文件被更改,包括 300 次插入0 次删除
  1. 77 0
      mlme/dispatcher/inc/wlan_mlme_api.h
  2. 114 0
      mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
  3. 109 0
      mlme/dispatcher/src/wlan_mlme_api.c

+ 77 - 0
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_ */

+ 114 - 0
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_ */

+ 109 - 0
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;
 }