Bläddra i källkod

qcacld-3.0: Add MLME CFG items of FE_WLM and FE_RRM

Add the following WLM and RRM ini configs to MLME
cfg:
CFG_LATENCY_ENABLE
CFG_LATENCY_LEVEL
CFG_LATENCY_FLAGS_NORMAL
CFG_LATENCY_FLAGS_MOD
CFG_LATENCY_FLAGS_LOW
CFG_LATENCY_FLAGS_ULTLOW
CFG_RRM_ENABLE
CFG_RRM_MEAS_RAND_INTVL
CFG_RM_CAPABILITY

Change-Id: I714aca1e9bc6d3c330934753364d7f58d93a28d7
CRs-Fixed: 2353103
Yeshwanth Sriram Guntuka 6 år sedan
förälder
incheckning
334aa8de95

+ 48 - 0
components/mlme/core/src/wlan_mlme_main.c

@@ -25,6 +25,7 @@
 #include "wmi_unified.h"
 #include "wlan_scan_public_structs.h"
 #include "wlan_vdev_mlme_api.h"
+#include "wlan_mlme_api.h"
 
 #define NUM_OF_SOUNDING_DIMENSIONS     1 /*Nss - 1, (Nss = 2 for 2x2)*/
 
@@ -1857,6 +1858,51 @@ static void mlme_init_btm_cfg(struct wlan_mlme_btm *btm)
 	btm->btm_sticky_time = cfg_default(CFG_BTM_STICKY_TIME);
 }
 
+/**
+ * mlme_init_fe_wlm_in_cfg() - Populate WLM INI in MLME cfg
+ * @psoc: pointer to the psoc object
+ * @wlm_config: pointer to the MLME WLM cfg
+ *
+ * Return: None
+ */
+static void mlme_init_fe_wlm_in_cfg(struct wlan_objmgr_psoc *psoc,
+				    struct wlan_mlme_fe_wlm *wlm_config)
+{
+	wlm_config->latency_enable = cfg_get(psoc, CFG_LATENCY_ENABLE);
+	wlm_config->latency_level = cfg_get(psoc, CFG_LATENCY_LEVEL);
+	wlm_config->latency_flags[0] = cfg_get(psoc, CFG_LATENCY_FLAGS_NORMAL);
+	wlm_config->latency_flags[1] = cfg_get(psoc, CFG_LATENCY_FLAGS_MOD);
+	wlm_config->latency_flags[2] = cfg_get(psoc, CFG_LATENCY_FLAGS_LOW);
+	wlm_config->latency_flags[3] = cfg_get(psoc, CFG_LATENCY_FLAGS_ULTLOW);
+}
+
+/**
+ * mlme_init_fe_rrm_in_cfg() - Populate RRM INI in MLME cfg
+ * @psoc: pointer to the psoc object
+ * @rrm_config: pointer to the MLME RRM cfg
+ *
+ * Return: None
+ */
+static void mlme_init_fe_rrm_in_cfg(struct wlan_objmgr_psoc *psoc,
+				    struct wlan_mlme_fe_rrm *rrm_config)
+{
+	qdf_size_t len;
+
+	rrm_config->rrm_enabled = cfg_get(psoc, CFG_RRM_ENABLE);
+	rrm_config->rrm_rand_interval = cfg_get(psoc, CFG_RRM_MEAS_RAND_INTVL);
+
+	qdf_uint8_array_parse(cfg_get(psoc, CFG_RM_CAPABILITY),
+			      rrm_config->rm_capability,
+			      sizeof(rrm_config->rm_capability), &len);
+
+	if (len < MLME_RMENABLEDCAP_MAX_LEN) {
+		mlme_debug("Incorrect RM capability, using default");
+		qdf_uint8_array_parse(cfg_default(CFG_RM_CAPABILITY),
+				      rrm_config->rm_capability,
+				      sizeof(rrm_config->rm_capability), &len);
+	}
+}
+
 QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
 {
 	struct wlan_mlme_psoc_obj *mlme_obj;
@@ -1900,6 +1946,8 @@ QDF_STATUS mlme_cfg_on_psoc_enable(struct wlan_objmgr_psoc *psoc)
 	mlme_init_wifi_pos_cfg(psoc, &mlme_cfg->wifi_pos_cfg);
 	mlme_init_wps_params_cfg(psoc, &mlme_cfg->wps_params);
 	mlme_init_btm_cfg(&mlme_cfg->btm);
+	mlme_init_fe_wlm_in_cfg(psoc, &mlme_cfg->wlm_config);
+	mlme_init_fe_rrm_in_cfg(psoc, &mlme_cfg->rrm_config);
 
 	return status;
 }

+ 4 - 0
components/mlme/dispatcher/inc/cfg_mlme.h

@@ -52,6 +52,8 @@
 #include "cfg_mlme_wep_params.h"
 #include "cfg_mlme_wifi_pos.h"
 #include "cfg_mlme_btm.h"
+#include "cfg_mlme_fe_wlm.h"
+#include "cfg_mlme_fe_rrm.h"
 
 /* Please Maintain Alphabetic Order here */
 #define CFG_MLME_ALL \
@@ -60,6 +62,8 @@
 	CFG_CHAINMASK_ALL \
 	CFG_DFS_ALL \
 	CFG_EDCA_PARAMS_ALL \
+	CFG_FE_RRM_ALL \
+	CFG_FE_WLM_ALL \
 	CFG_FEATURE_FLAG_ALL \
 	CFG_GENERIC_ALL \
 	CFG_HT_CAPS_ALL \

+ 106 - 0
components/mlme/dispatcher/inc/cfg_mlme_fe_rrm.h

