소스 검색

qcacmn: Update rx_peer_metadata version to DP

Save rx_peer_metadata version to wlan_res_cfg, update this value
to DP.

Change-Id: If559d85ebb390b54d267f4bc4ba214631b547d32
CRs-Fixed: 3469154
Jinwei Chen 2 년 전
부모
커밋
bedb4f3049
4개의 변경된 파일56개의 추가작업 그리고 14개의 파일을 삭제
  1. 16 0
      target_if/core/inc/target_if.h
  2. 2 0
      target_if/init_deinit/inc/service_ready_param.h
  3. 32 1
      target_if/init_deinit/src/init_cmd_api.c
  4. 6 13
      wmi/src/wmi_unified_tlv.c

+ 16 - 0
target_if/core/inc/target_if.h

@@ -2829,6 +2829,22 @@ static inline uint32_t target_psoc_get_target_cap_flags
 	return psoc_info->info.service_ext2_param.target_cap_flags;
 }
 
+/**
+ * target_psoc_get_target_dp_peer_meta_data_ver() - Get DP RX peer metadata
+ *                                                  version reported by target
+ * @psoc_info:  pointer to structure target_psoc_info
+ *
+ * Return: value of DP RX peer metadata version
+ */
+static inline uint8_t target_psoc_get_target_dp_peer_meta_data_ver(
+				struct target_psoc_info *psoc_info)
+{
+	if (!psoc_info)
+		return 0;
+
+	return psoc_info->info.service_ext2_param.dp_peer_meta_data_ver;
+}
+
 #if defined(WLAN_FEATURE_11BE_MLO) && defined(WLAN_MLO_MULTI_CHIP)
 #define PDEV_INVALID_HW_LINK_ID 0xFFFF
 

+ 2 - 0
target_if/init_deinit/inc/service_ready_param.h

@@ -465,6 +465,7 @@ struct wlan_psoc_host_service_ext_param {
  * @sap_coex_fixed_chan_support: Indicates if fw supports coex SAP in
  *                               fixed chan config
  * @target_cap_flags: Rx peer metadata version number used by target
+ * @dp_peer_meta_data_ver: DP peer metadata version reported by target
  * @ul_mumimo_tx_2g: UL MUMIMO Tx support for 2GHz
  * @ul_mumimo_tx_5g: UL MUMIMO Tx support for 5GHz
  * @ul_mumimo_tx_6g: UL MUMIMO Tx support for 6GHz
@@ -492,6 +493,7 @@ struct wlan_psoc_host_service_ext2_param {
 	uint32_t twt_ack_support_cap:1;
 	uint32_t sap_coex_fixed_chan_support:1;
 	uint32_t target_cap_flags;
+	uint8_t dp_peer_meta_data_ver;
 	uint8_t ul_mumimo_tx_2g:1,
 		ul_mumimo_tx_5g:1,
 		ul_mumimo_tx_6g:1,

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

@@ -34,6 +34,7 @@
 #include <target_if_scan.h>
 #include <target_if_reg.h>
 #include <target_if_twt.h>
+#include <cdp_txrx_ctrl.h>
 
 /**
  *  init_deinit_alloc_host_mem_chunk() - allocates chunk of memory requested
@@ -477,6 +478,28 @@ init_deinit_set_tdls_mlo_vdev(struct wmi_init_cmd_param *init_param,
 {}
 #endif
 
+/**
+ * init_deinit_set_dp_rx_peer_metadata_ver() - update RX peer metadata
+ *                                             version to DP
+ * @psoc: PSOC object
+ * @peer_md_ver: peer metadata version value
+ *
+ * Return: None
+ */
+static void
+init_deinit_set_dp_rx_peer_metadata_ver(struct wlan_objmgr_psoc *psoc,
+					uint8_t peer_md_ver)
+{
+	ol_txrx_soc_handle soc;
+	cdp_config_param_type val = {0};
+
+	val.cdp_peer_metadata_ver = peer_md_ver;
+	soc = wlan_psoc_get_dp_handle(psoc);
+
+	cdp_txrx_set_psoc_param(soc, CDP_CFG_RX_PEER_METADATA_VER,
+				val);
+}
+
 void init_deinit_prepare_send_init_cmd(
 		 struct wlan_objmgr_psoc *psoc,
 		 struct target_psoc_info *tgt_hdl)
@@ -553,7 +576,15 @@ void init_deinit_prepare_send_init_cmd(
 		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;
+		info->wlan_res_cfg.dp_peer_meta_data_ver =
+					CDP_RX_PEER_METADATA_V1_A_B;
+	else
+		info->wlan_res_cfg.dp_peer_meta_data_ver =
+			target_psoc_get_target_dp_peer_meta_data_ver(tgt_hdl);
+
+	/* notify DP rx peer metadata version */
+	init_deinit_set_dp_rx_peer_metadata_ver(
+			psoc, info->wlan_res_cfg.dp_peer_meta_data_ver);
 
 	init_deinit_set_tdls_mlo_vdev(&init_param, wmi_handle);
 

+ 6 - 13
wmi/src/wmi_unified_tlv.c

@@ -9388,20 +9388,9 @@ void wmi_copy_resource_config(wmi_resource_config *resource_cfg,
 	/*
 	 * 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(
+	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));
-	}
+			tgt_res_cfg->dp_peer_meta_data_ver);
 
 	if (tgt_res_cfg->notify_frame_support)
 		WMI_RSRC_CFG_FLAGS2_NOTIFY_FRAME_CONFIG_ENABLE_SET(
@@ -14316,6 +14305,10 @@ extract_service_ready_ext2_tlv(wmi_unified_t wmi_handle, uint8_t *event,
 	param->max_users_ul_mumimo = WMI_MAX_USER_PER_PPDU_UL_MUMIMO_GET(
 						ev->max_user_per_ppdu_mumimo);
 	param->target_cap_flags = ev->target_cap_flags;
+
+	param->dp_peer_meta_data_ver =
+			WMI_TARGET_CAP_FLAGS_RX_PEER_METADATA_VERSION_GET(
+						ev->target_cap_flags);
 	extract_ul_mumimo_support(param);
 	wmi_debug("htt peer data :%d", ev->target_cap_flags);