qcacmn: Get max user capabilities from WMI ready

Retrieve the max users per-PPDU supported in Uplink
and Downlink direction, from the fixed params of WMI
service ready ext2 event.

CRs-Fixed: 2747218
Change-Id: Ib9f9bd4313dd1955c607d4fe77b02e34761d1c20
This commit is contained in:
Anirban Sirkhell 2020-08-03 13:09:52 +05:30 • committed by snandini
commit c19a2cd793
3 changed files with 58 additions and 0 deletions

View file

@ -336,6 +336,20 @@ struct target_pdev_info {
void *feature_ptr;
};
/**
* struct target_mu_caps - max number of users per-PPDU for OFDMA/MU-MIMO
* @ofdma_dl: max users for Downlink OFDMA transmissions
* @ofdma_ul: max users for Uplink OFDMA transmissions
* @mumimo_dl: max users for Downlink MU-MIMO transmissions
* @mumimo_ul: max users for Uplink MU-MIMO transmissions
*/
struct target_mu_caps {
uint16_t ofdma_dl;
uint16_t ofdma_ul;
uint16_t mumimo_dl;
uint16_t mumimo_ul;
};
/**
* target_if_init() - target_if Initialization
@ -2451,4 +2465,32 @@ static inline uint32_t target_psoc_get_preamble_puncture_cap(
return psoc_info->info.service_ext2_param.preamble_puncture_bw_cap;
}
/**
* target_psoc_get_mu_max_users() - Get max users for MU transmissions
* @psoc_info: pointer to structure target_psoc_info
* @mu_caps: pointer to structure for max OFDMA/MU-MIMO users per-PPDU
*
* API to get the max number of users per-PPDU supported for Uplink/Downlink
* MU transmissions.
*
* Return: void
*/
static inline void target_psoc_get_mu_max_users(
struct target_psoc_info *psoc_info,
struct target_mu_caps *mu_caps)
{
struct wlan_psoc_host_service_ext2_param *service_ext2_param;
if (!psoc_info || !mu_caps)
return;
service_ext2_param = &psoc_info->info.service_ext2_param;
mu_caps->ofdma_dl = service_ext2_param->max_users_dl_ofdma;
mu_caps->ofdma_ul = service_ext2_param->max_users_ul_ofdma;
mu_caps->mumimo_dl = service_ext2_param->max_users_dl_mumimo;
mu_caps->mumimo_ul = service_ext2_param->max_users_ul_mumimo;
}
#endif

View file

@ -400,6 +400,10 @@ struct wlan_psoc_host_service_ext_param {
* @max_ndp_sessions: Max number of ndp session fw supports
* @preamble_puncture_bw_cap: Preamble Puncturing Tx support
* @num_scan_radio_caps: Number of scan radio capabilities
* @max_users_dl_ofdma: Max number of users per-PPDU for Downlink OFDMA
* @max_users_ul_ofdma: Max number of users per-PPDU for Uplink OFDMA
* @max_users_dl_mumimo: Max number of users per-PPDU for Downlink MU-MIMO
* @max_users_ul_mumimo: Max number of users per-PPDU for Uplink MU-MIMO
*/
struct wlan_psoc_host_service_ext2_param {
uint8_t reg_db_version_major;
@ -411,6 +415,10 @@ struct wlan_psoc_host_service_ext2_param {
uint32_t max_ndp_sessions;
uint32_t preamble_puncture_bw_cap;
uint8_t num_scan_radio_caps;
uint16_t max_users_dl_ofdma;
uint16_t max_users_ul_ofdma;
uint16_t max_users_dl_mumimo;
uint16_t max_users_ul_mumimo;
};
#endif /* _SERVICE_READY_PARAM_H_*/

View file

@ -10644,6 +10644,14 @@ extract_service_ready_ext2_tlv(wmi_unified_t wmi_handle, uint8_t *event,
param->preamble_puncture_bw_cap = ev->preamble_puncture_bw;
param->num_scan_radio_caps = param_buf->num_wmi_scan_radio_caps;
param->max_users_dl_ofdma = WMI_MAX_USER_PER_PPDU_DL_OFDMA_GET(
ev->max_user_per_ppdu_ofdma);
param->max_users_ul_ofdma = WMI_MAX_USER_PER_PPDU_UL_OFDMA_GET(
ev->max_user_per_ppdu_ofdma);
param->max_users_dl_mumimo = WMI_MAX_USER_PER_PPDU_DL_MUMIMO_GET(
ev->max_user_per_ppdu_mumimo);
param->max_users_ul_mumimo = WMI_MAX_USER_PER_PPDU_UL_MUMIMO_GET(
ev->max_user_per_ppdu_mumimo);
return QDF_STATUS_SUCCESS;
}