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

@@ -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,
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
* @psoc: pointer to psoc object

View File

@@ -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
* @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_reset = cfg_get(psoc, CFG_LATENCY_RESET);
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),
&flags);