@@ -0,0 +1,106 @@
+/*
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: This file contains centralized definitions of converged configuration.
+ */
+
+#ifndef __CFG_MLME_FE_RRM_H
+#define __CFG_MLME_FE_RRM_H
+
+/*
+ * <ini>
+ * gRrmEnable - Enable/Disable RRM
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to controls the capabilities (11 k) included
+ * in the capabilities field.
+ *
+ * Related: None.
+ *
+ * Supported Feature: 11k
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_RRM_ENABLE CFG_INI_BOOL("gRrmEnable", \
+				    0, \
+				    "Enable/Disable RRM")
+
+/*
+ * <ini>
+ * gRrmRandnIntvl - Randomization interval
+ * @Min: 10
+ * @Max: 100
+ * @Default: 100
+ *
+ * This ini is used to set randomization interval which is used to start a timer
+ * of a random value within randomization interval. Next RRM Scan request
+ * will be issued after the expiry of this random interval.
+ *
+ * Related: None.
+ *
+ * Supported Feature: 11k
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_RRM_MEAS_RAND_INTVL CFG_INI_UINT("gRrmRandnIntvl", \
+					     10, \
+					     100, \
+					     100, \
+					     CFG_VALUE_OR_DEFAULT, \
+					     "RRM Randomization interval")
+
+/*
+ * <ini>
+ * rm_capability - Configure RM enabled capabilities IE
+ * @Default: 0x73,0x10,0x91,0x00,0x04
+ *
+ * This ini is used to configure RM enabled capabilities IE.
+ * Using this INI, we can set/unset any of the bits in 5 bytes
+ * (last 4bytes are reserved). Bit details are updated as per
+ * Draft version of 11mc spec. (Draft P802.11REVmc_D4.2)
+ *
+ * Bitwise details are defined as bit mask in rrm_global.h
+ * Comma is used as a separator for each byte.
+ *
+ * Related: None.
+ *
+ * Supported Feature: 11k
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_RM_CAPABILITY CFG_INI_STRING("rm_capability", \
+					 24, \
+					 40, \
+					 "0x73,0x10,0x91,0x00,0x04", \
+					 "RM enabled capabilities IE")
+
+#define CFG_FE_RRM_ALL \
+	CFG(CFG_RRM_ENABLE) \
+	CFG(CFG_RRM_MEAS_RAND_INTVL) \
+	CFG(CFG_RM_CAPABILITY)
+
+#endif /* __CFG_MLME_FE_RRM_H */

+ 246 - 0
components/mlme/dispatcher/inc/cfg_mlme_fe_wlm.h

