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
This commit is contained in:
Abhinav Kumar
2018-11-05 14:32:49 +05:30
committato da nshrivas
parent 0d148cf587
commit e0802b5b35
6 ha cambiato i file con 340 aggiunte e 2 eliminazioni

Vedi File

@@ -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,

Vedi File

@@ -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 */

Vedi File

@@ -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

Vedi File

@@ -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;

Vedi File

@@ -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_ */

Vedi File

@@ -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)
{