diff --git a/components/mlme/core/src/wlan_mlme_main.c b/components/mlme/core/src/wlan_mlme_main.c
index 9d60f3043d..7edbf61f8b 100644
--- a/components/mlme/core/src/wlan_mlme_main.c
+++ b/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,
diff --git a/components/mlme/dispatcher/inc/cfg_mlme_fe_wmm.h b/components/mlme/dispatcher/inc/cfg_mlme_fe_wmm.h
index bbde4a2b5b..1f2edbcc27 100644
--- a/components/mlme/dispatcher/inc/cfg_mlme_fe_wmm.h
+++ b/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")
+/*
+ *
+ * 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
+ *
+ *
+ */
+#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 */
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_api.h b/components/mlme/dispatcher/inc/wlan_mlme_api.h
index 1a986b58dd..a20f753980 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_api.h
+++ b/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
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h b/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
index 7e2a53df4d..b92767e1c3 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_public_struct.h
+++ b/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;
};
/**
diff --git a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h b/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
index 78e6423411..47d4d0654f 100644
--- a/components/mlme/dispatcher/inc/wlan_mlme_ucfg_api.h
+++ b/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
diff --git a/components/mlme/dispatcher/src/wlan_mlme_api.c b/components/mlme/dispatcher/src/wlan_mlme_api.c
index c5effce3fa..3436e70348 100644
--- a/components/mlme/dispatcher/src/wlan_mlme_api.c
+++ b/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)
{
diff --git a/components/tdls/dispatcher/inc/wlan_tdls_cfg.h b/components/tdls/dispatcher/inc/wlan_tdls_cfg.h
index 03827e593a..c3ff2a6249 100644
--- a/components/tdls/dispatcher/inc/wlan_tdls_cfg.h
+++ b/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")
-/*
- *
- * 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
- *
- *
- */
-#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
diff --git a/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c b/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
index 3113e0f4fb..d792812e2a 100644
--- a/components/tdls/dispatcher/src/wlan_tdls_ucfg_api.c
+++ b/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 =
diff --git a/core/hdd/inc/wlan_hdd_cfg.h b/core/hdd/inc/wlan_hdd_cfg.h
index 982ee332e1..6390b1b8d3 100644
--- a/core/hdd/inc/wlan_hdd_cfg.h
+++ b/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 */
-/*
- *
- * 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
- *
- *
- */
-
-#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
-
/*
*
* 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
diff --git a/core/hdd/src/wlan_hdd_cfg.c b/core/hdd/src/wlan_hdd_cfg.c
index 97585e80bb..486306c358 100644
--- a/core/hdd/src/wlan_hdd_cfg.c
+++ b/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,
diff --git a/core/hdd/src/wlan_hdd_wmm.c b/core/hdd/src/wlan_hdd_wmm.c
index d388ffb3fb..45a2f8a4bd 100644
--- a/core/hdd/src/wlan_hdd_wmm.c
+++ b/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));
}