Ver Fonte

qcacld-3.0: ADD MLME INI items of WMM Config

Add the following WMM config ini configs to MLME cfg:

1. CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME
2. CFG_QOS_WMM_BURST_SIZE_DEFN_NAME
3. CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME
4. CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME

Introduce the basic infra APIs related to these configs
from mlme.

Change-Id: I149971768a7193099926e2778f093dcd073f0461
CRs-Fixed: 2327692
Abhinav Kumar há 6 anos atrás
pai
commit
ab57671afd

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

@@ -1539,6 +1539,21 @@ static void mlme_init_wep_cfg(struct wlan_mlme_wep_cfg *wep_params)
 	mlme_init_wep_keys(wep_params);
 }
 
+#ifdef FEATURE_WLAN_ESE
+static void mlme_init_inactivity_intv(struct wlan_objmgr_psoc *psoc,
+				      struct wlan_mlme_wmm_params *wmm_params)
+{
+	wmm_params->wmm_tspec_element.inactivity_intv =
+		cfg_get(psoc, CFG_QOS_WMM_INACTIVITY_INTERVAL);
+}
+#else
+static inline void
+mlme_init_inactivity_intv(struct wlan_objmgr_psoc *psoc,
+			  struct wlan_mlme_wmm_params *wmm_params)
+{
+}
+#endif /* FEATURE_WLAN_ESE */
+
 static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 				 struct wlan_mlme_wmm_params *wmm_params)
 {
@@ -1614,6 +1629,14 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 		cfg_get(psoc, CFG_QOS_WMM_UAPSD_MASK);
 	wmm_params->wmm_config.bimplicit_qos_enabled =
 		cfg_get(psoc, CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED);
+
+	mlme_init_inactivity_intv(psoc, wmm_params);
+	wmm_params->wmm_tspec_element.burst_size_def =
+		cfg_get(psoc, CFG_QOS_WMM_BURST_SIZE_DEFN);
+	wmm_params->wmm_tspec_element.ts_ack_policy =
+		cfg_get(psoc, CFG_QOS_WMM_TS_INFO_ACK_POLICY);
+	wmm_params->wmm_tspec_element.ts_acm_is_off =
+		cfg_get(psoc, CFG_QOS_ADDTS_WHEN_ACM_IS_OFF);
 }
 
 static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

+ 115 - 2
components/mlme/dispatcher/inc/cfg_mlme_fe_wmm.h

@@ -778,7 +778,7 @@
 		"WmmIsEnabled", \
 		0, \
 		2, \
-		2, \
+		0, \
 		CFG_VALUE_OR_DEFAULT, \
 		"Enable WMM feature")
 
@@ -851,6 +851,115 @@
 		0, \
 		"Enable implicit QOS")
 
+#ifdef FEATURE_WLAN_ESE
+/*
+ * <ini>
+ * UapsdMask - To setup Infra Inactivity Interval for ACs
+ * @Min: 0
+ * @Max: 4294967295UL
+ * @Default: 0
+ *
+ * This ini is used to setup Infra Inactivity Interval for
+ * ACs.
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_INACTIVITY_INTERVAL CFG_INI_UINT( \
+		"InfraInactivityInterval", \
+		0, \
+		4294967295UL, \
+		0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"Infra Inactivity Interval")
+
+#define QOS_CFG CFG(CFG_QOS_WMM_INACTIVITY_INTERVAL)
+#else
+
+#define QOS_CFG
+
+#endif /* FEATURE_WLAN_ESE */
+
+/*
+ * <ini>
+ * burstSizeDefinition - Set TS burst size
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to set TS burst size
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_BURST_SIZE_DEFN CFG_INI_BOOL( \
+		"burstSizeDefinition", \
+		0, \
+		"burst size definition")
+
+/*
+ * <ini>
+ * tsInfoAckPolicy - Set TS ack policy
+ * @Min: 0x00
+ * @Max: 0x01
+ * @Default: 0x00
+ *
+ * This ini is used to set TS ack policy
+ * TS Info Ack Policy can be either of the
+ * following values:
+ * enum mlme_ts_info_ack_policy {
+ * TS_INFO_ACK_POLICY_NORMAL_ACK = 0,
+ * TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 1,
+ * }
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_WMM_TS_INFO_ACK_POLICY CFG_INI_UINT( \
+		"tsInfoAckPolicy", \
+		0, \
+		1, \
+		0, \
+		CFG_VALUE_OR_DEFAULT, \
+		"ts info ack policy")
+
+/*
+ * <ini>
+ * gAddTSWhenACMIsOff - Set ACM value for AC
+ * @Min: 0
+ * @Max: 1
+ * @Default: 0
+ *
+ * This ini is used to set ACM value for AC
+ *
+ * Related: None.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_QOS_ADDTS_WHEN_ACM_IS_OFF CFG_INI_BOOL( \
+		"gAddTSWhenACMIsOff", \
+		0, \
+		"ACM value for AC")
+
 #define CFG_WMM_PARAMS_ALL \
 	CFG(CFG_QOS_ENABLED) \
 	CFG(CFG_WME_ENABLED) \
@@ -888,6 +997,10 @@
 	CFG(CFG_QOS_WMM_MODE) \
 	CFG(CFG_QOS_WMM_80211E_ENABLED) \
 	CFG(CFG_QOS_WMM_UAPSD_MASK) \
-	CFG(CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED)
+	CFG(CFG_QOS_WMM_IMPLICIT_SETUP_ENABLED) \
+	QOS_CFG \
+	CFG(CFG_QOS_WMM_BURST_SIZE_DEFN) \
+	CFG(CFG_QOS_WMM_TS_INFO_ACK_POLICY) \
+	CFG(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF)
 
 #endif /* __CFG_MLME_FE_WMM_H */

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

