qcacld-3.0: Add multi-client service bit caps and INI support
Add multi-client latency level service bit capability support, WLAN_SOC_WLM_MULTI_CLIENT_LL_SUPPORT, to check whether the FW supports multi-client latency level event or not. Add INI "wlm_multi_client_ll feature" to enable/disable multi client latency level feature from the host side. * @min: 0 * @max: 1 * @default: 0 If firmware sends multi-client latency level service bit capability to host and host enables multi-client latency level feature via INI, the host waits for an event WMI_VDEV_LATENCY_LEVEL_EVENTID as a response to a request command WMI_WLM_CONFIG_CMDID. Change-Id: I5cbea89e67caabac5db70b7f0a91c18bdd512e9b CRs-Fixed: 3180928
This commit is contained in:

committed by
Madan Koyyalamudi

parent
c6f0deeeaf
commit
f95d76a857
3
Kbuild
3
Kbuild
@@ -3956,6 +3956,9 @@ cppflags-$(CONFIG_ADAPTIVE_11R) += -DWLAN_ADAPTIVE_11R
|
|||||||
#Flag to enable/disable sae single pmk feature feature
|
#Flag to enable/disable sae single pmk feature feature
|
||||||
cppflags-$(CONFIG_SAE_SINGLE_PMK) += -DWLAN_SAE_SINGLE_PMK
|
cppflags-$(CONFIG_SAE_SINGLE_PMK) += -DWLAN_SAE_SINGLE_PMK
|
||||||
|
|
||||||
|
#Flag to enable/disable multi client low latency feature support
|
||||||
|
cppflags-$(CONFIG_MULTI_CLIENT_LL_SUPPORT) += -DMULTI_CLIENT_LL_SUPPORT
|
||||||
|
|
||||||
#Flag to enable/disable mscs feature
|
#Flag to enable/disable mscs feature
|
||||||
cppflags-$(CONFIG_FEATURE_MSCS) += -DWLAN_FEATURE_MSCS
|
cppflags-$(CONFIG_FEATURE_MSCS) += -DWLAN_FEATURE_MSCS
|
||||||
|
|
||||||
|
@@ -1017,6 +1017,42 @@ mlme_clear_operations_bitmap(struct wlan_objmgr_psoc *psoc, uint8_t vdev_id);
|
|||||||
QDF_STATUS mlme_get_cfg_wlm_level(struct wlan_objmgr_psoc *psoc,
|
QDF_STATUS mlme_get_cfg_wlm_level(struct wlan_objmgr_psoc *psoc,
|
||||||
uint8_t *level);
|
uint8_t *level);
|
||||||
|
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
/**
|
||||||
|
* wlan_mlme_get_wlm_multi_client_ll_caps() - Get the wlm multi client latency
|
||||||
|
* level capability flag
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
*
|
||||||
|
* Return: True is multi client ll cap present
|
||||||
|
*/
|
||||||
|
bool wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* mlme_get_cfg_multi_client_ll_ini_support() - Get the ini value of wlm multi
|
||||||
|
* client latency level feature
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @multi_client_ll_support: parameter that needs to be filled.
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
mlme_get_cfg_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support);
|
||||||
|
#else
|
||||||
|
static inline bool
|
||||||
|
wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
mlme_get_cfg_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_get_cfg_wlm_reset() - Get the WLM reset flag
|
* mlme_get_cfg_wlm_reset() - Get the WLM reset flag
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -2276,6 +2276,45 @@ mlme_init_roam_score_config(struct wlan_objmgr_psoc *psoc,
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
static void
|
||||||
|
mlme_init_wlm_multi_client_ll_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_mlme_fe_wlm *wlm_config)
|
||||||
|
{
|
||||||
|
wlm_config->multi_client_ll_support =
|
||||||
|
cfg_get(psoc, CFG_WLM_MULTI_CLIENT_LL_SUPPORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
mlme_get_cfg_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support)
|
||||||
|
{
|
||||||
|
struct wlan_mlme_psoc_ext_obj *mlme_obj;
|
||||||
|
|
||||||
|
mlme_obj = mlme_get_psoc_ext_obj(psoc);
|
||||||
|
if (!mlme_obj)
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
|
||||||
|
*multi_client_ll_support =
|
||||||
|
mlme_obj->cfg.wlm_config.multi_client_ll_support;
|
||||||
|
|
||||||
|
return QDF_STATUS_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool wlan_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return wlan_psoc_nif_fw_ext2_cap_get(psoc,
|
||||||
|
WLAN_SOC_WLM_MULTI_CLIENT_LL_SUPPORT);
|
||||||
|
}
|
||||||
|
|
||||||
|
#else
|
||||||
|
static inline void
|
||||||
|
mlme_init_wlm_multi_client_ll_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
struct wlan_mlme_fe_wlm *wlm_config)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mlme_init_fe_wlm_in_cfg() - Populate WLM INI in MLME cfg
|
* mlme_init_fe_wlm_in_cfg() - Populate WLM INI in MLME cfg
|
||||||
* @psoc: pointer to the psoc object
|
* @psoc: pointer to the psoc object
|
||||||
@@ -2292,6 +2331,7 @@ static void mlme_init_fe_wlm_in_cfg(struct wlan_objmgr_psoc *psoc,
|
|||||||
wlm_config->latency_enable = cfg_get(psoc, CFG_LATENCY_ENABLE);
|
wlm_config->latency_enable = cfg_get(psoc, CFG_LATENCY_ENABLE);
|
||||||
wlm_config->latency_reset = cfg_get(psoc, CFG_LATENCY_RESET);
|
wlm_config->latency_reset = cfg_get(psoc, CFG_LATENCY_RESET);
|
||||||
wlm_config->latency_level = cfg_get(psoc, CFG_LATENCY_LEVEL);
|
wlm_config->latency_level = cfg_get(psoc, CFG_LATENCY_LEVEL);
|
||||||
|
mlme_init_wlm_multi_client_ll_support(psoc, wlm_config);
|
||||||
|
|
||||||
status = qdf_uint64_parse(cfg_get(psoc, CFG_LATENCY_FLAGS_NORMAL),
|
status = qdf_uint64_parse(cfg_get(psoc, CFG_LATENCY_FLAGS_NORMAL),
|
||||||
&flags);
|
&flags);
|
||||||
|
@@ -106,6 +106,29 @@
|
|||||||
CFG_VALUE_OR_DEFAULT, \
|
CFG_VALUE_OR_DEFAULT, \
|
||||||
"WLM latency level")
|
"WLM latency level")
|
||||||
|
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
/*
|
||||||
|
* <ini>
|
||||||
|
* wlm_multi_client_ll - Ini to configure multi client latency feature
|
||||||
|
*
|
||||||
|
* @min: 0
|
||||||
|
* @max: 1
|
||||||
|
* @default: 0
|
||||||
|
*
|
||||||
|
* 0 - disable
|
||||||
|
* 1 - enable
|
||||||
|
*
|
||||||
|
* </ini>
|
||||||
|
*/
|
||||||
|
#define CFG_WLM_MULTI_CLIENT_LL_SUPPORT CFG_INI_BOOL("wlm_multi_client_ll", \
|
||||||
|
0, \
|
||||||
|
"wlm multi client ll feature")
|
||||||
|
|
||||||
|
#define WLM_MULTI_CLIENT_LL_CFG CFG(CFG_WLM_MULTI_CLIENT_LL_SUPPORT)
|
||||||
|
#else
|
||||||
|
#define WLM_MULTI_CLIENT_LL_CFG
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* <ini>
|
* <ini>
|
||||||
* wlm_latency_flags_normal - WLM flags setting for normal level
|
* wlm_latency_flags_normal - WLM flags setting for normal level
|
||||||
@@ -348,6 +371,7 @@
|
|||||||
CFG(CFG_LATENCY_ENABLE) \
|
CFG(CFG_LATENCY_ENABLE) \
|
||||||
CFG(CFG_LATENCY_RESET) \
|
CFG(CFG_LATENCY_RESET) \
|
||||||
CFG(CFG_LATENCY_LEVEL) \
|
CFG(CFG_LATENCY_LEVEL) \
|
||||||
|
WLM_MULTI_CLIENT_LL_CFG \
|
||||||
CFG(CFG_LATENCY_FLAGS_NORMAL) \
|
CFG(CFG_LATENCY_FLAGS_NORMAL) \
|
||||||
CFG(CFG_LATENCY_FLAGS_XR) \
|
CFG(CFG_LATENCY_FLAGS_XR) \
|
||||||
CFG(CFG_LATENCY_FLAGS_LOW) \
|
CFG(CFG_LATENCY_FLAGS_LOW) \
|
||||||
|
@@ -2414,6 +2414,7 @@ struct wlan_mlme_btm {
|
|||||||
* @latency_level: WLM latency level
|
* @latency_level: WLM latency level
|
||||||
* @latency_flags: WLM latency flags setting
|
* @latency_flags: WLM latency flags setting
|
||||||
* @latency_host_flags: WLM latency host flags setting
|
* @latency_host_flags: WLM latency host flags setting
|
||||||
|
* @multi_client_ll_support: To check whether host support multi client feature
|
||||||
*/
|
*/
|
||||||
struct wlan_mlme_fe_wlm {
|
struct wlan_mlme_fe_wlm {
|
||||||
bool latency_enable;
|
bool latency_enable;
|
||||||
@@ -2421,6 +2422,9 @@ struct wlan_mlme_fe_wlm {
|
|||||||
uint8_t latency_level;
|
uint8_t latency_level;
|
||||||
uint32_t latency_flags[MLME_NUM_WLM_LATENCY_LEVEL];
|
uint32_t latency_flags[MLME_NUM_WLM_LATENCY_LEVEL];
|
||||||
uint32_t latency_host_flags[MLME_NUM_WLM_LATENCY_LEVEL];
|
uint32_t latency_host_flags[MLME_NUM_WLM_LATENCY_LEVEL];
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
bool multi_client_ll_support;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -242,6 +242,42 @@ QDF_STATUS ucfg_mlme_get_band_capability(struct wlan_objmgr_psoc *psoc,
|
|||||||
return wlan_mlme_get_band_capability(psoc, band_capability);
|
return wlan_mlme_get_band_capability(psoc, band_capability);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_get_wlm_multi_client_ll_caps() - Get multi client latency level
|
||||||
|
* capability of FW
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
*
|
||||||
|
* Return: true if multi client feature supported
|
||||||
|
*/
|
||||||
|
bool ucfg_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ucfg_mlme_cfg_get_multi_client_ll_ini_support() - Get multi client latency
|
||||||
|
* level ini support value
|
||||||
|
* @psoc: pointer to psoc object
|
||||||
|
* @multi_client_ll_support: parameter that needs to be filled
|
||||||
|
*
|
||||||
|
* Return: QDF Status
|
||||||
|
*/
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support);
|
||||||
|
#else
|
||||||
|
static inline
|
||||||
|
bool ucfg_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support)
|
||||||
|
{
|
||||||
|
return QDF_STATUS_E_FAILURE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ucfg_mlme_set_band_capability() - Set the Band capability config
|
* ucfg_mlme_set_band_capability() - Set the Band capability config
|
||||||
* @psoc: pointer to psoc object
|
* @psoc: pointer to psoc object
|
||||||
|
@@ -952,6 +952,21 @@ ucfg_mlme_set_fast_roam_in_concurrency_enabled(struct wlan_objmgr_psoc *psoc,
|
|||||||
return QDF_STATUS_SUCCESS;
|
return QDF_STATUS_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef MULTI_CLIENT_LL_SUPPORT
|
||||||
|
bool ucfg_mlme_get_wlm_multi_client_ll_caps(struct wlan_objmgr_psoc *psoc)
|
||||||
|
{
|
||||||
|
return wlan_mlme_get_wlm_multi_client_ll_caps(psoc);
|
||||||
|
}
|
||||||
|
|
||||||
|
QDF_STATUS
|
||||||
|
ucfg_mlme_cfg_get_multi_client_ll_ini_support(struct wlan_objmgr_psoc *psoc,
|
||||||
|
bool *multi_client_ll_support)
|
||||||
|
{
|
||||||
|
return mlme_get_cfg_multi_client_ll_ini_support(psoc,
|
||||||
|
multi_client_ll_support);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef FEATURE_WLAN_ESE
|
#ifdef FEATURE_WLAN_ESE
|
||||||
QDF_STATUS
|
QDF_STATUS
|
||||||
ucfg_mlme_is_ese_enabled(struct wlan_objmgr_psoc *psoc, bool *val)
|
ucfg_mlme_is_ese_enabled(struct wlan_objmgr_psoc *psoc, bool *val)
|
||||||
|
@@ -441,6 +441,9 @@ CONFIG_ADAPTIVE_11R := y
|
|||||||
#Flag to enable sae single pmk feature
|
#Flag to enable sae single pmk feature
|
||||||
CONFIG_SAE_SINGLE_PMK := y
|
CONFIG_SAE_SINGLE_PMK := y
|
||||||
|
|
||||||
|
#Flag to enable/disable multi client low latency feature support
|
||||||
|
CONFIG_MULTI_CLIENT_LL_SUPPORT := y
|
||||||
|
|
||||||
#Flag to enable mscs feature
|
#Flag to enable mscs feature
|
||||||
CONFIG_FEATURE_MSCS := y
|
CONFIG_FEATURE_MSCS := y
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user