Ver Fonte

qcacld-3.0: ADD MLME INI item of WMM Config

Add the WMM config ini config
CFG_TL_DELAYED_TRGR_FRM_INT_NAME to MLME cfg.

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

Change-Id: Ifaf8072a78f21760e00973e625d7c8e41d8b51a6
CRs-Fixed: 2361533
Abhinav Kumar há 6 anos atrás
pai
commit
c8c215007a

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

@@ -1943,6 +1943,9 @@ static void mlme_init_wmm_in_cfg(struct wlan_objmgr_psoc *psoc,
 		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);
+	wmm_params->delayed_trigger_frm_int =
+		cfg_get(psoc, CFG_TL_DELAYED_TRGR_FRM_INTERVAL);
+
 }
 
 static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

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

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2012-2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2012-2019 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
@@ -960,6 +960,29 @@
 		0, \
 		"ACM value for AC")
 
+/*
+ * <ini>
+ * DelayedTriggerFrmInt - UAPSD delay interval
+ * @Min: 1
+ * @Max: 4294967295
+ * @Default: 3000
+ *
+ * This parameter controls the delay interval(in ms) of UAPSD auto trigger.
+ *
+ * Supported Feature: WMM
+ *
+ * Usage: Internal/External
+ *
+ * </ini>
+ */
+#define CFG_TL_DELAYED_TRGR_FRM_INTERVAL CFG_INI_UINT( \
+		"DelayedTriggerFrmInt", \
+		1, \
+		4294967295UL, \
+		3000, \
+		CFG_VALUE_OR_DEFAULT, \
+		"UAPSD auto trigger Interval")
+
 #define CFG_WMM_PARAMS_ALL \
 	CFG(CFG_QOS_ENABLED) \
 	CFG(CFG_WME_ENABLED) \
@@ -1001,6 +1024,7 @@
 	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)
+	CFG(CFG_QOS_ADDTS_WHEN_ACM_IS_OFF) \
+	CFG(CFG_TL_DELAYED_TRGR_FRM_INTERVAL)
 
 #endif /* __CFG_MLME_FE_WMM_H */

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

@@ -896,6 +896,17 @@ QDF_STATUS wlan_mlme_get_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
 QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
 					   bool value);
 
