diff --git a/target_if/init_deinit/src/init_event_handler.c b/target_if/init_deinit/src/init_event_handler.c index 413ccc4b13..2b61df40d5 100644 --- a/target_if/init_deinit/src/init_event_handler.c +++ b/target_if/init_deinit/src/init_event_handler.c @@ -762,6 +762,17 @@ static int init_deinit_ready_event_handler(ol_scn_t scn_handle, else info->wlan_res_cfg.agile_capability = ready_ev.agile_capability; + if (ready_ev.num_max_active_vdevs) { + if (ready_ev.num_max_active_vdevs < + info->wlan_res_cfg.num_max_active_vdevs) { + target_if_err("unexpected num_max_active_vdevs fw %d host %d", + ready_ev.num_max_active_vdevs, + info->wlan_res_cfg.num_max_active_vdevs); + info->wlan_res_cfg.num_max_active_vdevs = + ready_ev.num_max_active_vdevs; + } + } + /* Indicate to the waiting thread that the ready * event was received */ diff --git a/wmi/inc/wmi_unified_param.h b/wmi/inc/wmi_unified_param.h index 87af46bef0..99748d41f6 100644 --- a/wmi/inc/wmi_unified_param.h +++ b/wmi/inc/wmi_unified_param.h @@ -5840,6 +5840,8 @@ struct wmi_host_fw_abi_ver { * @afc_outdoor_support: AFC support outdoor deployment * @carrier_profile_config: Configuration for per-carrier profile * @reo_qdesc_shared_addr_table_enabled: Reo shared qref enhancement enabled + * @num_max_active_vdevs: number of max active virtual devices (VAPs) to + * support */ typedef struct { uint32_t num_vdevs; @@ -5964,6 +5966,7 @@ typedef struct { uint32_t carrier_profile_config; bool sawf; bool reo_qdesc_shared_addr_table_enabled; + uint32_t num_max_active_vdevs; } target_resource_config; /** @@ -7680,6 +7683,8 @@ struct coex_config_params { * and structs used within pktlog traces. This is sent * from the FW as part of FW ready event and needs * to be embedded in the pktlog buffer header as version. + * @num_max_active_vdevs: number of max active virtual devices (VAPs) to + * support */ struct wmi_host_ready_ev_param { uint32_t status; @@ -7690,6 +7695,7 @@ struct wmi_host_ready_ev_param { bool agile_capability; uint32_t max_ast_index; uint32_t pktlog_defs_checksum; + uint32_t num_max_active_vdevs; }; enum bcn_offload_control_param { diff --git a/wmi/src/wmi_unified_tlv.c b/wmi/src/wmi_unified_tlv.c index a535892233..24ffc3676e 100644 --- a/wmi/src/wmi_unified_tlv.c +++ b/wmi/src/wmi_unified_tlv.c @@ -8060,6 +8060,7 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg, resource_cfg->max_ndp_sessions = tgt_res_cfg->max_ndp_sessions; resource_cfg->max_ndi_interfaces = tgt_res_cfg->max_ndi; + resource_cfg->num_max_active_vdevs = tgt_res_cfg->num_max_active_vdevs; if (tgt_res_cfg->atf_config) WMI_RSRC_CFG_FLAG_ATF_CONFIG_ENABLE_SET(resource_cfg->flag1, 1); @@ -11482,6 +11483,7 @@ static QDF_STATUS extract_ready_event_params_tlv(wmi_unified_t wmi_handle, ev_param->max_ast_index = ev->max_ast_index; ev_param->pktlog_defs_checksum = ev->pktlog_defs_checksum; ev_param->agile_capability = 1; + ev_param->num_max_active_vdevs = ev->num_max_active_vdevs; return QDF_STATUS_SUCCESS; }