Răsfoiți Sursa

qcacmn: populate num_max_active_vdev in WMI init

Set num_max_active_vdevs to WMI init command and
extract it from WMI ready event.

Change-Id: I6d6377c03214fcab74c675839f136301ebf27834
CRs-Fixed: 3183010
Liangwei Dong 3 ani în urmă
părinte
comite
28ceb47c1d

+ 11 - 0
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
 	 */

+ 6 - 0
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 {

+ 2 - 0
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;
 }