+/**
+ * wlan_mlme_get_tl_delayed_trgr_frm_int() - Get delay interval(in ms)
+ * of UAPSD auto trigger
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Return: None
+ */
+void wlan_mlme_get_tl_delayed_trgr_frm_int(struct wlan_objmgr_psoc *psoc,
+					   uint32_t *value);
+
 /**
  * wlan_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
  * for VI

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

@@ -1530,6 +1530,7 @@ struct wlan_mlme_wmm_ac_bk {
  * @ac_vi: Default TSPEC parameters for AC_VI
  * @ac_be: Default TSPEC parameters for AC_BE
  * @ac_bk: Default TSPEC parameters for AC_BK
+ * @delayed_trigger_frm_int: delay int(in ms) of UAPSD auto trigger
  */
 struct wlan_mlme_wmm_params {
 	bool qos_enabled;
@@ -1543,6 +1544,7 @@ struct wlan_mlme_wmm_params {
 	struct wlan_mlme_wmm_ac_vi ac_vi;
 	struct wlan_mlme_wmm_ac_be ac_be;
 	struct wlan_mlme_wmm_ac_bk ac_bk;
+	uint32_t delayed_trigger_frm_int;
 };
 
 /**

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

@@ -2679,6 +2679,23 @@ QDF_STATUS ucfg_mlme_ibss_power_save_setup(struct wlan_objmgr_psoc *psoc,
 	return wlan_mlme_ibss_power_save_setup(psoc, vdev_id);
 }
 
+/**
+ * ucfg_mlme_get_tl_delayed_trgr_frm_int() - Get delay interval(in ms)
+ * of UAPSD auto trigger.
+ * @psoc: pointer to psoc object
+ * @value: Value that needs to be set from the caller
+ *
+ * Inline UCFG API to be used by HDD/OSIF callers
+ *
+ * Return: None
+ */
+static inline
+void ucfg_mlme_get_tl_delayed_trgr_frm_int(struct wlan_objmgr_psoc *psoc,
+					   uint32_t *value)
+{
+	wlan_mlme_get_tl_delayed_trgr_frm_int(psoc, value);
+}
+
 /**
  * ucfg_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
  * for VI

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

@@ -976,6 +976,22 @@ wlan_mlme_get_manufacture_product_name(struct wlan_objmgr_psoc *psoc,
 	return QDF_STATUS_SUCCESS;
 }
 
+
+void wlan_mlme_get_tl_delayed_trgr_frm_int(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_TL_DELAYED_TRGR_FRM_INTERVAL);
+		return;
+	}
+
+	*value = mlme_obj->cfg.wmm_params.delayed_trigger_frm_int;
+}
+
+
 QDF_STATUS wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc,
 				       uint8_t *value)
 {

+ 2 - 28
components/tdls/dispatcher/inc/wlan_tdls_cfg.h

@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2018-2019 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
@@ -702,31 +702,6 @@
 	CFG_VALUE_OR_DEFAULT, \
 	"Timer to defer for enabling TDLS on P2P listen")
 
-/*
- * <ini>
- * DelayedTriggerFrmInt - delayed trigger frame interval.
- * @Min: 500
- * @Max: 6000
- * @Default: 2000
- *
- * This ini is used to set the delayed trigger frame interval.
- *
- * Related: gEnableTDLSSupport.
- *
- * Supported Feature: TDLS
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-#define CFG_TDLS_DELAYED_TRGR_FRM_INT CFG_INI_UINT( \
-	"DelayedTriggerFrmInt", \
-	1, \
-	4294967295UL, \
-	3000, \
-	CFG_VALUE_OR_DEFAULT, \
-	"delayed trigger frame interval")
-
 #define CFG_TDLS_ALL \
 	CFG(CFG_TDLS_QOS_WMM_UAPSD_MASK) \
 	CFG(CFG_TDLS_BUF_STA_ENABLED) \
@@ -753,7 +728,6 @@
 	CFG(CFG_TDLS_WMM_MODE_ENABLE) \
 	CFG(CFG_TDLS_SCAN_ENABLE) \
 	CFG(CFG_TDLS_PEER_KICKOUT_THRESHOLD) \
-	CFG(CFG_TDLS_ENABLE_DEFER_TIMER) \
-	CFG(CFG_TDLS_DELAYED_TRGR_FRM_INT)
+	CFG(CFG_TDLS_ENABLE_DEFER_TIMER)
 
 #endif

+ 1 - 1
components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c

@@ -201,7 +201,7 @@ static QDF_STATUS tdls_object_init_params(
 	tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold =
 			cfg_get(psoc, CFG_TDLS_PEER_KICKOUT_THRESHOLD);
 	tdls_soc_obj->tdls_configs.delayed_trig_framint =
-			cfg_get(psoc, CFG_TDLS_DELAYED_TRGR_FRM_INT);
+			cfg_get(psoc, CFG_TL_DELAYED_TRGR_FRM_INTERVAL);
 	tdls_soc_obj->tdls_configs.tdls_wmm_mode_enable =
 			cfg_get(psoc,  CFG_TDLS_WMM_MODE_ENABLE);
 	tdls_soc_obj->tdls_configs.tdls_off_chan_enable =

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

@@ -149,28 +149,6 @@ enum hdd_dot11_mode {
 #define CFG_DOT11_MODE_DEFAULT                 eHDD_DOT11_MODE_11ax
 #define CFG_DOT11_MODE_MAX                     eHDD_DOT11_MODE_11ax
 
-/* WMM configuration */
-/*
- * <ini>
- * DelayedTriggerFrmInt - UAPSD delay interval
- * @Min: 1
- * @Max: 4294967295
- * @Default: 3000
- *
- * This parameter controls the delay interval(in ms) of UAPSD auto trigger.
- *
- * Supported Feature: WMM
- *
- * Usage: Internal/External
- *
- * </ini>
- */
-
-#define CFG_TL_DELAYED_TRGR_FRM_INT_NAME                 "DelayedTriggerFrmInt"
-#define CFG_TL_DELAYED_TRGR_FRM_INT_MIN                  1
-#define CFG_TL_DELAYED_TRGR_FRM_INT_MAX                  (4294967295UL)
-#define CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT              3000
-
 /*
  * <ini>
  * gEnableSNRMonitoring - Enables SNR Monitoring
@@ -289,8 +267,6 @@ struct hdd_config {
 	/* Bitmap for operating voltage corner mode */
 	uint32_t vc_mode_cfg_bitmap;
 #endif
-	uint32_t DelayedTriggerFrmInt;
-
 #ifdef ENABLE_MTRACE_LOG
 	bool enable_mtrace;
 #endif

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

@@ -63,13 +63,6 @@ struct reg_table_entry g_registry_table[] = {
 		     CFG_DOT11_MODE_MIN,
 		     CFG_DOT11_MODE_MAX),
 
-	REG_VARIABLE(CFG_TL_DELAYED_TRGR_FRM_INT_NAME, WLAN_PARAM_Integer,
-		     struct hdd_config, DelayedTriggerFrmInt,
-		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK_ASSUME_DEFAULT,
-		     CFG_TL_DELAYED_TRGR_FRM_INT_DEFAULT,
-		     CFG_TL_DELAYED_TRGR_FRM_INT_MIN,
-		     CFG_TL_DELAYED_TRGR_FRM_INT_MAX),
-
 	REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
 		     struct hdd_config, fEnableSNRMonitoring,
 		     VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,

+ 13 - 5
core/hdd/src/wlan_hdd_wmm.c

@@ -123,6 +123,7 @@ static void hdd_wmm_enable_tl_uapsd(struct hdd_wmm_qos_context *pQosContext)
 	uint32_t suspension_interval;
 	enum sme_qos_wmm_dir_type direction;
 	bool psb;
+	uint32_t delayed_trgr_frm_int;
 
 	/* The TSPEC must be valid */
 	if (pAc->wmmAcTspecValid == false) {
@@ -155,6 +156,9 @@ static void hdd_wmm_enable_tl_uapsd(struct hdd_wmm_qos_context *pQosContext)
 		hdd_debug("No change in U-APSD parameters");
 		return;
 	}
+
+	ucfg_mlme_get_tl_delayed_trgr_frm_int(hdd_ctx->psoc,
+					      &delayed_trgr_frm_int);
 	/* everything is in place to notify TL */
 	status =
 		sme_enable_uapsd_for_ac((WLAN_HDD_GET_STATION_CTX_PTR(adapter))->
@@ -163,7 +167,7 @@ static void hdd_wmm_enable_tl_uapsd(struct hdd_wmm_qos_context *pQosContext)
 					   pAc->wmmAcTspecInfo.ts_info.up,
 					   service_interval, suspension_interval,
 					   direction, psb, adapter->vdev_id,
-					   hdd_ctx->config->DelayedTriggerFrmInt);
+					   delayed_trgr_frm_int);
 
 	if (!QDF_IS_STATUS_SUCCESS(status)) {
 		hdd_err("Failed to enable U-APSD for AC=%d", acType);
@@ -2005,6 +2009,7 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 	uint32_t srv_value = 0;
 	uint32_t sus_value = 0;
 	struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter);
