From c8c215007abc502d1040354a7d0dc81435e4f8e2 Mon Sep 17 00:00:00 2001 From: Abhinav Kumar Date: Wed, 5 Dec 2018 15:17:39 +0530 Subject: [PATCH] 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 --- components/mlme/core/src/wlan_mlme_main.c | 3 ++ .../mlme/dispatcher/inc/cfg_mlme_fe_wmm.h | 28 +++++++++++++++-- .../mlme/dispatcher/inc/wlan_mlme_api.h | 11 +++++++ .../dispatcher/inc/wlan_mlme_public_struct.h | 2 ++ .../mlme/dispatcher/inc/wlan_mlme_ucfg_api.h | 17 +++++++++++ .../mlme/dispatcher/src/wlan_mlme_api.c | 16 ++++++++++ .../tdls/dispatcher/inc/wlan_tdls_cfg.h | 30 ++----------------- .../tdls/dispatcher/src/wlan_tdls_ucfg_api.c | 2 +- core/hdd/inc/wlan_hdd_cfg.h | 24 --------------- core/hdd/src/wlan_hdd_cfg.c | 7 ----- core/hdd/src/wlan_hdd_wmm.c | 18 +++++++---- 11 files changed, 91 insertions(+), 67 deletions(-) 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)); }