@@ -0,0 +1,246 @@
+/*
+ * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
+ *
+ * Permission to use, copy, modify, and/or distribute this software for
+ * any purpose with or without fee is hereby granted, provided that the
+ * above copyright notice and this permission notice appear in all
+ * copies.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
+ * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
+ * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
+ * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+ * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+ * PERFORMANCE OF THIS SOFTWARE.
+ */
+
+/**
+ * DOC: This file contains centralized definitions of converged configuration.
+ */
+
+#ifndef __CFG_MLME_FE_WLM_H
+#define __CFG_MLME_FE_WLM_H
+
+/*
+ * <ini>
+ * wlm_latency_enable - WLM latency Enable
+ *
+ * @min: 0
+ * @max: 1
+ * @default: 0
+ *
+ * 0 - disable
+ * 1 - enable
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_ENABLE CFG_INI_BOOL("wlm_latency_enable", \
+					0, \
+					"WLM latency Enable")
+
+/*
+ * <ini>
+ * wlm_latency_level - WLM latency level
+ * Define 4 latency level to gain latency
+ *
+ * @min: 0
+ * @max: 3
+ * @defalut: 0
+ *
+ * 0 - normal
+ * 1 - moderate
+ * 2 - low
+ * 3 - ultralow
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_LEVEL CFG_INI_UINT("wlm_latency_level", \
+				       0, \
+				       3, \
+				       0, \
+				       CFG_VALUE_OR_DEFAULT, \
+				       "WLM latency level")
+
+/*
+ * <ini>
+ * wlm_latency_flags_normal - WLM flags setting for normal level
+ *
+ * @min: 0x0
+ * @max: 0xffffffff
+ * @defalut: 0x0
+ *
+ * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
+ * +------+------+------+------+------+------+------+-----+-----+
+ * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
+ * +------+-------------+-------------+-------------------------+
+ * |  WAL |      PS     |     Roam    |         Scan            |
+ *
+ * bit 0: Avoid scan request from HLOS if setting
+ * bit 1: Skip DFS channel SCAN if setting
+ * bit 2-3: Define policy of dwell time/duration for each foreign channel
+ *     (b2 b3)
+ *     (0  0 ): Default scan dwell time
+ *     (0  1 ): Reserve
+ *     (1  0 ): Shrink off channel dwell time
+ *     (1  1 ): Reserve
+ * bit 4-5: Reserve for scan
+ * bit 6-7: Define roaming policy
+ *     (b6 b7)
+ *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
+ *     (0  1 ): Disallow all roaming
+ *     (1  0 ): Allow roaming when final bmissed
+ *     (1  1 ): Reserve
+ * bit 8-9: Reserve for roaming
+ * bit 10: Disable css power collapse if setting
+ * bit 11: Disable sys sleep if setting
+ * bit 12-31: Reserve for future useage
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_FLAGS_NORMAL CFG_INI_UINT("wlm_latency_flags_normal", \
+					      0, \
+					      0xffffffff, \
+					      0, \
+					      CFG_VALUE_OR_DEFAULT, \
+					      "WLM flag setting for normal lvl")
+
+/*
+ * <ini>
+ * wlm_latency_flags_moderate - WLM flags setting for moderate level
+ *
+ * @min: 0x0
+ * @max: 0xffffffff
+ * @defalut: 0x8
+ *
+ * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
+ * +------+------+------+------+------+------+------+-----+-----+
+ * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
+ * +------+-------------+-------------+-------------------------+
+ * |  WAL |      PS     |     Roam    |         Scan            |
+ *
+ * bit 0: Avoid scan request from HLOS if setting
+ * bit 1: Skip DFS channel SCAN if setting
+ * bit 2-3: Define policy of dwell time/duration for each foreign channel
+ *     (b2 b3)
+ *     (0  0 ): Default scan dwell time
+ *     (0  1 ): Reserve
+ *     (1  0 ): Shrink off channel dwell time
+ *     (1  1 ): Reserve
+ * bit 4-5: Reserve for scan
+ * bit 6-7: Define roaming policy
+ *     (b6 b7)
+ *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
+ *     (0  1 ): Disallow all roaming
+ *     (1  0 ): Allow roaming when final bmissed
+ *     (1  1 ): Reserve
+ * bit 8-9: Reserve for roaming
+ * bit 10: Disable css power collapse if setting
+ * bit 11: Disable sys sleep if setting
+ * bit 12-31: Reserve for future useage
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_FLAGS_MOD CFG_INI_UINT("wlm_latency_flags_moderate", \
+					   0, \
+					   0xffffffff, \
+					   0x8, \
+					   CFG_VALUE_OR_DEFAULT, \
+					   "WLM flag setting for moderate lvl")
+
+/*
+ * <ini>
+ * wlm_latency_flags_low - WLM flags setting for low level
+ *
+ * @min: 0x0
+ * @max: 0xffffffff
+ * @defalut: 0xa
+ *
+ * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
+ * +------+------+------+------+------+------+------+-----+-----+
+ * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
+ * +------+-------------+-------------+-------------------------+
+ * |  WAL |      PS     |     Roam    |         Scan            |
+ *
+ * bit 0: Avoid scan request from HLOS if setting
+ * bit 1: Skip DFS channel SCAN if setting
+ * bit 2-3: Define policy of dwell time/duration for each foreign channel
+ *     (b2 b3)
+ *     (0  0 ): Default scan dwell time
+ *     (0  1 ): Reserve
+ *     (1  0 ): Shrink off channel dwell time
+ *     (1  1 ): Reserve
+ * bit 4-5: Reserve for scan
+ * bit 6-7: Define roaming policy
+ *     (b6 b7)
+ *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
+ *     (0  1 ): Disallow all roaming
+ *     (1  0 ): Allow roaming when final bmissed
+ *     (1  1 ): Reserve
+ * bit 8-9: Reserve for roaming
+ * bit 10: Disable css power collapse if setting
+ * bit 11: Disable sys sleep if setting
+ * bit 12-31: Reserve for future useage
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_FLAGS_LOW CFG_INI_UINT("wlm_latency_flags_low", \
+					   0, \
+					   0xffffffff, \
+					   0xa, \
+					   CFG_VALUE_OR_DEFAULT, \
+					   "WLM flags setting for low level")
+
+/*
+ * <ini>
+ * wlm_latency_flags_ultralow - WLM flags setting for ultralow level
+ *
+ * @min: 0x0
+ * @max: 0xffffffff
+ * @defalut: 0xc8a
+ *
+ * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
+ * +------+------+------+------+------+------+------+-----+-----+
+ * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
+ * +------+-------------+-------------+-------------------------+
+ * |  WAL |      PS     |     Roam    |         Scan            |
+ *
+ * bit 0: Avoid scan request from HLOS if setting
+ * bit 1: Skip DFS channel SCAN if setting
+ * bit 2-3: Define policy of dwell time/duration for each foreign channel
+ *     (b2 b3)
+ *     (0  0 ): Default scan dwell time
+ *     (0  1 ): Reserve
+ *     (1  0 ): Shrink off channel dwell time
+ *     (1  1 ): Reserve
+ * bit 4-5: Reserve for scan
+ * bit 6-7: Define roaming policy
+ *     (b6 b7)
+ *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
+ *     (0  1 ): Disallow all roaming
+ *     (1  0 ): Allow roaming when final bmissed
+ *     (1  1 ): Reserve
+ * bit 8-9: Reserve for roaming
+ * bit 10: Disable css power collapse if setting
+ * bit 11: Disable sys sleep if setting
+ * bit 12-31: Reserve for future useage
+ *
+ * </ini>
+ */
+#define CFG_LATENCY_FLAGS_ULTLOW CFG_INI_UINT("wlm_latency_flags_ultralow",\
+					      0, \
+					      0xffffffff, \
+					      0xc8a, \
+					      CFG_VALUE_OR_DEFAULT, \
+					      "WLM flags for ultralow level")
+
+#define CFG_FE_WLM_ALL \
+	CFG(CFG_LATENCY_ENABLE) \
+	CFG(CFG_LATENCY_LEVEL) \
+	CFG(CFG_LATENCY_FLAGS_NORMAL) \
+	CFG(CFG_LATENCY_FLAGS_MOD) \
+	CFG(CFG_LATENCY_FLAGS_LOW) \
+	CFG(CFG_LATENCY_FLAGS_ULTLOW)
+
+#endif /* __CFG_MLME_FE_WLM_H */

+ 10 - 0
components/mlme/dispatcher/inc/wlan_mlme_api.h

@@ -1963,4 +1963,14 @@ wlan_mlme_get_mcc_rts_cts_prot(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS
 wlan_mlme_get_mcc_feature(struct wlan_objmgr_psoc *psoc,
 			  uint8_t *value);
+
+/**
+ * wlan_mlme_get_rrm_enabled() - Get the RRM enabled ini
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: QDF Status
+ */
+QDF_STATUS wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc,
+				     bool *value);
 #endif /* _WLAN_MLME_API_H_ */

+ 31 - 0
components/mlme/dispatcher/inc/wlan_mlme_public_struct.h

