浏览代码

qcacmn: Fix monitor status tlv parsing for WCN7850

Fix the macros used for parsing the status TLVs
for WCN7850.

Change-Id: I8e22e5950b03e7a887afbea9d05cdddfdef83cbe
CRs-Fixed: 3084621
Rakesh Pillai 3 年之前
父节点
当前提交
773c505cde
共有 2 个文件被更改,包括 18 次插入7 次删除
  1. 4 3
      hal/wifi3.0/be/hal_be_generic_api.h
  2. 14 4
      hal/wifi3.0/be/hal_be_rx_tlv.h

+ 4 - 3
hal/wifi3.0/be/hal_be_generic_api.h

@@ -1,5 +1,6 @@
 /*
  * Copyright (c) 2016-2021 The Linux Foundation. All rights reserved.
+ * Copyright (c) 2021 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
@@ -1414,10 +1415,10 @@ hal_rx_status_get_tlv_info_generic_be(void *rx_tlv_hdr, void *ppduinfo,
 		uint8_t filter_category = 0;
 
 		ppdu_info->nac_info.fc_valid =
-				HAL_RX_GET_FC_VALID(rx_tlv);
+				HAL_RX_MON_GET_FC_VALID(rx_tlv);
 
 		ppdu_info->nac_info.to_ds_flag =
-				HAL_RX_GET_TO_DS_FLAG(rx_tlv);
+				HAL_RX_MON_GET_TO_DS_FLAG(rx_tlv);
 
 		ppdu_info->nac_info.frame_control =
 			HAL_RX_GET(rx_mpdu_start,
@@ -1444,7 +1445,7 @@ hal_rx_status_get_tlv_info_generic_be(void *rx_tlv_hdr, void *ppduinfo,
 				  ppdu_info);
 
 		ppdu_info->nac_info.mac_addr2_valid =
-				HAL_RX_TLV_MPDU_MAC_ADDR_AD2_VALID_GET(rx_tlv);
+				HAL_RX_MON_GET_MAC_ADDR2_VALID(rx_mpdu_start);
 
 		*(uint16_t *)&ppdu_info->nac_info.mac_addr2[0] =
 			HAL_RX_GET(rx_mpdu_start,

+ 14 - 4
hal/wifi3.0/be/hal_be_rx_tlv.h

@@ -330,10 +330,10 @@ struct rx_pkt_tlvs {
 #define HAL_RX_TLV_MPDU_QOS_CONTROL_VALID_GET(_rx_pkt_tlv)	\
 	HAL_RX_MPDU_START(_rx_pkt_tlv).mpdu_qos_control_valid
 
-#define HAL_RX_GET_FC_VALID(_rx_pkt_tlv)	\
+#define HAL_RX_TLV_GET_FC_VALID(_rx_pkt_tlv)	\
 	HAL_RX_MPDU_START(_rx_pkt_tlv).mpdu_frame_control_valid
 
-#define HAL_RX_GET_TO_DS_FLAG(_rx_pkt_tlv)	\
+#define HAL_RX_TLV_GET_TO_DS_FLAG(_rx_pkt_tlv)	\
 	HAL_RX_MPDU_START(_rx_pkt_tlv).to_ds
 
 #define HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(_rx_pkt_tlv)	\
@@ -384,6 +384,16 @@ struct rx_pkt_tlvs {
 #define HAL_RX_MSDU_END_SA_SW_PEER_ID_GET(_rx_pkt_tlv)	\
 	HAL_RX_MSDU_END(_rx_pkt_tlv).sa_sw_peer_id
 
+/* used by monitor mode for parsing from full TLV */
+#define HAL_RX_MON_GET_FC_VALID(_rx_mpdu_start)	\
+	HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO, MPDU_FRAME_CONTROL_VALID)
+
+#define HAL_RX_MON_GET_TO_DS_FLAG(_rx_mpdu_start)	\
+	HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO, TO_DS)
+
+#define HAL_RX_MON_GET_MAC_ADDR2_VALID(_rx_mpdu_start) \
+	HAL_RX_GET(rx_mpdu_start, RX_MPDU_INFO, MAC_ADDR_AD2_VALID)
+
 static inline
 uint32_t hal_rx_tlv_decap_format_get_be(void *hw_desc_addr)
 {
@@ -1322,14 +1332,14 @@ uint8_t hal_rx_get_fc_valid_be(uint8_t *buf)
 {
 	struct rx_pkt_tlvs *rx_pkt_tlvs = (struct rx_pkt_tlvs *)buf;
 
-	return HAL_RX_GET_FC_VALID(rx_pkt_tlvs);
+	return HAL_RX_TLV_GET_FC_VALID(rx_pkt_tlvs);
 }
 
 static inline uint8_t hal_rx_get_to_ds_flag_be(uint8_t *buf)
 {
 	struct rx_pkt_tlvs *rx_pkt_tlvs = (struct rx_pkt_tlvs *)buf;
 
-	return HAL_RX_GET_TO_DS_FLAG(rx_pkt_tlvs);
+	return HAL_RX_TLV_GET_TO_DS_FLAG(rx_pkt_tlvs);
 }
 
 static inline uint8_t hal_rx_get_mac_addr2_valid_be(uint8_t *buf)