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:
abhinav kumar
2022-04-17 12:53:33 +05:30
committed by Madan Koyyalamudi
parent c6f0deeeaf
commit f95d76a857
8 changed files with 161 additions and 0 deletions

View File

@@ -106,6 +106,29 @@
CFG_VALUE_OR_DEFAULT, \
"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>
* wlm_latency_flags_normal - WLM flags setting for normal level
@@ -348,6 +371,7 @@
CFG(CFG_LATENCY_ENABLE) \
CFG(CFG_LATENCY_RESET) \
CFG(CFG_LATENCY_LEVEL) \
WLM_MULTI_CLIENT_LL_CFG \
CFG(CFG_LATENCY_FLAGS_NORMAL) \
CFG(CFG_LATENCY_FLAGS_XR) \
CFG(CFG_LATENCY_FLAGS_LOW) \

View File

@@ -2414,6 +2414,7 @@ struct wlan_mlme_btm {
* @latency_level: WLM latency level
* @latency_flags: WLM latency 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 {
bool latency_enable;
@@ -2421,6 +2422,9 @@ struct wlan_mlme_fe_wlm {
uint8_t latency_level;
uint32_t latency_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
};
/**

View File

@@ -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);
}
#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
* @psoc: pointer to psoc object