Browse Source

qcacmn: WMI Service command for FW PeerMetaData Version

Add new WMI Service command to support multiple FW
PeerMetaData Versions

Change-Id: I3f94bd7515d2e024459dac7271b35f804f026b97
CRs-Fixed: 3399010
Kenvish Butani 2 years ago
parent
commit
3ee53085d3
3 changed files with 27 additions and 3 deletions
  1. 4 1
      target_if/init_deinit/src/init_cmd_api.c
  2. 3 0
      wmi/inc/wmi_unified_param.h
  3. 20 2
      wmi/src/wmi_unified_tlv.c

+ 4 - 1
target_if/init_deinit/src/init_cmd_api.c

@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 2018-2021 The Linux Foundation. All rights reserved.
- * Copyright (c) 2021-2022 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2021-2023 Qualcomm Innovation Center, Inc. All rights reserved.
  *
  * Permission to use, copy, modify, and/or distribute this software for
  * any purpose with or without fee is hereby granted, provided that the
@@ -530,6 +530,9 @@ void init_deinit_prepare_send_init_cmd(
 	if (wmi_service_enabled(wmi_handle, wmi_service_ext2_msg))
 		init_deinit_derive_afc_dev_type_param(psoc, &init_param);
 
+	if (wmi_service_enabled(wmi_handle, wmi_service_v1a_v1b_supported))
+		info->wlan_res_cfg.dp_peer_meta_data_ver = 1;
+
 	target_if_ext_res_cfg_enable(psoc, tgt_hdl, NULL);
 
 	target_if_set_reo_shared_qref_feature(psoc, info);

+ 3 - 0
wmi/inc/wmi_unified_param.h

@@ -6233,6 +6233,7 @@ typedef enum {
 #endif
 	wmi_service_wpa3_sha384_roam_support,
 	wmi_service_multiple_vdev_restart_bmap,
+	wmi_service_v1a_v1b_supported,
 	wmi_services_max,
 } wmi_conv_service_ids;
 #define WMI_SERVICE_UNAVAILABLE 0xFFFF
@@ -6602,6 +6603,7 @@ struct target_feature_set {
  * @num_max_active_vdevs: max number of active virtual devices (VAPs) to
  * support
  * @notify_frame_support: capability to mark notify frames from host
+ * @dp_peer_meta_data_ver: datapath peer meta data version flag
  */
 typedef struct {
 	uint32_t num_vdevs;
@@ -6729,6 +6731,7 @@ typedef struct {
 	bool reo_qdesc_shared_addr_table_enabled;
 	uint32_t num_max_active_vdevs;
 	uint8_t notify_frame_support;
+	uint8_t dp_peer_meta_data_ver;
 } target_resource_config;
 
 /**

+ 20 - 2
wmi/src/wmi_unified_tlv.c

@@ -9269,9 +9269,24 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
 	if (tgt_res_cfg->reo_qdesc_shared_addr_table_enabled)
 		WMI_RSRC_CFG_HOST_SERVICE_FLAG_REO_QREF_FEATURE_SUPPORT_SET(
 			resource_cfg->host_service_flags, 1);
+	/*
+	 * DP Peer Meta data FW version
+	 */
+	if (tgt_res_cfg->dp_peer_meta_data_ver) {
+#ifdef CONFIG_AP_PLATFORM
+		WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION_SET(
+			resource_cfg->flags2, 3);
+#else
+		WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION_SET(
+			resource_cfg->flags2, 2);
+#endif
+	} else {
+		WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION_SET(
+			resource_cfg->flags2,
+			WMI_TARGET_CAP_FLAGS_RX_PEER_METADATA_VERSION_GET(
+			tgt_res_cfg->target_cap_flags));
+	}
 
-	WMI_RSRC_CFG_FLAGS2_RX_PEER_METADATA_VERSION_SET(resource_cfg->flags2,
-						 tgt_res_cfg->target_cap_flags);
 	if (tgt_res_cfg->notify_frame_support)
 		WMI_RSRC_CFG_FLAGS2_NOTIFY_FRAME_CONFIG_ENABLE_SET(
 			resource_cfg->flags2, 1);
@@ -21901,6 +21916,9 @@ static void populate_tlv_service(uint32_t *wmi_service)
 #endif
 	wmi_service[wmi_service_wpa3_sha384_roam_support] =
 			WMI_SERVICE_WMI_SERVICE_WPA3_SHA384_ROAM_SUPPORT;
+	/* TODO: Assign FW Enum after FW Shared header changes are merged */
+	wmi_service[wmi_service_v1a_v1b_supported] =
+			WMI_SERVICE_UNAVAILABLE;
 }
 
 /**