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
This commit is contained in:
Abhinav Kumar
2018-12-05 15:17:39 +05:30
committed by nshrivas
parent b91d24ace1
commit c8c215007a
11 changed files with 91 additions and 67 deletions

View File

@@ -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); cfg_get(psoc, CFG_QOS_WMM_TS_INFO_ACK_POLICY);
wmm_params->wmm_tspec_element.ts_acm_is_off = wmm_params->wmm_tspec_element.ts_acm_is_off =
cfg_get(psoc, CFG_QOS_ADDTS_WHEN_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, static void mlme_init_wps_params_cfg(struct wlan_objmgr_psoc *psoc,

View File

@@ -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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -960,6 +960,29 @@
0, \ 0, \
"ACM value for AC") "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 \ #define CFG_WMM_PARAMS_ALL \
CFG(CFG_QOS_ENABLED) \ CFG(CFG_QOS_ENABLED) \
CFG(CFG_WME_ENABLED) \ CFG(CFG_WME_ENABLED) \
@@ -1001,6 +1024,7 @@
QOS_CFG \ QOS_CFG \
CFG(CFG_QOS_WMM_BURST_SIZE_DEFN) \ CFG(CFG_QOS_WMM_BURST_SIZE_DEFN) \
CFG(CFG_QOS_WMM_TS_INFO_ACK_POLICY) \ 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 */ #endif /* __CFG_MLME_FE_WMM_H */

View File

@@ -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, QDF_STATUS wlan_mlme_set_fils_enabled_info(struct wlan_objmgr_psoc *psoc,
bool value); 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 * wlan_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
* for VI * for VI

View File

@@ -1530,6 +1530,7 @@ struct wlan_mlme_wmm_ac_bk {
* @ac_vi: Default TSPEC parameters for AC_VI * @ac_vi: Default TSPEC parameters for AC_VI
* @ac_be: Default TSPEC parameters for AC_BE * @ac_be: Default TSPEC parameters for AC_BE
* @ac_bk: Default TSPEC parameters for AC_BK * @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 { struct wlan_mlme_wmm_params {
bool qos_enabled; 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_vi ac_vi;
struct wlan_mlme_wmm_ac_be ac_be; struct wlan_mlme_wmm_ac_be ac_be;
struct wlan_mlme_wmm_ac_bk ac_bk; struct wlan_mlme_wmm_ac_bk ac_bk;
uint32_t delayed_trigger_frm_int;
}; };
/** /**

View File

@@ -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); 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 * ucfg_mlme_get_wmm_dir_ac_vi() - Get TSPEC direction
* for VI * for VI

View File

@@ -976,6 +976,22 @@ wlan_mlme_get_manufacture_product_name(struct wlan_objmgr_psoc *psoc,
return QDF_STATUS_SUCCESS; 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, QDF_STATUS wlan_mlme_get_wmm_dir_ac_vo(struct wlan_objmgr_psoc *psoc,
uint8_t *value) uint8_t *value)
{ {

View File

@@ -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 * Permission to use, copy, modify, and/or distribute this software for
* any purpose with or without fee is hereby granted, provided that the * any purpose with or without fee is hereby granted, provided that the
@@ -702,31 +702,6 @@
CFG_VALUE_OR_DEFAULT, \ CFG_VALUE_OR_DEFAULT, \
"Timer to defer for enabling TDLS on P2P listen") "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 \ #define CFG_TDLS_ALL \
CFG(CFG_TDLS_QOS_WMM_UAPSD_MASK) \ CFG(CFG_TDLS_QOS_WMM_UAPSD_MASK) \
CFG(CFG_TDLS_BUF_STA_ENABLED) \ CFG(CFG_TDLS_BUF_STA_ENABLED) \
@@ -753,7 +728,6 @@
CFG(CFG_TDLS_WMM_MODE_ENABLE) \ CFG(CFG_TDLS_WMM_MODE_ENABLE) \
CFG(CFG_TDLS_SCAN_ENABLE) \ CFG(CFG_TDLS_SCAN_ENABLE) \
CFG(CFG_TDLS_PEER_KICKOUT_THRESHOLD) \ CFG(CFG_TDLS_PEER_KICKOUT_THRESHOLD) \
CFG(CFG_TDLS_ENABLE_DEFER_TIMER) \ CFG(CFG_TDLS_ENABLE_DEFER_TIMER)
CFG(CFG_TDLS_DELAYED_TRGR_FRM_INT)
#endif #endif

View File

@@ -201,7 +201,7 @@ static QDF_STATUS tdls_object_init_params(
tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold = tdls_soc_obj->tdls_configs.tdls_peer_kickout_threshold =
cfg_get(psoc, CFG_TDLS_PEER_KICKOUT_THRESHOLD); cfg_get(psoc, CFG_TDLS_PEER_KICKOUT_THRESHOLD);
tdls_soc_obj->tdls_configs.delayed_trig_framint = 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 = tdls_soc_obj->tdls_configs.tdls_wmm_mode_enable =
cfg_get(psoc, CFG_TDLS_WMM_MODE_ENABLE); cfg_get(psoc, CFG_TDLS_WMM_MODE_ENABLE);
tdls_soc_obj->tdls_configs.tdls_off_chan_enable = tdls_soc_obj->tdls_configs.tdls_off_chan_enable =

View File

@@ -149,28 +149,6 @@ enum hdd_dot11_mode {
#define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ax #define CFG_DOT11_MODE_DEFAULT eHDD_DOT11_MODE_11ax
#define CFG_DOT11_MODE_MAX 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> * <ini>
* gEnableSNRMonitoring - Enables SNR Monitoring * gEnableSNRMonitoring - Enables SNR Monitoring
@@ -289,8 +267,6 @@ struct hdd_config {
/* Bitmap for operating voltage corner mode */ /* Bitmap for operating voltage corner mode */
uint32_t vc_mode_cfg_bitmap; uint32_t vc_mode_cfg_bitmap;
#endif #endif
uint32_t DelayedTriggerFrmInt;
#ifdef ENABLE_MTRACE_LOG #ifdef ENABLE_MTRACE_LOG
bool enable_mtrace; bool enable_mtrace;
#endif #endif

View File

@@ -63,13 +63,6 @@ struct reg_table_entry g_registry_table[] = {
CFG_DOT11_MODE_MIN, CFG_DOT11_MODE_MIN,
CFG_DOT11_MODE_MAX), 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, REG_VARIABLE(CFG_ENABLE_SNR_MONITORING_NAME, WLAN_PARAM_Integer,
struct hdd_config, fEnableSNRMonitoring, struct hdd_config, fEnableSNRMonitoring,
VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK, VAR_FLAGS_OPTIONAL | VAR_FLAGS_RANGE_CHECK,

View File

@@ -123,6 +123,7 @@ static void hdd_wmm_enable_tl_uapsd(struct hdd_wmm_qos_context *pQosContext)
uint32_t suspension_interval; uint32_t suspension_interval;
enum sme_qos_wmm_dir_type direction; enum sme_qos_wmm_dir_type direction;
bool psb; bool psb;
uint32_t delayed_trgr_frm_int;
/* The TSPEC must be valid */ /* The TSPEC must be valid */
if (pAc->wmmAcTspecValid == false) { 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"); hdd_debug("No change in U-APSD parameters");
return; return;
} }
ucfg_mlme_get_tl_delayed_trgr_frm_int(hdd_ctx->psoc,
&delayed_trgr_frm_int);
/* everything is in place to notify TL */ /* everything is in place to notify TL */
status = status =
sme_enable_uapsd_for_ac((WLAN_HDD_GET_STATION_CTX_PTR(adapter))-> 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, pAc->wmmAcTspecInfo.ts_info.up,
service_interval, suspension_interval, service_interval, suspension_interval,
direction, psb, adapter->vdev_id, direction, psb, adapter->vdev_id,
hdd_ctx->config->DelayedTriggerFrmInt); delayed_trgr_frm_int);
if (!QDF_IS_STATUS_SUCCESS(status)) { if (!QDF_IS_STATUS_SUCCESS(status)) {
hdd_err("Failed to enable U-APSD for AC=%d", acType); 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 srv_value = 0;
uint32_t sus_value = 0; uint32_t sus_value = 0;
struct hdd_context *hdd_ctx = WLAN_HDD_GET_CTX(adapter); 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 /* when we associate we need to notify TL if it needs to
* enable UAPSD for any access categories * 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); 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) { if (uapsdMask & HDD_AC_VO) {
status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc, status = ucfg_mlme_get_wmm_uapsd_vo_srv_intv(hdd_ctx->psoc,
&srv_value); &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_AC_VO, 7, 7, srv_value, sus_value,
SME_QOS_WMM_TS_DIR_BOTH, 1, SME_QOS_WMM_TS_DIR_BOTH, 1,
adapter->vdev_id, adapter->vdev_id,
hdd_ctx->config->DelayedTriggerFrmInt); delayed_trgr_frm_int);
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status)); 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_AC_VI, 5, 5, srv_value, sus_value,
SME_QOS_WMM_TS_DIR_BOTH, 1, SME_QOS_WMM_TS_DIR_BOTH, 1,
adapter->vdev_id, adapter->vdev_id,
hdd_ctx->config->DelayedTriggerFrmInt); delayed_trgr_frm_int);
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status)); 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_AC_BK, 2, 2, srv_value, sus_value,
SME_QOS_WMM_TS_DIR_BOTH, 1, SME_QOS_WMM_TS_DIR_BOTH, 1,
adapter->vdev_id, adapter->vdev_id,
hdd_ctx->config->DelayedTriggerFrmInt); delayed_trgr_frm_int);
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status)); 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_AC_BE, 3, 3, srv_value, sus_value,
SME_QOS_WMM_TS_DIR_BOTH, 1, SME_QOS_WMM_TS_DIR_BOTH, 1,
adapter->vdev_id, adapter->vdev_id,
hdd_ctx->config->DelayedTriggerFrmInt); delayed_trgr_frm_int);
QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status)); QDF_ASSERT(QDF_IS_STATUS_SUCCESS(status));
} }