@@ -265,6 +265,9 @@ struct wlan_mlme_edca_params {
 #define WLAN_CFG_MFR_PRODUCT_NAME_LEN (31)
 #define WLAN_CFG_MFR_PRODUCT_VERSION_LEN (31)
 
+#define MLME_NUM_WLM_LATENCY_LEVEL 4
+#define MLME_RMENABLEDCAP_MAX_LEN  5
+
 /**
  * struct mlme_ht_capabilities_info - HT Capabilities Info
  * @l_sig_tx_op_protection: L-SIG TXOP Protection Mechanism support
@@ -1699,6 +1702,30 @@ struct wlan_mlme_btm {
 	uint32_t btm_sticky_time;
 };
 
+/**
+ * struct wlan_mlme_fe_wlm - WLM related configs
+ * @latency_enable: Flag to check if latency is enabled
+ * @latency_level: WLM latency level
+ * @latency_flags: WLM latency flags setting
+ */
+struct wlan_mlme_fe_wlm {
+	bool latency_enable;
+	uint8_t latency_level;
+	uint32_t latency_flags[MLME_NUM_WLM_LATENCY_LEVEL];
+};
+
+/**
+ * struct wlan_mlme_fe_rrm - RRM related configs
+ * @rrm_enabled: Flag to check if RRM is enabled
+ * @rrm_rand_interval: RRM randomization interval
+ * @rm_capability: RM enabled capabilities IE
+ */
+struct wlan_mlme_fe_rrm {
+	bool rrm_enabled;
+	uint8_t rrm_rand_interval;
+	uint8_t rm_capability[MLME_RMENABLEDCAP_MAX_LEN];
+};
+
 /**
  * struct wlan_mlme_cfg - MLME config items
  * @chainmask_cfg: VHT chainmask related cfg items
@@ -1731,6 +1758,8 @@ struct wlan_mlme_btm {
  * @wmm_params: WMM related CFG & INI Items
  * @wps_params: WPS related CFG itmes
  * @btm: BTM related CFG itmes
+ * @wlm_config: WLM related CFG items
+ * @rrm_config: RRM related CFG items
  */
 struct wlan_mlme_cfg {
 	struct wlan_mlme_chainmask chainmask_cfg;
@@ -1765,6 +1794,8 @@ struct wlan_mlme_cfg {
 	struct wlan_mlme_wmm_params wmm_params;
 	struct wlan_mlme_wps_params wps_params;
 	struct wlan_mlme_btm btm;
+	struct wlan_mlme_fe_wlm wlm_config;
+	struct wlan_mlme_fe_rrm rrm_config;
 };
 
 #endif

+ 14 - 0
components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h

@@ -3194,4 +3194,18 @@ ucfg_mlme_get_mcc_feature(struct wlan_objmgr_psoc *psoc,
 {
 	return wlan_mlme_get_mcc_feature(psoc, value);
 }
+
+/**
+ * ucfg_wlan_mlme_get_rrm_enabled() - Get the rrm enabled
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be get from the caller
+ *
+ * Return: QDF Status
+ */
+static inline
+QDF_STATUS ucfg_wlan_mlme_get_rrm_enabled(struct wlan_objmgr_psoc *psoc,
+					  bool *value)
+{
+	return wlan_mlme_get_rrm_enabled(psoc, value);
+}
 #endif /* _WLAN_MLME_UCFG_API_H_ */

+ 15 - 0
components/mlme/dispatcher/src/wlan_mlme_api.c

@@ -3178,3 +3178,18 @@ QDF_STATUS wlan_mlme_set_sap_uapsd_flag(struct wlan_objmgr_psoc *psoc,
 
 	return QDF_STATUS_SUCCESS;
 }
+
+QDF_STATUS wlan_mlme_get_rrm_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) {
+		mlme_err("Failed to get MLME Obj");
+		return QDF_STATUS_E_FAILURE;
+	}
+	*value = mlme_obj->cfg.rrm_config.rrm_enabled;
+
+	return QDF_STATUS_SUCCESS;
+}

+ 0 - 286
core/hdd/inc/wlan_hdd_cfg.h

@@ -1268,209 +1268,6 @@ enum hdd_dot11_mode {
 #define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_MAX     (1)
 #define CFG_IBSS_PS_1RX_CHAIN_IN_ATIM_WINDOW_DEFAULT (0)
 
-/*
- * <ini>
- * wlm_latency_enable - WLM latency Enable
- *
- * @min: 0
- * @max: 1
- * @default: 0
- *
- * 0 - disable
- * 1 - enable
- *
- * </ini>
- */
-#define CFG_LATENCY_ENABLE_NAME    "wlm_latency_enable"
-#define CFG_LATENCY_ENABLE_MIN     (0)
-#define CFG_LATENCY_ENABLE_MAX     (1)
-#define CFG_LATENCY_ENABLE_DEFAULT (0)
-
-/*
- * <ini>
- * wlm_latency_level - WLM latency level
- * Define 4 latency level to gain latency
- *
- * @min: 0
- * @max: 3
- * @defalut: 0
- *
- * 0 - normal
- * 1 - moderate
- * 2 - low
- * 3 - ultralow
- *
- * </ini>
- */
-#define CFG_LATENCY_LEVEL_NAME    "wlm_latency_level"
-#define CFG_LATENCY_LEVEL_MIN     (0)
-#define CFG_LATENCY_LEVEL_MAX     (3)
-#define CFG_LATENCY_LEVEL_DEFAULT (0)
-
-/*
- * <ini>
- * wlm_latency_flags_normal - WLM flags setting for normal level
- *
- * @min: 0x0
- * @max: 0xffffffff
- * @defalut: 0x0
- *
- * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
- * +------+------+------+------+------+------+------+-----+-----+
- * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
- * +------+-------------+-------------+-------------------------+
- * |  WAL |      PS     |     Roam    |         Scan            |
- *
- * bit 0: Avoid scan request from HLOS if setting
- * bit 1: Skip DFS channel SCAN if setting
- * bit 2-3: Define policy of dwell time/duration for each foreign channel
- *     (b2 b3)
- *     (0  0 ): Default scan dwell time
- *     (0  1 ): Reserve
- *     (1  0 ): Shrink off channel dwell time
- *     (1  1 ): Reserve
- * bit 4-5: Reserve for scan
- * bit 6-7: Define roaming policy
- *     (b6 b7)
- *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
- *     (0  1 ): Disallow all roaming
- *     (1  0 ): Allow roaming when final bmissed
- *     (1  1 ): Reserve
- * bit 8-9: Reserve for roaming
- * bit 10: Disable css power collapse if setting
- * bit 11: Disable sys sleep if setting
- * bit 12-31: Reserve for future useage
- *
- * </ini>
- */
-#define CFG_LATENCY_FLAGS_NORMAL_NAME    "wlm_latency_flags_normal"
-#define CFG_LATENCY_FLAGS_NORMAL_MIN     (0x0)
-#define CFG_LATENCY_FLAGS_NORMAL_MAX     (0xffffffff)
-#define CFG_LATENCY_FLAGS_NORMAL_DEFAULT (0x0)
-
-/*
- * <ini>
- * wlm_latency_flags_moderate - WLM flags setting for moderate level
- *
- * @min: 0x0
- * @max: 0xffffffff
- * @defalut: 0x8
- *
- * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
- * +------+------+------+------+------+------+------+-----+-----+
- * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
- * +------+-------------+-------------+-------------------------+
- * |  WAL |      PS     |     Roam    |         Scan            |
- *
- * bit 0: Avoid scan request from HLOS if setting
- * bit 1: Skip DFS channel SCAN if setting
- * bit 2-3: Define policy of dwell time/duration for each foreign channel
- *     (b2 b3)
- *     (0  0 ): Default scan dwell time
- *     (0  1 ): Reserve
- *     (1  0 ): Shrink off channel dwell time
- *     (1  1 ): Reserve
- * bit 4-5: Reserve for scan
- * bit 6-7: Define roaming policy
- *     (b6 b7)
- *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
- *     (0  1 ): Disallow all roaming
- *     (1  0 ): Allow roaming when final bmissed
- *     (1  1 ): Reserve
- * bit 8-9: Reserve for roaming
- * bit 10: Disable css power collapse if setting
- * bit 11: Disable sys sleep if setting
- * bit 12-31: Reserve for future useage
- *
- * </ini>
- */
-#define CFG_LATENCY_FLAGS_MODERATE_NAME    "wlm_latency_flags_moderate"
-#define CFG_LATENCY_FLAGS_MODERATE_MIN     (0x0)
-#define CFG_LATENCY_FLAGS_MODERATE_MAX     (0xffffffff)
-#define CFG_LATENCY_FLAGS_MODERATE_DEFAULT (0x8)
-
-/*
- * <ini>
- * wlm_latency_flags_low - WLM flags setting for low level
- *
- * @min: 0x0
- * @max: 0xffffffff
- * @defalut: 0xa
- *
- * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
- * +------+------+------+------+------+------+------+-----+-----+
- * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
- * +------+-------------+-------------+-------------------------+
- * |  WAL |      PS     |     Roam    |         Scan            |
- *
- * bit 0: Avoid scan request from HLOS if setting
- * bit 1: Skip DFS channel SCAN if setting
- * bit 2-3: Define policy of dwell time/duration for each foreign channel
- *     (b2 b3)
- *     (0  0 ): Default scan dwell time
- *     (0  1 ): Reserve
- *     (1  0 ): Shrink off channel dwell time
- *     (1  1 ): Reserve
- * bit 4-5: Reserve for scan
- * bit 6-7: Define roaming policy
- *     (b6 b7)
- *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
- *     (0  1 ): Disallow all roaming
- *     (1  0 ): Allow roaming when final bmissed
- *     (1  1 ): Reserve
- * bit 8-9: Reserve for roaming
- * bit 10: Disable css power collapse if setting
- * bit 11: Disable sys sleep if setting
- * bit 12-31: Reserve for future useage
- *
- * </ini>
- */
-#define CFG_LATENCY_FLAGS_LOW_NAME    "wlm_latency_flags_low"
-#define CFG_LATENCY_FLAGS_LOW_MIN     (0x0)
-#define CFG_LATENCY_FLAGS_LOW_MAX     (0xffffffff)
-#define CFG_LATENCY_FLAGS_LOW_DEFAULT (0xa)
-
-/*
- * <ini>
- * wlm_latency_flags_ultralow - WLM flags setting for ultralow level
- *
- * @min: 0x0
- * @max: 0xffffffff
- * @defalut: 0xc83
- *
- * |31  12|  11  |  10  |9    8|7    6|5    4|3    2|  1  |  0  |
- * +------+------+------+------+------+------+------+-----+-----+
- * | RSVD | SSLP | CSLP | RSVD | Roam | RSVD | DWLT | DFS | SUP |
- * +------+-------------+-------------+-------------------------+
- * |  WAL |      PS     |     Roam    |         Scan            |
- *
- * bit 0: Avoid scan request from HLOS if setting
- * bit 1: Skip DFS channel SCAN if setting
- * bit 2-3: Define policy of dwell time/duration for each foreign channel
- *     (b2 b3)
- *     (0  0 ): Default scan dwell time
- *     (0  1 ): Reserve
- *     (1  0 ): Shrink off channel dwell time
- *     (1  1 ): Reserve
- * bit 4-5: Reserve for scan
- * bit 6-7: Define roaming policy
- *     (b6 b7)
- *     (0  0 ): Default roaming behavior, allow roaming in all scenarios
- *     (0  1 ): Disallow all roaming
- *     (1  0 ): Allow roaming when final bmissed
- *     (1  1 ): Reserve
- * bit 8-9: Reserve for roaming
- * bit 10: Disable css power collapse if setting
- * bit 11: Disable sys sleep if setting
- * bit 12-31: Reserve for future useage
- *
- * </ini>
- */
-#define CFG_LATENCY_FLAGS_ULTRALOW_NAME    "wlm_latency_flags_ultralow"
-#define CFG_LATENCY_FLAGS_ULTRALOW_MIN     (0x0)
-#define CFG_LATENCY_FLAGS_ULTRALOW_MAX     (0xffffffff)
-#define CFG_LATENCY_FLAGS_ULTRALOW_DEFAULT (0xc83)
-
 /*
  * <ini>
  * gDot11Mode - SAP phy mode
@@ -1797,79 +1594,6 @@ enum hdd_dot11_mode {
 #define CFG_TL_DELAYED_TRGR_FRM_INT_MAX                  (4294967295UL)
 #define CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT              3000
 
-/*
- * <ini>
- * gRrmEnable - Enable/Disable RRM
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to controls the capabilities (11 k) included
- * in the capabilities field.
- *
- * Related: None.
- *
- * Supported Feature: 11k
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_RRM_ENABLE_NAME                              "gRrmEnable"
-#define CFG_RRM_ENABLE_MIN                               (0)
-#define CFG_RRM_ENABLE_MAX                               (1)
-#define CFG_RRM_ENABLE_DEFAULT                           (0)
-
-/*
- * <ini>
- * gRrmRandnIntvl - Randomization interval
- * @Min: 10
- * @Max: 100
- * @Default: 100
- *
- * This ini is used to set randomization interval which is used to start a timer
- * of a random value within randomization interval. Next RRM Scan request
- * will be issued after the expiry of this random interval.
- *
- * Related: None.
- *
- * Supported Feature: 11k
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME            "gRrmRandnIntvl"
-#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN             (10)
-#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX             (100)
-#define CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT         (100)
-
-/*
- * <ini>
- * rm_capability - Configure RM enabled capabilities IE
- * @Min: N/A
- * @Max: N/A
- * @Default: 73,10,91,00,04
- *
- * This ini is used to configure RM enabled capabilities IE.
- * Using this INI, we can set/unset any of the bits in 5 bytes
- * (last 4bytes are reserved). Bit details are updated as per
- * Draft version of 11mc spec. (Draft P802.11REVmc_D4.2)
- *
- * Bitwise details are defined as bit mask in rrm_global.h
- * Comma is used as a separator for each byte.
- *
- * Related: None.
- *
- * Supported Feature: 11k
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_RM_CAPABILITY_NAME            "rm_capability"
-#define CFG_RM_CAPABILITY_DEFAULT         "73,10,91,00,04"
-
 /*
  * <ini>
  * gHwFilterMode - configure hardware filter for DTIM mode
@@ -3855,10 +3579,6 @@ struct hdd_config {
 	bool apProtEnabled;
 	uint8_t nTxPowerCap;    /* In dBm */
 	uint8_t disablePacketFilter;
-	bool fRrmEnable;
-	uint16_t nRrmRandnIntvl;
-	/* length includes separator */
-	char rm_capability[3 * DOT11F_IE_RRMENABLEDCAP_MAX_LEN];
 
 #ifdef FEATURE_WLAN_DYNAMIC_CVM
 	/* Bitmap for operating voltage corner mode */
@@ -4059,12 +3779,6 @@ struct hdd_config {
 	bool enable_lprx;
 	uint32_t scan_11d_interval;
 	bool is_bssid_hint_priority;
-	uint16_t wlm_latency_enable;
-	uint16_t wlm_latency_level;
-	uint32_t wlm_latency_flags_normal;
-	uint32_t wlm_latency_flags_moderate;
-	uint32_t wlm_latency_flags_low;
-	uint32_t wlm_latency_flags_ultralow;
 #ifdef WLAN_FEATURE_PACKET_FILTERING
 	uint8_t packet_filters_bitmap;
 #endif

+ 0 - 99
core/hdd/src/wlan_hdd_cfg.c

@@ -255,25 +255,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
 		     CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
 
-	REG_VARIABLE(CFG_RRM_ENABLE_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, fRrmEnable,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_RRM_ENABLE_DEFAULT,
-		     CFG_RRM_ENABLE_MIN,
-		     CFG_RRM_ENABLE_MAX),
-
-	REG_VARIABLE(CFG_RRM_MEAS_RANDOMIZATION_INTVL_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, nRrmRandnIntvl,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_RRM_MEAS_RANDOMIZATION_INTVL_DEFAULT,
-		     CFG_RRM_MEAS_RANDOMIZATION_INTVL_MIN,
-		     CFG_RRM_MEAS_RANDOMIZATION_INTVL_MAX),
-
-	REG_VARIABLE_STRING(CFG_RM_CAPABILITY_NAME, WLAN_PARAM_String,
-			    struct hdd_config, rm_capability,
-			    VAR_FLAGS_OPTIONAL,
-			    (void *) CFG_RM_CAPABILITY_DEFAULT),
-
 #ifdef FEATURE_WLAN_RA_FILTERING
 
 	REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
@@ -883,48 +864,6 @@ struct reg_table_entry g_registry_table[] = {
 		CFG_IS_BSSID_HINT_PRIORITY_MIN,
 		CFG_IS_BSSID_HINT_PRIORITY_MAX),
 
-	REG_VARIABLE(CFG_LATENCY_ENABLE_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, wlm_latency_enable,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_ENABLE_DEFAULT,
-		     CFG_LATENCY_ENABLE_MIN,
-		     CFG_LATENCY_ENABLE_MAX),
-
-	REG_VARIABLE(CFG_LATENCY_LEVEL_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, wlm_latency_level,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_LEVEL_DEFAULT,
-		     CFG_LATENCY_LEVEL_MIN,
-		     CFG_LATENCY_LEVEL_MAX),
-
-	REG_VARIABLE(CFG_LATENCY_FLAGS_NORMAL_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, wlm_latency_flags_normal,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_FLAGS_NORMAL_DEFAULT,
-		     CFG_LATENCY_FLAGS_NORMAL_MIN,
-		     CFG_LATENCY_FLAGS_NORMAL_MAX),
-
-	REG_VARIABLE(CFG_LATENCY_FLAGS_MODERATE_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, wlm_latency_flags_moderate,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_FLAGS_MODERATE_DEFAULT,
-		     CFG_LATENCY_FLAGS_MODERATE_MIN,
-		     CFG_LATENCY_FLAGS_MODERATE_MAX),
-
-	REG_VARIABLE(CFG_LATENCY_FLAGS_LOW_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, wlm_latency_flags_low,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_FLAGS_LOW_DEFAULT,
-		     CFG_LATENCY_FLAGS_LOW_MIN,
-		     CFG_LATENCY_FLAGS_LOW_MAX),
-
-	REG_VARIABLE(CFG_LATENCY_FLAGS_ULTRALOW_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, wlm_latency_flags_ultralow,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_LATENCY_FLAGS_ULTRALOW_DEFAULT,
-		     CFG_LATENCY_FLAGS_ULTRALOW_MIN,
-		     CFG_LATENCY_FLAGS_ULTRALOW_MAX),
-
 #ifdef WLAN_FEATURE_SAE
 	REG_VARIABLE(CFG_IS_SAE_ENABLED_NAME, WLAN_PARAM_Integer,
 		struct hdd_config, is_sae_enabled,
@@ -2250,26 +2189,6 @@ static QDF_STATUS hdd_convert_string_to_array(char *str, uint8_t *array,
 	return QDF_STATUS_SUCCESS;
 }
 
-/**
- * hdd_hex_string_to_u8_array() - used to convert hex string into u8 array
- * @str: Hexadecimal string
- * @hex_array: Array where converted value is stored
- * @len: Length of the populated array
- * @array_max_len: Maximum length of the array
- *
- * This API is called to convert hexadecimal string (each byte separated by
- * a comma) into an u8 array
- *
- * Return: QDF_STATUS
- */
-static QDF_STATUS hdd_hex_string_to_u8_array(char *str, uint8_t *hex_array,
-					     uint8_t *len,
-					     uint8_t array_max_len)
-{
-	return hdd_convert_string_to_array(str, hex_array, len,
-					   array_max_len, true);
-}
-
 QDF_STATUS hdd_string_to_u8_array(char *str, uint8_t *array,
 				  uint8_t *len, uint16_t array_max_len)
 {
@@ -2623,7 +2542,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
 	tSmeConfigParams *smeConfig;
-	uint8_t rrm_capab_len;
 	mac_handle_t mac_handle = hdd_ctx->mac_handle;
 	bool roam_scan_enabled;
 #ifdef FEATURE_WLAN_ESE
@@ -2674,11 +2592,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 	smeConfig->csrConfig.nRestTimeConc = pConfig->nRestTimeConc;
 	smeConfig->csrConfig.min_rest_time_conc = pConfig->min_rest_time_conc;
 	smeConfig->csrConfig.idle_time_conc     = pConfig->idle_time_conc;
-	smeConfig->rrmConfig.rrm_enabled = pConfig->fRrmEnable;
-	smeConfig->rrmConfig.max_randn_interval = pConfig->nRrmRandnIntvl;
-	hdd_hex_string_to_u8_array(pConfig->rm_capability,
-			smeConfig->rrmConfig.rm_capability, &rrm_capab_len,
-			DOT11F_IE_RRMENABLEDCAP_MAX_LEN);
 	/* Remaining config params not obtained from registry
 	 * On RF EVB beacon using channel 1.
 	 */
@@ -2757,18 +2670,6 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 
 	hdd_he_set_sme_config(smeConfig, pConfig);
 
-	smeConfig->csrConfig.wlm_latency_enable =
-			hdd_ctx->config->wlm_latency_enable;
-	smeConfig->csrConfig.wlm_latency_level =
-			hdd_ctx->config->wlm_latency_level;
-	smeConfig->csrConfig.wlm_latency_flags[0] =
-			hdd_ctx->config->wlm_latency_flags_normal;
-	smeConfig->csrConfig.wlm_latency_flags[1] =
-			hdd_ctx->config->wlm_latency_flags_moderate;
-	smeConfig->csrConfig.wlm_latency_flags[2] =
-			hdd_ctx->config->wlm_latency_flags_low;
-	smeConfig->csrConfig.wlm_latency_flags[3] =
-			hdd_ctx->config->wlm_latency_flags_ultralow;
 	status = hdd_set_sme_cfgs_related_to_mlme(hdd_ctx, smeConfig);
 	if (!QDF_IS_STATUS_SUCCESS(status))
 		hdd_err("hdd_set_sme_cfgs_related_to_mlme() fail: %d", status);

+ 5 - 2
core/hdd/src/wlan_hdd_wext.c

@@ -5469,7 +5469,6 @@ static int __iw_setchar_getnone(struct net_device *dev,
 	char *str_arg = NULL;
 	struct hdd_adapter *adapter = (netdev_priv(dev));
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
-	struct hdd_config *pConfig = hdd_ctx->config;
 	struct iw_point s_priv_data;
 
 	hdd_enter_dev(dev);
@@ -5521,8 +5520,12 @@ static int __iw_setchar_getnone(struct net_device *dev,
 	{
 		tRrmNeighborReq neighborReq;
 		tRrmNeighborRspCallbackInfo callbackInfo;
+		bool rrm_enabled = false;
 
-		if (pConfig->fRrmEnable) {
+		ucfg_wlan_mlme_get_rrm_enabled(hdd_ctx->psoc,
+					       &rrm_enabled);
+
+		if (rrm_enabled) {
 			neighborReq.neighbor_report_offload = false;
 			neighborReq.no_ssid =
 				(s_priv_data.length - 1) ? false : true;

+ 0 - 4
core/sme/inc/csr_api.h

@@ -31,7 +31,6 @@
 #include "wlan_scan_public_structs.h"
 
 #define CSR_INVALID_SCANRESULT_HANDLE       (NULL)
-#define CSR_NUM_WLM_LATENCY_LEVEL   4
 
 typedef enum {
 	/* never used */
@@ -1127,9 +1126,6 @@ typedef struct tagCsrConfigParam {
 	bool enable_ul_ofdma;
 	bool enable_ul_mimo;
 #endif
-	uint16_t wlm_latency_enable;
-	uint16_t wlm_latency_level;
-	uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
 	bool is_force_1x1;
 	uint8_t oce_feature_bitmap;
 	uint32_t offload_11k_enable_bitmask;

+ 0 - 3
core/sme/inc/csr_internal.h

@@ -462,9 +462,6 @@ struct csr_config {
 	bool enable_ul_mimo;
 #endif
 	bool is_force_1x1;
-	uint16_t wlm_latency_enable;
-	uint16_t wlm_latency_level;
-	uint32_t wlm_latency_flags[CSR_NUM_WLM_LATENCY_LEVEL];
 	uint8_t oce_feature_bitmap;
 	uint32_t offload_11k_enable_bitmask;
 	bool wep_tkip_in_he;

+ 0 - 2
core/sme/inc/sme_rrm_api.h

@@ -41,8 +41,6 @@ QDF_STATUS sme_rrm_msg_processor(struct mac_context *mac, uint16_t msg_type,
 		void *pMsgBuf);
 QDF_STATUS rrm_close(struct mac_context *mac);
 QDF_STATUS rrm_open(struct mac_context *mac);
-QDF_STATUS rrm_change_default_config_param(struct mac_context *mac,
-		struct rrm_config_param *rrm_config);
 QDF_STATUS sme_rrm_neighbor_report_request(struct mac_context *mac,
 		uint8_t sessionId, tpRrmNeighborReq pNeighborReq,
 		tpRrmNeighborRspCallbackInfo callbackInfo);

+ 2 - 9
core/sme/src/common/sme_api.c

@@ -940,13 +940,6 @@ QDF_STATUS sme_update_config(mac_handle_t mac_handle, tpSmeConfigParams
 		sme_err("csr_change_default_config_param failed status: %d",
 			status);
 
-	status = rrm_change_default_config_param(mac, &pSmeConfigParams->
-						rrmConfig);
-
-	if (!QDF_IS_STATUS_SUCCESS(status))
-		sme_err("rrm_change_default_config_param failed status: %d",
-			status);
-
 	/* For SOC, CFG is set before start We don't want to apply global CFG
 	 * in connect state because that may cause some side affect
 	 */
@@ -8710,7 +8703,7 @@ QDF_STATUS sme_set_wlm_latency_level(mac_handle_t mac_handle,
 	if (!wma)
 		return QDF_STATUS_E_FAILURE;
 
-	if (!mac_ctx->roam.configParam.wlm_latency_enable) {
+	if (!mac_ctx->mlme_cfg->wlm_config.latency_enable) {
 		QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_ERROR,
 			  "%s: WLM latency level setting is disabled",
 			   __func__);
@@ -8723,7 +8716,7 @@ QDF_STATUS sme_set_wlm_latency_level(mac_handle_t mac_handle,
 
 	params.wlm_latency_level = latency_level;
 	params.wlm_latency_flags =
-		mac_ctx->roam.configParam.wlm_latency_flags[latency_level];
+		mac_ctx->mlme_cfg->wlm_config.latency_flags[latency_level];
 	params.vdev_id = session_id;
 
 	status = wma_set_wlm_latency_level(wma, &params);

+ 0 - 17
core/sme/src/csr/csr_api_roam.c

@@ -2479,7 +2479,6 @@ QDF_STATUS csr_change_default_config_param(struct mac_context *mac,
 					   tCsrConfigParam *pParam)
 {
 	QDF_STATUS status = QDF_STATUS_SUCCESS;
-	int i;
 
 	if (pParam) {
 		mac->roam.configParam.is_force_1x1 =
@@ -2726,14 +2725,6 @@ QDF_STATUS csr_change_default_config_param(struct mac_context *mac,
 			pParam->enable_bcast_probe_rsp;
 		mac->roam.configParam.is_fils_enabled =
 			pParam->is_fils_enabled;
-		mac->roam.configParam.wlm_latency_enable =
-			pParam->wlm_latency_enable;
-		mac->roam.configParam.wlm_latency_level =
-			pParam->wlm_latency_level;
-		for (i = 0; i < CSR_NUM_WLM_LATENCY_LEVEL; i++) {
-			mac->roam.configParam.wlm_latency_flags[i] =
-				pParam->wlm_latency_flags[i];
-		}
 		mac->roam.configParam.oce_feature_bitmap =
 			pParam->oce_feature_bitmap;
 		mac->roam.configParam.roam_force_rssi_trigger =
@@ -2780,7 +2771,6 @@ void csr_get_11k_offload_config_param(struct csr_config *csr_config,
 
 QDF_STATUS csr_get_config_param(struct mac_context *mac, tCsrConfigParam *pParam)
 {
-	int i;
 	struct csr_config *cfg_params = &mac->roam.configParam;
 
 	if (!pParam)
@@ -2886,13 +2876,6 @@ QDF_STATUS csr_get_config_param(struct mac_context *mac, tCsrConfigParam *pParam
 
 	csr_get_11k_offload_config_param(&mac->roam.configParam, pParam);
 
-	pParam->wlm_latency_enable = mac->roam.configParam.wlm_latency_enable;
-	pParam->wlm_latency_level = mac->roam.configParam.wlm_latency_level;
-	for (i = 0; i < CSR_NUM_WLM_LATENCY_LEVEL; i++) {
-		pParam->wlm_latency_flags[i] =
-			mac->roam.configParam.wlm_latency_flags[i];
-	}
-
 	return QDF_STATUS_SUCCESS;
 }
 

+ 20 - 17
core/sme/src/rrm/sme_rrm.c

@@ -1408,6 +1408,24 @@ static void rrm_neighbor_rsp_timeout_handler(void *userData)
 	rrm_indicate_neighbor_report_result(mac, QDF_STATUS_E_FAILURE);
 }
 
+/**
+ * rrm_change_default_config_param() - Changing default config param to new
+ * @mac - The handle returned by mac_open.
+ *
+ * Return: None
+ */
+static void rrm_change_default_config_param(struct mac_context *mac)
+{
+	mac->rrm.rrmSmeContext.rrmConfig.rrm_enabled =
+			mac->mlme_cfg->rrm_config.rrm_enabled;
+	mac->rrm.rrmSmeContext.rrmConfig.max_randn_interval =
+			mac->mlme_cfg->rrm_config.rrm_rand_interval;
+
+	qdf_mem_copy(&mac->rrm.rrmSmeContext.rrmConfig.rm_capability,
+		     &mac->mlme_cfg->rrm_config.rm_capability,
+		     RMENABLEDCAP_MAX_LEN);
+}
+
 /**
  * rrm_open() - Initialze all RRM module
  * @ mac: The handle returned by mac_open.
@@ -1454,6 +1472,8 @@ QDF_STATUS rrm_open(struct mac_context *mac)
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	rrm_change_default_config_param(mac);
+
 	return QDF_STATUS_SUCCESS;
 }
 
@@ -1521,23 +1541,6 @@ QDF_STATUS rrm_close(struct mac_context *mac)
 
 }
 
-/**
- * rrm_change_default_config_param() - Changing default config param to new
- * @mac - The handle returned by mac_open.
- * param  pRrmConfig - pointer to new rrm configs.
- *
- * Return: QDF_STATUS
- *           QDF_STATUS_SUCCESS  success
- */
-QDF_STATUS rrm_change_default_config_param(struct mac_context *mac,
-					   struct rrm_config_param *rrm_config)
-{
-	qdf_mem_copy(&mac->rrm.rrmSmeContext.rrmConfig, rrm_config,
-		     sizeof(struct rrm_config_param));
-
-	return QDF_STATUS_SUCCESS;
-}
-
 QDF_STATUS rrm_start(struct mac_context *mac_ctx)
 {
 	tpRrmSMEContext smerrmctx = &mac_ctx->rrm.rrmSmeContext;