+	uint32_t delayed_trgr_frm_int;
 
 	/* when we associate we need to notify TL if it needs to
 	 * enable UAPSD for any access categories
@@ -2032,6 +2037,9 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 
 	hdd_debug("U-APSD mask is 0x%02x", (int)uapsdMask);
 
+	ucfg_mlme_get_tl_delayed_trgr_frm_int(hdd_ctx->psoc,
+					      &delayed_trgr_frm_int);
+
 	if (uapsdMask & HDD_AC_VO) {
 		status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc,
 							     &srv_value);
@@ -2052,7 +2060,7 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 				SME_AC_VO, 7, 7, srv_value, sus_value,
 				SME_QOS_WMM_TS_DIR_BOTH, 1,
 				adapter->vdev_id,
-				hdd_ctx->config->DelayedTriggerFrmInt);
+				delayed_trgr_frm_int);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}
@@ -2077,7 +2085,7 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 				SME_AC_VI, 5, 5, srv_value, sus_value,
 				SME_QOS_WMM_TS_DIR_BOTH, 1,
 				adapter->vdev_id,
-				hdd_ctx->config->DelayedTriggerFrmInt);
+				delayed_trgr_frm_int);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}
@@ -2102,7 +2110,7 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 				SME_AC_BK, 2, 2, srv_value, sus_value,
 				SME_QOS_WMM_TS_DIR_BOTH, 1,
 				adapter->vdev_id,
-				hdd_ctx->config->DelayedTriggerFrmInt);
+				delayed_trgr_frm_int);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}
@@ -2127,7 +2135,7 @@ QDF_STATUS hdd_wmm_assoc(struct hdd_adapter *adapter,
 				SME_AC_BE, 3, 3, srv_value, sus_value,
 				SME_QOS_WMM_TS_DIR_BOTH, 1,
 				adapter->vdev_id,
-				hdd_ctx->config->DelayedTriggerFrmInt);
+				delayed_trgr_frm_int);
 
 		QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
 	}