@@ -1062,6 +1062,48 @@ QDF_STATUS
 wlan_mlme_get_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
 				      bool *value);
 
+#ifdef FEATURE_WLAN_ESE
+/**
+ * wlan_mlme_get_inactivity_interval() - Infra Inactivity Interval
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: None
+ */
+void wlan_mlme_get_inactivity_interval(struct wlan_objmgr_psoc *psoc,
+				       uint32_t *value);
+#endif
+
+/**
+ * wlan_mlme_get_is_ts_burst_size_enable() - Get TS burst size flag
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: None
+ */
+void wlan_mlme_get_is_ts_burst_size_enable(struct wlan_objmgr_psoc *psoc,
+					   bool *value);
+
+/**
+ * wlan_mlme_get_ts_info_ack_policy() - Get TS ack policy
+ * @psoc: pointer to psoc object
+ * @value: pointer to the value which will be filled for the caller
+ *
+ * Return: None
+ */
+void wlan_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
+				      enum mlme_ts_info_ack_policy *value);
+
+/**
+ * wlan_mlme_get_ts_acm_value_for_ac() - Get ACM value for AC
+ * @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_ts_acm_value_for_ac(struct wlan_objmgr_psoc *psoc, bool *value);
+
 /**
  * wlan_mlme_get_wmm_dir_ac_vo() - Get TSPEC direction
  * for VO

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

@@ -176,6 +176,16 @@ struct mlme_edca_ac_be {
 	uint32_t be_aifs;
 };
 
+/**
+ * enum mlme_ts_info_ack_policy - TS Info Ack Policy
+ * @TS_INFO_ACK_POLICY_NORMAL_ACK:normal ack
+ * @TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK: HT immediate block ack
+ */
+enum mlme_ts_info_ack_policy {
+	TS_INFO_ACK_POLICY_NORMAL_ACK = 0,
+	TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 1,
+};
+
 /**
  * struct mlme_edca_params - EDCA pramaters related config items
  *
@@ -1114,6 +1124,23 @@ struct wlan_mlme_wmm_config {
 	bool bimplicit_qos_enabled;
 };
 
+/**
+ * struct wlan_mlme_wmm_tspec_element - Default TSPEC parameters
+ * from the wmm spec
+ * @inactivity_interval: inactivity_interval as per wmm spec
+ * @burst_size_def: TS burst size
+ * @ts_ack_policy: TS Info ACK policy
+ * @ts_acm_is_off: ACM is off for AC
+ */
+struct wlan_mlme_wmm_tspec_element {
+#ifdef FEATURE_WLAN_ESE
+	uint32_t inactivity_intv;
+#endif
+	bool burst_size_def;
+	enum mlme_ts_info_ack_policy ts_ack_policy;
+	bool ts_acm_is_off;
+};
+
 /**
  * struct wlan_mlme_wmm_ac_vo - Default TSPEC parameters
  * for AC_VO
@@ -1206,6 +1233,9 @@ struct wlan_mlme_wmm_ac_bk {
  * @wme_enabled: AP is enabled with WMM
  * @max_sp_length: Maximum SP Length
  * @wsm_enabled: AP is enabled with WSM
+ * @edca_profile: WMM Edca profile
+ * @wmm_config: WMM configuration
+ * @wmm_tspec_element: Default TSPEC parameters
  * @ac_vo: Default TSPEC parameters for AC_VO
  * @ac_vi: Default TSPEC parameters for AC_VI
  * @ac_be: Default TSPEC parameters for AC_BE
@@ -1218,6 +1248,7 @@ struct wlan_mlme_wmm_params {
 	bool wsm_enabled;
 	uint32_t edca_profile;
 	struct wlan_mlme_wmm_config wmm_config;
+	struct wlan_mlme_wmm_tspec_element wmm_tspec_element;
 	struct wlan_mlme_wmm_ac_vo ac_vo;
 	struct wlan_mlme_wmm_ac_vi ac_vi;
 	struct wlan_mlme_wmm_ac_be ac_be;

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

@@ -2359,4 +2359,69 @@ ucfg_mlme_get_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_get_implicit_qos_is_enabled(psoc, value);
 }
 
+#ifdef FEATURE_WLAN_ESE
+/**
+ * ucfg_mlme_get_inactivity_interval() - Infra Inactivity Interval
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be get from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: None
+ */
+static inline void
+ucfg_mlme_get_inactivity_interval(struct wlan_objmgr_psoc *psoc,
+				  uint32_t *value)
+{
+	wlan_mlme_get_inactivity_interval(psoc, value);
+}
+#endif
+
+/**
+ * ucfg_mlme_get_is_ts_burst_size_enable() - Get TS burst size flag
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be get from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: None
+ */
+static inline void
+ucfg_mlme_get_is_ts_burst_size_enable(struct wlan_objmgr_psoc *psoc,
+				      bool *value)
+{
+	wlan_mlme_get_is_ts_burst_size_enable(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_ts_info_ack_policy() - Get TS ack policy
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be get from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: None
+ */
+static inline void
+ucfg_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
+				 enum mlme_ts_info_ack_policy *value)
+{
+	wlan_mlme_get_ts_info_ack_policy(psoc, value);
+}
+
+/**
+ * ucfg_mlme_get_ts_acm_value_for_ac() - Get ACM value for AC
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be get from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: QDF Status
+ */
+static inline QDF_STATUS
+ucfg_mlme_get_ts_acm_value_for_ac(struct wlan_objmgr_psoc *psoc, bool *value)
+{
+	return wlan_mlme_get_ts_acm_value_for_ac(psoc, value);
+}
+
 #endif /* _WLAN_MLME_UCFG_API_H_ */

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

@@ -1527,6 +1527,70 @@ wlan_mlme_get_implicit_qos_is_enabled(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+#ifdef FEATURE_WLAN_ESE
+void wlan_mlme_get_inactivity_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) {
+		mlme_err("Failed to get MLME Obj");
+		*value = cfg_default(CFG_QOS_WMM_INACTIVITY_INTERVAL);
+		return;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.wmm_tspec_element.inactivity_intv;
+}
+#endif
+
+void wlan_mlme_get_is_ts_burst_size_enable(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");
+		*value = cfg_default(CFG_QOS_WMM_BURST_SIZE_DEFN);
+		return;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.wmm_tspec_element.burst_size_def;
+}
+
+void wlan_mlme_get_ts_info_ack_policy(struct wlan_objmgr_psoc *psoc,
+				      enum mlme_ts_info_ack_policy *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");
+		*value = cfg_default(CFG_QOS_WMM_TS_INFO_ACK_POLICY);
+		return;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.wmm_tspec_element.ts_ack_policy;
+
+}
+
+QDF_STATUS
+wlan_mlme_get_ts_acm_value_for_ac(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.wmm_params.wmm_tspec_element.ts_acm_is_off;
+
+	return QDF_STATUS_SUCCESS;
+}
+
 QDF_STATUS wlan_mlme_set_sap_listen_interval(struct wlan_objmgr_psoc *psoc,
 					     int value)
 {

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

@@ -2731,50 +2731,6 @@ enum station_keepalive_method {
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_MAX              (1)
 #define CFG_QOS_IMPLICIT_SETUP_ENABLED_DEFAULT          (0)
 
-/*
- * <ini>
- * burstSizeDefinition - Set TS burst size
- * @Min: 0
- * @Max: 1
- * @Default: 0
- *
- * This ini is used to set TS burst size
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_BURST_SIZE_DEFN_NAME                "burstSizeDefinition"
-#define CFG_QOS_WMM_BURST_SIZE_DEFN_MIN                  (0)
-#define CFG_QOS_WMM_BURST_SIZE_DEFN_MAX                  (1)
-#define CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT              (0)
-
-/*
- * <ini>
- * tsInfoAckPolicy - Set TS ack policy
- * @Min: 0x00
- * @Max: 0x01
- * @Default: 0x00
- *
- * This ini is used to set TS ack policy
- *
- * Related: None.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME              "tsInfoAckPolicy"
-#define CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN                (0x00)
-#define CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX                (0x01)
-#define CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT            (0x00)
-
 /*
  * <ini>
  * gAddTSWhenACMIsOff - Set ACM value for AC
@@ -2799,30 +2755,6 @@ enum station_keepalive_method {
 #define CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT            (0)
 
 #ifdef FEATURE_WLAN_ESE
-
-/*
- * <ini>
- * InfraInactivityInterval - WMM inactivity interval
- * @Min: 0
- * @Max: 4294967295
- * @Default: 0
- *
- * This ini is used to set the value of inactivity interval for WMM TSPEC.
- *
- * Related: None.
- *
- * Supported Feature: WMM/ESE
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME    "InfraInactivityInterval"
-#define CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN      (0)
-#define CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX      (4294967295UL)
-#define CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT  (0) /* disabled */
-
 /*
  * <ini>
  * EseEnabled - Enable ESE
@@ -6532,7 +6464,6 @@ struct hdd_config {
 	bool isFastRoamIniFeatureEnabled;
 	bool MAWCEnabled;
 #ifdef FEATURE_WLAN_ESE
-	uint32_t InfraInactivityInterval;
 	bool isEseIniFeatureEnabled;
 #endif
 	bool isFastTransitionEnabled;
@@ -6554,10 +6485,6 @@ struct hdd_config {
 #ifdef FEATURE_WLAN_SCAN_PNO
 	bool PnoOffload;
 #endif
-	bool burstSizeDefinition;
-	uint8_t tsInfoAckPolicy;
-
-	bool AddTSWhenACMIsOff;
 
 /* QDF Trace Control*/
 	uint16_t qdf_trace_enable_wdi;

+ 0 - 6
core/hdd/inc/wlan_hdd_wext.h

@@ -137,12 +137,6 @@ typedef enum {
 	HDD_WLAN_WMM_STATUS_MODIFY_UAPSD_SET_FAILED = 21
 } hdd_wlan_wmm_status_e;
 
-/** TS Info Ack Policy */
-enum hdd_wlan_wmm_ts_info_ack_policy {
-	HDD_WLAN_WMM_TS_INFO_ACK_POLICY_NORMAL_ACK = 0,
-	HDD_WLAN_WMM_TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK = 1,
-};
-
 /** Enable 11d */
 #define ENABLE_11D  1
 

+ 1 - 29
core/hdd/src/wlan_hdd_cfg.c

@@ -683,13 +683,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_WOW_DATA_INACTIVITY_TIMEOUT_MAX),
 
 #ifdef FEATURE_WLAN_ESE
-	REG_VARIABLE(CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_NAME,
-		     WLAN_PARAM_Integer,
-		     struct hdd_config, InfraInactivityInterval,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_DEFAULT,
-		     CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MIN,
-		     CFG_QOS_WMM_INFRA_INACTIVITY_INTERVAL_MAX),
 
 	REG_DYNAMIC_VARIABLE(CFG_ESE_FEATURE_ENABLED_NAME, WLAN_PARAM_Integer,
 			     struct hdd_config, isEseIniFeatureEnabled,
@@ -981,13 +974,6 @@ struct reg_table_entry g_registry_table[] = {
 			     cb_notify_set_roam_scan_hi_rssi_scan_params,
 			     eCSR_HI_RSSI_SCAN_RSSI_UB_ID),
 
-	REG_VARIABLE(CFG_QOS_WMM_BURST_SIZE_DEFN_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, burstSizeDefinition,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_BURST_SIZE_DEFN_DEFAULT,
-		     CFG_QOS_WMM_BURST_SIZE_DEFN_MIN,
-		     CFG_QOS_WMM_BURST_SIZE_DEFN_MAX),
-
 #ifdef FEATURE_WLAN_RA_FILTERING
 
 	REG_VARIABLE(CFG_RA_RATE_LIMIT_INTERVAL_NAME, WLAN_PARAM_Integer,
@@ -1007,13 +993,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_ENABLE_RUNTIME_PM_MAX),
 #endif
 
-	REG_VARIABLE(CFG_QOS_WMM_TS_INFO_ACK_POLICY_NAME, WLAN_PARAM_HexInteger,
-		     struct hdd_config, tsInfoAckPolicy,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_WMM_TS_INFO_ACK_POLICY_DEFAULT,
-		     CFG_QOS_WMM_TS_INFO_ACK_POLICY_MIN,
-		     CFG_QOS_WMM_TS_INFO_ACK_POLICY_MAX),
-
 	REG_VARIABLE(CFG_STA_KEEPALIVE_METHOD_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, sta_keepalive_method,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
@@ -1021,13 +1000,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_STA_KEEPALIVE_METHOD_MIN,
 		     CFG_STA_KEEPALIVE_METHOD_MAX),
 
-	REG_VARIABLE(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, AddTSWhenACMIsOff,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_DEFAULT,
-		     CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MIN,
-		     CFG_QOS_ADDTS_WHEN_ACM_IS_OFF_MAX),
-
 /* CFG_QDF_TRACE_ENABLE Parameters */
 	REG_VARIABLE(CFG_QDF_TRACE_ENABLE_WDI_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, qdf_trace_enable_wdi,
@@ -4029,7 +4001,7 @@ QDF_STATUS hdd_set_sme_config(struct hdd_context *hdd_ctx)
 		pConfig->nhi_rssi_scan_delay;
 	smeConfig->csrConfig.neighborRoamConfig.nhi_rssi_scan_rssi_ub =
 		pConfig->nhi_rssi_scan_rssi_ub;
-	smeConfig->csrConfig.addTSWhenACMIsOff = pConfig->AddTSWhenACMIsOff;
+
 	smeConfig->csrConfig.allowDFSChannelRoam = pConfig->allowDFSChannelRoam;
 
 	/* Enable/Disable MCC */

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

@@ -7810,11 +7810,11 @@ static int __iw_add_tspec(struct net_device *dev, struct iw_request_info *info,
 
 	/* validate the ts info ack policy */
 	switch (params[HDD_WLAN_WMM_PARAM_ACK_POLICY]) {
-	case HDD_WLAN_WMM_TS_INFO_ACK_POLICY_NORMAL_ACK:
+	case TS_INFO_ACK_POLICY_NORMAL_ACK:
 		tSpec.ts_info.ack_policy = SME_QOS_WMM_TS_ACK_POLICY_NORMAL_ACK;
 		break;
 
-	case HDD_WLAN_WMM_TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK:
+	case TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK:
 		tSpec.ts_info.ack_policy =
 			SME_QOS_WMM_TS_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK;
 		break;

+ 11 - 7
core/hdd/src/wlan_hdd_wmm.c

@@ -1022,6 +1022,8 @@ static void __hdd_wmm_do_implicit_qos(struct work_struct *work)
 	uint32_t rate_ac = 0;
 	uint16_t sba_ac = 0;
 	uint32_t uapsd_value = 0;
+	bool is_ts_burst_enable;
+	enum mlme_ts_info_ack_policy ack_policy;
 
 	hdd_debug("Entered, context %pK", pQosContext);
 
@@ -1340,19 +1342,21 @@ static void __hdd_wmm_do_implicit_qos(struct work_struct *work)
 		break;
 	}
 #ifdef FEATURE_WLAN_ESE
-	qosInfo.inactivity_interval =
-		(WLAN_HDD_GET_CTX(adapter))->config->InfraInactivityInterval;
+	ucfg_mlme_get_inactivity_interval(hdd_ctx->psoc, &uapsd_value);
+	qosInfo.inactivity_interval = uapsd_value;
 #endif
-	qosInfo.ts_info.burst_size_defn =
-		(WLAN_HDD_GET_CTX(adapter))->config->burstSizeDefinition;
+	ucfg_mlme_get_is_ts_burst_size_enable(hdd_ctx->psoc,
+					      &is_ts_burst_enable);
+	qosInfo.ts_info.burst_size_defn = is_ts_burst_enable;
 
-	switch ((WLAN_HDD_GET_CTX(adapter))->config->tsInfoAckPolicy) {
-	case HDD_WLAN_WMM_TS_INFO_ACK_POLICY_NORMAL_ACK:
+	ucfg_mlme_get_ts_info_ack_policy(hdd_ctx->psoc, &ack_policy);
+	switch (ack_policy) {
+	case TS_INFO_ACK_POLICY_NORMAL_ACK:
 		qosInfo.ts_info.ack_policy =
 			SME_QOS_WMM_TS_ACK_POLICY_NORMAL_ACK;
 		break;
 
-	case HDD_WLAN_WMM_TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK:
+	case TS_INFO_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK:
 		qosInfo.ts_info.ack_policy =
 			SME_QOS_WMM_TS_ACK_POLICY_HT_IMMEDIATE_BLOCK_ACK;
 		break;

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

@@ -1108,11 +1108,6 @@ typedef struct tagCsrConfigParam {
 	uint8_t RoamRssiDiff;
 	bool isWESModeEnabled;
 	tCsrNeighborRoamConfigParams neighborRoamConfig;
-	/*
-	 * Instead of Reassoc, send ADDTS/DELTS even when ACM is off for that AC
-	 * This is mandated by WMM-AC certification
-	 */
-	bool addTSWhenACMIsOff;
 	/*
 	 * Customer wants to optimize the scan time. Avoiding scans(passive)
 	 * on DFS channels while swipping through both bands can save some time

+ 2 - 6
core/sme/inc/csr_internal.h

@@ -34,6 +34,7 @@
 #include "csr_neighbor_roam.h"
 
 #include "sir_types.h"
+#include "wlan_mlme_public_struct.h"
 
 /* define scan return criteria. LIM should use these define as well */
 #define CSR_SCAN_RETURN_AFTER_ALL_CHANNELS          (0)
@@ -471,11 +472,6 @@ struct csr_config {
 
 	struct csr_neighbor_roamconfig neighborRoamConfig;
 
-	/*
-	 * Instead of Reassoc, send ADDTS/DELTS even when ACM is off for
-	 * that AC This is mandated by WMM-AC certification
-	 */
-	bool addTSWhenACMIsOff;
 	/*
 	 * Remove this code once SLM_Sessionization is supported
 	 * BMPS_WORKAROUND_NOT_NEEDED
@@ -1048,7 +1044,7 @@ struct csr_roamstruct {
 		(eCsrDynamicRoaming == (pSession)->roamingReason)  ||	\
 		(eCsrReassocRoaming == (pSession)->roamingReason))
 #define CSR_IS_ADDTS_WHEN_ACMOFF_SUPPORTED(pMac) \
-	(pMac->roam.configParam.addTSWhenACMIsOff)
+	(pMac->mlme_cfg->wmm_params.wmm_tspec_element.ts_acm_is_off = 0)
 #define CSR_IS_LOSTLINK_ROAMING(reason) \
 	((eCsrLostlinkRoamingDisassoc == (reason)) || \
 		(eCsrLostlinkRoamingDeauth == (reason)))

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

@@ -1726,7 +1726,6 @@ static void init_config_param(tpAniSirGlobal pMac)
 	pMac->roam.configParam.nVhtChannelWidth =
 		WNI_CFG_VHT_CHANNEL_WIDTH_80MHZ + 1;
 
-	pMac->roam.configParam.addTSWhenACMIsOff = 0;
 	pMac->roam.configParam.fScanTwice = false;
 
 	/* Remove this code once SLM_Sessionization is supported */
@@ -2733,8 +2732,6 @@ QDF_STATUS csr_change_default_config_param(tpAniSirGlobal pMac,
 		sme_debug("nRoamBeaconRssiWeight: %d",
 			pMac->roam.configParam.neighborRoamConfig.
 			nRoamBeaconRssiWeight);
-		pMac->roam.configParam.addTSWhenACMIsOff =
-			pParam->addTSWhenACMIsOff;
 		pMac->scan.fEnableDFSChnlScan = pParam->fEnableDFSChnlScan;
 		pMac->scan.scanResultCfgAgingTime = pParam->scanCfgAgingTime;
 		pMac->roam.configParam.fScanTwice = pParam->fScanTwice;
@@ -2922,7 +2919,6 @@ QDF_STATUS csr_get_config_param(tpAniSirGlobal pMac, tCsrConfigParam *pParam)
 	pParam->allow_tpc_from_ap = cfg_params->allow_tpc_from_ap;
 	pParam->statsReqPeriodicity = cfg_params->statsReqPeriodicity;
 	pParam->statsReqPeriodicityInPS = cfg_params->statsReqPeriodicityInPS;
-	pParam->addTSWhenACMIsOff = cfg_params->addTSWhenACMIsOff;
 	pParam->fEnableDFSChnlScan = pMac->scan.fEnableDFSChnlScan;
 	pParam->fScanTwice = cfg_params->fScanTwice;
 	pParam->fFirstScanOnly2GChnl = pMac->scan.fFirstScanOnly2GChnl;