Эх сурвалжийг харах

qcacmn: assign dump functions to per chip specific

1. add more function pointers for the remainder functions which are
generic
2. assign functions to per chip level
3. prevent using generic rx_pkt_tlv struct and using at a per soc
specific instead

Change-Id: I1cefb10c7a70f04dbf8b110fcfee6f1c9f4ab1a0
CRs-Fixed: 3533521
Ruben Columbus 1 жил өмнө
parent
commit
ea44c5ab75

+ 6 - 5
hal/wifi3.0/hal_internal.h

@@ -1137,9 +1137,12 @@ struct hal_hw_txrx_ops {
 	uint8_t (*hal_rx_get_tlv)(void *rx_tlv);
 	void (*hal_rx_proc_phyrx_other_receive_info_tlv)(void *rx_tlv_hdr,
 							void *ppdu_info_handle);
-	void (*hal_rx_dump_msdu_start_tlv)(void *msdu_start, uint8_t dbg_level);
-	void (*hal_rx_dump_msdu_end_tlv)(void *msdu_end,
-					 uint8_t dbg_level);
+	void (*hal_rx_dump_msdu_end_tlv)(void *pkt_tlvs, uint8_t dbg_level);
+	void (*hal_rx_dump_rx_attention_tlv)(void *pkt_tlvs, uint8_t dbg_level);
+	void (*hal_rx_dump_msdu_start_tlv)(void *pkt_tlvs, uint8_t dbg_level);
+	void (*hal_rx_dump_mpdu_start_tlv)(void *pkt_tlvs, uint8_t dbg_level);
+	void (*hal_rx_dump_mpdu_end_tlv)(void *pkt_tlvs, uint8_t dbg_level);
+	void (*hal_rx_dump_pkt_hdr_tlv)(void *pkt_tlvs, uint8_t dbg_level);
 	uint32_t (*hal_get_link_desc_size)(void);
 	uint32_t (*hal_rx_mpdu_start_tid_get)(uint8_t *buf);
 	uint32_t (*hal_rx_msdu_start_reception_type_get)(uint8_t *buf);
@@ -1158,8 +1161,6 @@ struct hal_hw_txrx_ops {
 
 	void (*hal_rx_wbm_err_info_get)(void *wbm_desc,
 				void *wbm_er_info);
-	void (*hal_rx_dump_mpdu_start_tlv)(void *mpdustart,
-						uint8_t dbg_level);
 
 	void (*hal_tx_set_pcp_tid_map)(struct hal_soc *hal_soc, uint8_t *map);
 	void (*hal_tx_update_pcp_tid_map)(struct hal_soc *hal_soc, uint8_t pcp,

+ 82 - 26
hal/wifi3.0/hal_rx.h

@@ -1595,28 +1595,100 @@ enum hal_rx_wbm_rxdma_push_reason {
 	HAL_RX_WBM_RXDMA_PSH_RSN_FLUSH,
 };
 
-static inline void hal_rx_dump_mpdu_start_tlv(struct rx_mpdu_start *mpdu_start,
-					      uint8_t dbg_level,
-					      struct hal_soc *hal)
+/**
+ * hal_rx_dump_msdu_end_tlv() - dump RX msdu_end TLV in structured
+ *			        human readable format.
+ * @hal_soc: HAL soc
+ * @pkt_tlvs: pointer the pkt_tlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_msdu_end_tlv(struct hal_soc *hal_soc,
+					    void *pkt_tlvs,
+					    uint8_t dbg_level)
 {
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv(pkt_tlvs, dbg_level);
+}
 
-	hal->ops->hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level);
+/**
+ * hal_rx_dump_rx_attention_tlv() - dump RX rx_attention TLV in structured
+ *				    human readable format.
+ * @hal_soc: HAL soc
+ * @pkt_tlvs: pointer the pkt_tlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_rx_attention_tlv(struct hal_soc *hal_soc,
+						void *pkt_tlvs,
+						uint8_t dbg_level)
+{
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv(pkt_tlvs, dbg_level);
 }
 
 /**
- * hal_rx_dump_msdu_end_tlv() - dump RX msdu_end TLV in structured
- *			        human readable format.
+ * hal_rx_dump_msdu_start_tlv: dump RX msdu_start TLV in structured
+ *			       human readable format.
  * @hal_soc: HAL soc
- * @msdu_end: pointer the msdu_end TLV in pkt.
+ * @pkt_tlvs: pointer the pkt_tlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static inline void hal_rx_dump_msdu_end_tlv(struct hal_soc *hal_soc,
-					    struct rx_msdu_end *msdu_end,
+static inline void hal_rx_dump_msdu_start_tlv(struct hal_soc *hal_soc,
+					      void *pkt_tlvs,
+					      uint8_t dbg_level)
+{
+	hal_soc->ops->hal_rx_dump_msdu_start_tlv(pkt_tlvs, dbg_level);
+}
+
+/**
+ * hal_rx_dump_mpdu_start_tlv: dump RX mpdu_start TLV in structured
+ *			       human readable format.
+ * @hal_soc: HAL soc
+ * @pkt_tlvs: pointer the pkt_tlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_mpdu_start_tlv(struct hal_soc *hal_soc,
+					      void *pkt_tlvs,
+					      uint8_t dbg_level)
+{
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv(pkt_tlvs, dbg_level);
+}
+
+/**
+ * hal_rx_dump_mpdu_end_tlv: dump RX mpdu_end TLV in structured
+ *			     human readable format.
+ * @hal_soc: HAL soc
+ * @pkt_tlvs: pointer the pkt_tlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_mpdu_end_tlv(struct hal_soc *hal_soc,
+					    void *pkt_tlvs,
 					    uint8_t dbg_level)
 {
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv(msdu_end, dbg_level);
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv(pkt_tlvs, dbg_level);
+}
+
+/**
+ * hal_rx_dump_pkt_hdr_tlv: dump RX pkt_hdr TLV in structured
+ *			    human readable format.
+ * @hal_soc: HAL soc
+ * @pkt_tlvs: pointer the pkt_tlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_pkt_hdr_tlv(struct hal_soc *hal_soc,
+					   void *pkt_tlvs,
+					   uint8_t dbg_level)
+{
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level);
 }
 
 /**
@@ -1791,22 +1863,6 @@ uint32_t hal_rx_msdu_start_nss_get(hal_soc_handle_t hal_soc_hdl, uint8_t *buf)
 	return hal_soc->ops->hal_rx_msdu_start_nss_get(buf);
 }
 
-/**
- * hal_rx_dump_msdu_start_tlv() - dump RX msdu_start TLV in structured
- *			          human readable format.
- * @hal_soc: HAL SOC
- * @msdu_start: pointer the msdu_start TLV in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_msdu_start_tlv(struct hal_soc *hal_soc,
-					      struct rx_msdu_start *msdu_start,
-					      uint8_t dbg_level)
-{
-	hal_soc->ops->hal_rx_dump_msdu_start_tlv(msdu_start, dbg_level);
-}
-
 /**
  * hal_rx_mpdu_start_tid_get() - Return tid info from the rx mpdu start
  * info details

+ 6 - 118
hal/wifi3.0/li/hal_li_generic_api.c

@@ -148,21 +148,14 @@ static void hal_rx_dump_pkt_tlvs_li(hal_soc_handle_t hal_soc_hdl,
 				uint8_t *buf, uint8_t dbg_level)
 {
 	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
-	struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn;
-	struct rx_mpdu_start *mpdu_start =
-				&pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
-	struct rx_msdu_start *msdu_start =
-				&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
-	struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
-	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 	struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
 
-	hal_rx_dump_rx_attention_tlv(rx_attn, dbg_level);
-	hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level, hal_soc);
-	hal_rx_dump_msdu_start_tlv(hal_soc, msdu_start, dbg_level);
-	hal_rx_dump_mpdu_end_tlv(mpdu_end, dbg_level);
-	hal_rx_dump_msdu_end_tlv(hal_soc, msdu_end, dbg_level);
-	hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level);
+	hal_rx_dump_msdu_end_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_rx_attention_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_msdu_start_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_mpdu_start_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_mpdu_end_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_pkt_hdr_tlv(hal_soc, pkt_tlvs, dbg_level);
 }
 
 /**
@@ -266,28 +259,6 @@ static int hal_rx_get_l3_l4_offsets_li(uint8_t *buf, uint32_t *l3_hdr_offset,
 	return 0;
 }
 
-/**
- * hal_rx_tlv_get_pn_num_li() - Get packet number from RX TLV
- * @buf: rx tlv address
- * @pn_num: buffer to store packet number
- *
- * Return: None
- */
-static inline void hal_rx_tlv_get_pn_num_li(uint8_t *buf, uint64_t *pn_num)
-{
-	struct rx_pkt_tlvs *rx_pkt_tlv =
-			(struct rx_pkt_tlvs *)buf;
-	struct rx_mpdu_info *rx_mpdu_info_details =
-	 &rx_pkt_tlv->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details;
-
-	pn_num[0] = rx_mpdu_info_details->pn_31_0;
-	pn_num[0] |=
-		((uint64_t)rx_mpdu_info_details->pn_63_32 << 32);
-	pn_num[1] = rx_mpdu_info_details->pn_95_64;
-	pn_num[1] |=
-		((uint64_t)rx_mpdu_info_details->pn_127_96 << 32);
-}
-
 #ifdef NO_RX_PKT_HDR_TLV
 /**
  * hal_rx_pkt_hdr_get_li() - Get rx packet header start address.
@@ -651,26 +622,6 @@ hal_rx_tlv_csum_err_get_li(uint8_t *rx_tlv_hdr, uint32_t *ip_csum_err,
 	*tcp_udp_csum_err = hal_rx_attn_tcp_udp_cksum_fail_get(rx_tlv_hdr);
 }
 
-static
-void hal_rx_tlv_get_pkt_capture_flags_li(uint8_t *rx_tlv_pkt_hdr,
-					    struct hal_rx_pkt_capture_flags *flags)
-{
-	struct rx_pkt_tlvs *rx_tlv_hdr = (struct rx_pkt_tlvs *)rx_tlv_pkt_hdr;
-	struct rx_attention *rx_attn = &rx_tlv_hdr->attn_tlv.rx_attn;
-	struct rx_mpdu_start *mpdu_start =
-				&rx_tlv_hdr->mpdu_start_tlv.rx_mpdu_start;
-	struct rx_mpdu_end *mpdu_end = &rx_tlv_hdr->mpdu_end_tlv.rx_mpdu_end;
-	struct rx_msdu_start *msdu_start =
-				&rx_tlv_hdr->msdu_start_tlv.rx_msdu_start;
-
-	flags->encrypt_type = mpdu_start->rx_mpdu_info_details.encrypt_type;
-	flags->fcs_err = mpdu_end->fcs_err;
-	flags->fragment_flag = rx_attn->fragment_flag;
-	flags->chan_freq = HAL_RX_MSDU_START_FREQ_GET(msdu_start);
-	flags->rssi_comb = HAL_RX_MSDU_START_RSSI_GET(msdu_start);
-	flags->tsft = msdu_start->ppdu_start_timestamp;
-}
-
 static uint8_t hal_rx_err_status_get_li(hal_ring_desc_t rx_desc)
 {
 	return HAL_RX_ERROR_STATUS_GET(rx_desc);
@@ -681,21 +632,6 @@ static uint8_t hal_rx_reo_buf_type_get_li(hal_ring_desc_t rx_desc)
 	return HAL_RX_REO_BUF_TYPE_GET(rx_desc);
 }
 
-static inline bool
-hal_rx_mpdu_info_ampdu_flag_get_li(uint8_t *buf)
-{
-	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
-	struct rx_mpdu_start *mpdu_start =
-				 &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
-
-	struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details;
-	bool ampdu_flag;
-
-	ampdu_flag = HAL_RX_MPDU_INFO_AMPDU_FLAG_GET(mpdu_info);
-
-	return ampdu_flag;
-}
-
 static
 uint32_t hal_rx_tlv_mpdu_len_err_get_li(void *hw_desc_addr)
 {
@@ -877,46 +813,6 @@ static inline uint32_t hal_rx_tlv_get_pkt_type_li(uint8_t *buf)
 	return pkt_type;
 }
 
-/**
- * hal_rx_tlv_mic_err_get_li(): API to get the MIC ERR
- * from rx_mpdu_end TLV
- *
- * @buf: pointer to the start of RX PKT TLV headers
- * Return: uint32_t(mic_err)
- */
-static inline uint32_t
-hal_rx_tlv_mic_err_get_li(uint8_t *buf)
-{
-	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
-	struct rx_mpdu_end *mpdu_end =
-		&pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
-	uint32_t mic_err;
-
-	mic_err = HAL_RX_MPDU_END_MIC_ERR_GET(mpdu_end);
-
-	return mic_err;
-}
-
-/**
- * hal_rx_tlv_decrypt_err_get_li(): API to get the Decrypt ERR
- * from rx_mpdu_end TLV
- *
- * @buf: pointer to the start of RX PKT TLV headers
- * Return: uint32_t(decrypt_err)
- */
-static inline uint32_t
-hal_rx_tlv_decrypt_err_get_li(uint8_t *buf)
-{
-	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
-	struct rx_mpdu_end *mpdu_end =
-		&pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
-	uint32_t decrypt_err;
-
-	decrypt_err = HAL_RX_MPDU_END_DECRYPT_ERR_GET(mpdu_end);
-
-	return decrypt_err;
-}
-
 /*
  * hal_rx_tlv_first_mpdu_get_li(): get fist_mpdu bit from rx attention
  * @buf: pointer to rx_pkt_tlvs
@@ -1216,15 +1112,11 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc)
 					hal_rx_priv_info_set_in_tlv_li;
 	hal_soc->ops->hal_rx_priv_info_get_from_tlv =
 					hal_rx_priv_info_get_from_tlv_li;
-	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
-					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_rx_tlv_mpdu_len_err_get =
 					hal_rx_tlv_mpdu_len_err_get_li;
 	hal_soc->ops->hal_rx_tlv_mpdu_fcs_err_get =
 					hal_rx_tlv_mpdu_fcs_err_get_li;
 	hal_soc->ops->hal_reo_send_cmd = hal_reo_send_cmd_li;
-	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
-					hal_rx_tlv_get_pkt_capture_flags_li;
 	hal_soc->ops->hal_rx_desc_get_80211_hdr = hal_rx_desc_get_80211_hdr_li;
 	hal_soc->ops->hal_rx_hw_desc_mpdu_user_id =
 					hal_rx_hw_desc_mpdu_user_id_li;
@@ -1236,10 +1128,6 @@ void hal_hw_txrx_default_ops_attach_li(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_tlv_sgi_get = hal_rx_tlv_sgi_get_li;
 	hal_soc->ops->hal_rx_tlv_rate_mcs_get = hal_rx_tlv_rate_mcs_get_li;
 	hal_soc->ops->hal_rx_tlv_get_pkt_type = hal_rx_tlv_get_pkt_type_li;
-	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
-	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
-	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
-			hal_rx_tlv_decrypt_err_get_li;
 	hal_soc->ops->hal_rx_tlv_first_mpdu_get = hal_rx_tlv_first_mpdu_get_li;
 	hal_soc->ops->hal_rx_tlv_get_is_decrypted =
 			hal_rx_tlv_get_is_decrypted_li;

+ 305 - 4
hal/wifi3.0/li/hal_li_generic_api.h

@@ -1821,19 +1821,320 @@ static inline uint8_t hal_get_wbm_internal_error_generic_li(void *hal_desc)
 		HAL_WBM_INTERNAL_ERROR_LSB;
 }
 
+/**
+ * hal_rx_dump_rx_attention_tlv_generic_li() - dump RX attention TLV in
+ *					       structured humman readable
+ *					       format.
+ * @pkttlvs: pointer the pkt tlv struct.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline
+void hal_rx_dump_rx_attention_tlv_generic_li(void *pkttlvs,
+					     uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn;
+
+	hal_verbose_debug("rx_attention tlv (1/2) - "
+			  "rxpcu_mpdu_filter_in_category: %x "
+			  "sw_frame_group_id: %x "
+			  "reserved_0: %x "
+			  "phy_ppdu_id: %x "
+			  "first_mpdu : %x "
+			  "reserved_1a: %x "
+			  "mcast_bcast: %x "
+			  "ast_index_not_found: %x "
+			  "ast_index_timeout: %x "
+			  "power_mgmt: %x "
+			  "non_qos: %x "
+			  "null_data: %x "
+			  "mgmt_type: %x "
+			  "ctrl_type: %x "
+			  "more_data: %x "
+			  "eosp: %x "
+			  "a_msdu_error: %x "
+			  "fragment_flag: %x "
+			  "order: %x "
+			  "cce_match: %x "
+			  "overflow_err: %x "
+			  "msdu_length_err: %x "
+			  "tcp_udp_chksum_fail: %x "
+			  "ip_chksum_fail: %x "
+			  "sa_idx_invalid: %x "
+			  "da_idx_invalid: %x "
+			  "reserved_1b: %x "
+			  "rx_in_tx_decrypt_byp: %x ",
+			  rx_attn->rxpcu_mpdu_filter_in_category,
+			  rx_attn->sw_frame_group_id,
+			  rx_attn->reserved_0,
+			  rx_attn->phy_ppdu_id,
+			  rx_attn->first_mpdu,
+			  rx_attn->reserved_1a,
+			  rx_attn->mcast_bcast,
+			  rx_attn->ast_index_not_found,
+			  rx_attn->ast_index_timeout,
+			  rx_attn->power_mgmt,
+			  rx_attn->non_qos,
+			  rx_attn->null_data,
+			  rx_attn->mgmt_type,
+			  rx_attn->ctrl_type,
+			  rx_attn->more_data,
+			  rx_attn->eosp,
+			  rx_attn->a_msdu_error,
+			  rx_attn->fragment_flag,
+			  rx_attn->order,
+			  rx_attn->cce_match,
+			  rx_attn->overflow_err,
+			  rx_attn->msdu_length_err,
+			  rx_attn->tcp_udp_chksum_fail,
+			  rx_attn->ip_chksum_fail,
+			  rx_attn->sa_idx_invalid,
+			  rx_attn->da_idx_invalid,
+			  rx_attn->reserved_1b,
+			  rx_attn->rx_in_tx_decrypt_byp);
+
+	hal_verbose_debug("rx_attention tlv (2/2) - "
+			  "encrypt_required: %x "
+			  "directed: %x "
+			  "buffer_fragment: %x "
+			  "mpdu_length_err: %x "
+			  "tkip_mic_err: %x "
+			  "decrypt_err: %x "
+			  "unencrypted_frame_err: %x "
+			  "fcs_err: %x "
+			  "flow_idx_timeout: %x "
+			  "flow_idx_invalid: %x "
+			  "wifi_parser_error: %x "
+			  "amsdu_parser_error: %x "
+			  "sa_idx_timeout: %x "
+			  "da_idx_timeout: %x "
+			  "msdu_limit_error: %x "
+			  "da_is_valid: %x "
+			  "da_is_mcbc: %x "
+			  "sa_is_valid: %x "
+			  "decrypt_status_code: %x "
+			  "rx_bitmap_not_updated: %x "
+			  "reserved_2: %x "
+			  "msdu_done: %x ",
+			  rx_attn->encrypt_required,
+			  rx_attn->directed,
+			  rx_attn->buffer_fragment,
+			  rx_attn->mpdu_length_err,
+			  rx_attn->tkip_mic_err,
+			  rx_attn->decrypt_err,
+			  rx_attn->unencrypted_frame_err,
+			  rx_attn->fcs_err,
+			  rx_attn->flow_idx_timeout,
+			  rx_attn->flow_idx_invalid,
+			  rx_attn->wifi_parser_error,
+			  rx_attn->amsdu_parser_error,
+			  rx_attn->sa_idx_timeout,
+			  rx_attn->da_idx_timeout,
+			  rx_attn->msdu_limit_error,
+			  rx_attn->da_is_valid,
+			  rx_attn->da_is_mcbc,
+			  rx_attn->sa_is_valid,
+			  rx_attn->decrypt_status_code,
+			  rx_attn->rx_bitmap_not_updated,
+			  rx_attn->reserved_2,
+			  rx_attn->msdu_done);
+}
+
+/**
+ * hal_rx_dump_mpdu_end_tlv_generic_li() - dump RX mpdu_end TLV in structured
+ *					   human readable format.
+ * @pkttlvs: pointer the pkt tlv struct.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline
+void hal_rx_dump_mpdu_end_tlv_generic_li(void *pkttlvs,
+					 uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
+
+	hal_verbose_debug("rx_mpdu_end tlv - "
+			  "rxpcu_mpdu_filter_in_category: %x "
+			  "sw_frame_group_id: %x "
+			  "phy_ppdu_id: %x "
+			  "unsup_ktype_short_frame: %x "
+			  "rx_in_tx_decrypt_byp: %x "
+			  "overflow_err: %x "
+			  "mpdu_length_err: %x "
+			  "tkip_mic_err: %x "
+			  "decrypt_err: %x "
+			  "unencrypted_frame_err: %x "
+			  "pn_fields_contain_valid_info: %x "
+			  "fcs_err: %x "
+			  "msdu_length_err: %x "
+			  "rxdma0_destination_ring: %x "
+			  "rxdma1_destination_ring: %x "
+			  "decrypt_status_code: %x "
+			  "rx_bitmap_not_updated: %x ",
+			  mpdu_end->rxpcu_mpdu_filter_in_category,
+			  mpdu_end->sw_frame_group_id,
+			  mpdu_end->phy_ppdu_id,
+			  mpdu_end->unsup_ktype_short_frame,
+			  mpdu_end->rx_in_tx_decrypt_byp,
+			  mpdu_end->overflow_err,
+			  mpdu_end->mpdu_length_err,
+			  mpdu_end->tkip_mic_err,
+			  mpdu_end->decrypt_err,
+			  mpdu_end->unencrypted_frame_err,
+			  mpdu_end->pn_fields_contain_valid_info,
+			  mpdu_end->fcs_err,
+			  mpdu_end->msdu_length_err,
+			  mpdu_end->rxdma0_destination_ring,
+			  mpdu_end->rxdma1_destination_ring,
+			  mpdu_end->decrypt_status_code,
+			  mpdu_end->rx_bitmap_not_updated);
+}
+
+#ifdef NO_RX_PKT_HDR_TLV
+static inline
+void hal_rx_dump_pkt_hdr_tlv_generic_li(void *pkttlvs,
+					uint8_t dbg_level)
+{
+}
+#else
+/**
+ * hal_rx_dump_pkt_hdr_tlv_generic_li() - dump RX pkt header TLV in hex format
+ * @pkttlvs: pointer the pkt tlv struct.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline
+void hal_rx_dump_pkt_hdr_tlv_generic_li(void *pkttlvs,
+					uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv;
+
+	hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv"
+			  "\n---------------\nphy_ppdu_id %d ",
+			  pkt_hdr_tlv->phy_ppdu_id);
+	hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128);
+}
+#endif
+
+/**
+ * hal_rx_tlv_decrypt_err_get_li() - API to get the Decrypt ERR
+ * from rx_mpdu_end TLV
+ *
+ * @buf: pointer to the start of RX PKT TLV headers
+ * Return: uint32_t(decrypt_err)
+ */
+static inline uint32_t
+hal_rx_tlv_decrypt_err_get_li(uint8_t *buf)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
+	struct rx_mpdu_end *mpdu_end =
+		&pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
+	uint32_t decrypt_err;
+
+	decrypt_err = HAL_RX_MPDU_END_DECRYPT_ERR_GET(mpdu_end);
+
+	return decrypt_err;
+}
+
+/**
+ * hal_rx_tlv_mic_err_get_li() - API to get the MIC ERR
+ * from rx_mpdu_end TLV
+ *
+ * @buf: pointer to the start of RX PKT TLV headers
+ * Return: uint32_t(mic_err)
+ */
+static inline uint32_t
+hal_rx_tlv_mic_err_get_li(uint8_t *buf)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
+	struct rx_mpdu_end *mpdu_end =
+		&pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
+	uint32_t mic_err;
+
+	mic_err = HAL_RX_MPDU_END_MIC_ERR_GET(mpdu_end);
+
+	return mic_err;
+}
+
+static
+void hal_rx_tlv_get_pkt_capture_flags_li(uint8_t *rx_tlv_pkt_hdr,
+					 struct hal_rx_pkt_capture_flags *flags)
+{
+	struct rx_pkt_tlvs *rx_tlv_hdr = (struct rx_pkt_tlvs *)rx_tlv_pkt_hdr;
+	struct rx_attention *rx_attn = &rx_tlv_hdr->attn_tlv.rx_attn;
+	struct rx_mpdu_start *mpdu_start =
+				&rx_tlv_hdr->mpdu_start_tlv.rx_mpdu_start;
+	struct rx_mpdu_end *mpdu_end = &rx_tlv_hdr->mpdu_end_tlv.rx_mpdu_end;
+	struct rx_msdu_start *msdu_start =
+				&rx_tlv_hdr->msdu_start_tlv.rx_msdu_start;
+
+	flags->encrypt_type = mpdu_start->rx_mpdu_info_details.encrypt_type;
+	flags->fcs_err = mpdu_end->fcs_err;
+	flags->fragment_flag = rx_attn->fragment_flag;
+	flags->chan_freq = HAL_RX_MSDU_START_FREQ_GET(msdu_start);
+	flags->rssi_comb = HAL_RX_MSDU_START_RSSI_GET(msdu_start);
+	flags->tsft = msdu_start->ppdu_start_timestamp;
+}
+
+static inline bool
+hal_rx_mpdu_info_ampdu_flag_get_li(uint8_t *buf)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
+	struct rx_mpdu_start *mpdu_start =
+				 &pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
+
+	struct rx_mpdu_info *mpdu_info = &mpdu_start->rx_mpdu_info_details;
+	bool ampdu_flag;
+
+	ampdu_flag = HAL_RX_MPDU_INFO_AMPDU_FLAG_GET(mpdu_info);
+
+	return ampdu_flag;
+}
+
+/**
+ * hal_rx_tlv_get_pn_num_li() - Get packet number from RX TLV
+ * @buf: rx tlv address
+ * @pn_num: buffer to store packet number
+ *
+ * Return: None
+ */
+static inline void hal_rx_tlv_get_pn_num_li(uint8_t *buf, uint64_t *pn_num)
+{
+	struct rx_pkt_tlvs *rx_pkt_tlv =
+			(struct rx_pkt_tlvs *)buf;
+	struct rx_mpdu_info *rx_mpdu_info_details =
+	 &rx_pkt_tlv->mpdu_start_tlv.rx_mpdu_start.rx_mpdu_info_details;
+
+	pn_num[0] = rx_mpdu_info_details->pn_31_0;
+	pn_num[0] |=
+		((uint64_t)rx_mpdu_info_details->pn_63_32 << 32);
+	pn_num[1] = rx_mpdu_info_details->pn_95_64;
+	pn_num[1] |=
+		((uint64_t)rx_mpdu_info_details->pn_127_96 << 32);
+}
+
 /**
  * hal_rx_dump_mpdu_start_tlv_generic_li() - dump RX mpdu_start TLV in
  *			                     structured human readable
  *			                     format.
- * @mpdustart: pointer the rx_attention TLV in pkt.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static inline void hal_rx_dump_mpdu_start_tlv_generic_li(void *mpdustart,
-						      uint8_t dbg_level)
+static inline
+void hal_rx_dump_mpdu_start_tlv_generic_li(void *pkttlvs,
+					   uint8_t dbg_level)
 {
-	struct rx_mpdu_start *mpdu_start = (struct rx_mpdu_start *)mpdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_mpdu_start *mpdu_start =
+					&pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
 	struct rx_mpdu_info *mpdu_info =
 		(struct rx_mpdu_info *)&mpdu_start->rx_mpdu_info_details;
 

+ 0 - 189
hal/wifi3.0/li/hal_li_rx.h

@@ -840,195 +840,6 @@ HAL_RX_DESC_GET_DECAP_FORMAT(void *hw_desc_addr) {
 	return HAL_RX_GET(rx_msdu_start, RX_MSDU_START_2, DECAP_FORMAT);
 }
 
-/**
- * hal_rx_dump_rx_attention_tlv() - dump RX attention TLV in structured
- *				    human readable format.
- * @rx_attn: pointer the rx_attention TLV in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_rx_attention_tlv(struct rx_attention *rx_attn,
-						uint8_t dbg_level)
-{
-	hal_verbose_debug("rx_attention tlv (1/2) - "
-			  "rxpcu_mpdu_filter_in_category: %x "
-			  "sw_frame_group_id: %x "
-			  "reserved_0: %x "
-			  "phy_ppdu_id: %x "
-			  "first_mpdu : %x "
-			  "reserved_1a: %x "
-			  "mcast_bcast: %x "
-			  "ast_index_not_found: %x "
-			  "ast_index_timeout: %x "
-			  "power_mgmt: %x "
-			  "non_qos: %x "
-			  "null_data: %x "
-			  "mgmt_type: %x "
-			  "ctrl_type: %x "
-			  "more_data: %x "
-			  "eosp: %x "
-			  "a_msdu_error: %x "
-			  "fragment_flag: %x "
-			  "order: %x "
-			  "cce_match: %x "
-			  "overflow_err: %x "
-			  "msdu_length_err: %x "
-			  "tcp_udp_chksum_fail: %x "
-			  "ip_chksum_fail: %x "
-			  "sa_idx_invalid: %x "
-			  "da_idx_invalid: %x "
-			  "reserved_1b: %x "
-			  "rx_in_tx_decrypt_byp: %x ",
-			  rx_attn->rxpcu_mpdu_filter_in_category,
-			  rx_attn->sw_frame_group_id,
-			  rx_attn->reserved_0,
-			  rx_attn->phy_ppdu_id,
-			  rx_attn->first_mpdu,
-			  rx_attn->reserved_1a,
-			  rx_attn->mcast_bcast,
-			  rx_attn->ast_index_not_found,
-			  rx_attn->ast_index_timeout,
-			  rx_attn->power_mgmt,
-			  rx_attn->non_qos,
-			  rx_attn->null_data,
-			  rx_attn->mgmt_type,
-			  rx_attn->ctrl_type,
-			  rx_attn->more_data,
-			  rx_attn->eosp,
-			  rx_attn->a_msdu_error,
-			  rx_attn->fragment_flag,
-			  rx_attn->order,
-			  rx_attn->cce_match,
-			  rx_attn->overflow_err,
-			  rx_attn->msdu_length_err,
-			  rx_attn->tcp_udp_chksum_fail,
-			  rx_attn->ip_chksum_fail,
-			  rx_attn->sa_idx_invalid,
-			  rx_attn->da_idx_invalid,
-			  rx_attn->reserved_1b,
-			  rx_attn->rx_in_tx_decrypt_byp);
-
-	hal_verbose_debug("rx_attention tlv (2/2) - "
-			  "encrypt_required: %x "
-			  "directed: %x "
-			  "buffer_fragment: %x "
-			  "mpdu_length_err: %x "
-			  "tkip_mic_err: %x "
-			  "decrypt_err: %x "
-			  "unencrypted_frame_err: %x "
-			  "fcs_err: %x "
-			  "flow_idx_timeout: %x "
-			  "flow_idx_invalid: %x "
-			  "wifi_parser_error: %x "
-			  "amsdu_parser_error: %x "
-			  "sa_idx_timeout: %x "
-			  "da_idx_timeout: %x "
-			  "msdu_limit_error: %x "
-			  "da_is_valid: %x "
-			  "da_is_mcbc: %x "
-			  "sa_is_valid: %x "
-			  "decrypt_status_code: %x "
-			  "rx_bitmap_not_updated: %x "
-			  "reserved_2: %x "
-			  "msdu_done: %x ",
-			  rx_attn->encrypt_required,
-			  rx_attn->directed,
-			  rx_attn->buffer_fragment,
-			  rx_attn->mpdu_length_err,
-			  rx_attn->tkip_mic_err,
-			  rx_attn->decrypt_err,
-			  rx_attn->unencrypted_frame_err,
-			  rx_attn->fcs_err,
-			  rx_attn->flow_idx_timeout,
-			  rx_attn->flow_idx_invalid,
-			  rx_attn->wifi_parser_error,
-			  rx_attn->amsdu_parser_error,
-			  rx_attn->sa_idx_timeout,
-			  rx_attn->da_idx_timeout,
-			  rx_attn->msdu_limit_error,
-			  rx_attn->da_is_valid,
-			  rx_attn->da_is_mcbc,
-			  rx_attn->sa_is_valid,
-			  rx_attn->decrypt_status_code,
-			  rx_attn->rx_bitmap_not_updated,
-			  rx_attn->reserved_2,
-			  rx_attn->msdu_done);
-}
-
-/**
- * hal_rx_dump_mpdu_end_tlv() - dump RX mpdu_end TLV in structured
- *			     human readable format.
- * @mpdu_end: pointer the mpdu_end TLV in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_mpdu_end_tlv(struct rx_mpdu_end *mpdu_end,
-					    uint8_t dbg_level)
-{
-	hal_verbose_debug("rx_mpdu_end tlv - "
-			  "rxpcu_mpdu_filter_in_category: %x "
-			  "sw_frame_group_id: %x "
-			  "phy_ppdu_id: %x "
-			  "unsup_ktype_short_frame: %x "
-			  "rx_in_tx_decrypt_byp: %x "
-			  "overflow_err: %x "
-			  "mpdu_length_err: %x "
-			  "tkip_mic_err: %x "
-			  "decrypt_err: %x "
-			  "unencrypted_frame_err: %x "
-			  "pn_fields_contain_valid_info: %x "
-			  "fcs_err: %x "
-			  "msdu_length_err: %x "
-			  "rxdma0_destination_ring: %x "
-			  "rxdma1_destination_ring: %x "
-			  "decrypt_status_code: %x "
-			  "rx_bitmap_not_updated: %x ",
-			  mpdu_end->rxpcu_mpdu_filter_in_category,
-			  mpdu_end->sw_frame_group_id,
-			  mpdu_end->phy_ppdu_id,
-			  mpdu_end->unsup_ktype_short_frame,
-			  mpdu_end->rx_in_tx_decrypt_byp,
-			  mpdu_end->overflow_err,
-			  mpdu_end->mpdu_length_err,
-			  mpdu_end->tkip_mic_err,
-			  mpdu_end->decrypt_err,
-			  mpdu_end->unencrypted_frame_err,
-			  mpdu_end->pn_fields_contain_valid_info,
-			  mpdu_end->fcs_err,
-			  mpdu_end->msdu_length_err,
-			  mpdu_end->rxdma0_destination_ring,
-			  mpdu_end->rxdma1_destination_ring,
-			  mpdu_end->decrypt_status_code,
-			  mpdu_end->rx_bitmap_not_updated);
-}
-
-#ifdef NO_RX_PKT_HDR_TLV
-static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs,
-					   uint8_t dbg_level)
-{
-}
-#else
-/**
- * hal_rx_dump_pkt_hdr_tlv() - dump RX pkt header TLV in hex format
- * @pkt_tlvs: pointer the pkt_hdr_tlv in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs,
-					   uint8_t dbg_level)
-{
-	struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv;
-
-	hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv"
-			  "\n---------------\nphy_ppdu_id %d ",
-			  pkt_hdr_tlv->phy_ppdu_id);
-	hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128);
-}
-#endif
-
 #define HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(_rx_mpdu_info)	\
 	(_HAL_MS((*_OFFSET_TO_WORD_PTR(_rx_mpdu_info,	\
 		RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET)),	\

+ 27 - 9
hal/wifi3.0/qca5018/hal_5018.c

@@ -407,15 +407,17 @@ void hal_rx_get_rtt_info_5018(void *rx_tlv,
 /**
  * hal_rx_dump_msdu_start_tlv_5018() - dump RX msdu_start TLV in structured
  *			               human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_5018(void *msdustart,
+static void hal_rx_dump_msdu_start_tlv_5018(void *pkttlvs,
 					    uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_start tlv - "
@@ -482,15 +484,16 @@ static void hal_rx_dump_msdu_start_tlv_5018(void *msdustart,
 /**
  * hal_rx_dump_msdu_end_tlv_5018() - dump RX msdu_end TLV in structured
  *			             human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_5018(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_5018(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_end tlv - "
@@ -1742,9 +1745,6 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_5018;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_5018;
-	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
-					hal_rx_dump_msdu_start_tlv_5018;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_5018;
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_5018;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_5018;
@@ -1762,8 +1762,18 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_5018;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
+					hal_rx_dump_msdu_start_tlv_5018;
 	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
 					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1878,6 +1888,14 @@ static void hal_hw_txrx_ops_attach_qca5018(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_compute_reo_remap_ix2_ix3 = hal_compute_reo_remap_ix2_ix3_5018;
 	hal_soc->ops->hal_setup_link_idle_list =
 				hal_setup_link_idle_list_generic_li;
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 	hal_soc->ops->hal_rx_tlv_msdu_len_get =
 				hal_rx_msdu_start_get_len_5018;

+ 19 - 3
hal/wifi3.0/qca6290/hal_6290.c

@@ -1100,9 +1100,19 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6290;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_6290;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6290;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_6290;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6290;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6290;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_6290;
@@ -1120,8 +1130,6 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1232,6 +1240,14 @@ static void hal_hw_txrx_ops_attach_6290(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_get_first_wow_wakeup_packet =
 		hal_get_first_wow_wakeup_packet_6290;
 #endif
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 };
 

+ 11 - 8
hal/wifi3.0/qca6290/hal_6290_rx.h

@@ -524,16 +524,18 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6290(void *rx_tlv_hdr,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6290() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6290(void *msdustart,
+static void hal_rx_dump_msdu_start_tlv_6290(void *pkttlvs,
 					    uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_start tlv - "
@@ -607,16 +609,17 @@ static void hal_rx_dump_msdu_start_tlv_6290(void *msdustart,
 
 /**
  * hal_rx_dump_msdu_end_tlv_6290() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6290(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6290(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_end tlv - "

+ 19 - 3
hal/wifi3.0/qca6390/hal_6390.c

@@ -1171,9 +1171,19 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6390;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_6390;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6390;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_6390;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6390;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6390;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_6390;
@@ -1191,8 +1201,6 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1305,6 +1313,14 @@ static void hal_hw_txrx_ops_attach_qca6390(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_get_first_wow_wakeup_packet =
 		hal_get_first_wow_wakeup_packet_6390;
 #endif
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 =
 				hal_compute_reo_remap_ix0_6390;
 };

+ 11 - 8
hal/wifi3.0/qca6390/hal_6390_rx.h

@@ -473,15 +473,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6390(void *rx_tlv_hdr,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6390() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6390(void *msdustart, uint8_t dbg_level)
+static void hal_rx_dump_msdu_start_tlv_6390(void *pkttlvs, uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	hal_verbose_debug(
 			  "rx_msdu_start tlv (1/2) - "
@@ -550,16 +552,17 @@ static void hal_rx_dump_msdu_start_tlv_6390(void *msdustart, uint8_t dbg_level)
 
 /**
  * hal_rx_dump_msdu_end_tlv_6390() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6390(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6390(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	__QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP,
 		       "rx_msdu_end tlv (1/2) - "

+ 30 - 11
hal/wifi3.0/qca6490/hal_6490.c

@@ -256,15 +256,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6490(void *rx_tlv_hdr,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6490() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6490(void *msdustart, uint8_t dbg_level)
+static void hal_rx_dump_msdu_start_tlv_6490(void *pkttlvs, uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	__QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP,
 		       "rx_msdu_start tlv (1/2) - "
@@ -333,16 +335,17 @@ static void hal_rx_dump_msdu_start_tlv_6490(void *msdustart, uint8_t dbg_level)
 
 /**
  * hal_rx_dump_msdu_end_tlv_6490() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6490(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6490(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	__QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP,
 		       "rx_msdu_end tlv (1/3) - "
@@ -1784,9 +1787,19 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6490;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_6490;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6490;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_6490;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6490;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6490;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_6490;
@@ -1804,8 +1817,6 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1937,6 +1948,14 @@ static void hal_hw_txrx_ops_attach_qca6490(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_get_first_wow_wakeup_packet =
 		hal_get_first_wow_wakeup_packet_6490;
 #endif
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 =
 					hal_compute_reo_remap_ix0_6490;
 	hal_soc->ops->hal_rx_tlv_l3_type_get =

+ 30 - 11
hal/wifi3.0/qca6750/hal_6750.c

@@ -257,15 +257,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6750(void *rx_tlv_hdr,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6750() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6750(void *msdustart, uint8_t dbg_level)
+static void hal_rx_dump_msdu_start_tlv_6750(void *pkttlvs, uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	hal_verbose_debug(
 			  "rx_msdu_start tlv (1/2) - "
@@ -334,16 +336,17 @@ static void hal_rx_dump_msdu_start_tlv_6750(void *msdustart, uint8_t dbg_level)
 
 /**
  * hal_rx_dump_msdu_end_tlv_6750() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6750(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6750(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	__QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP,
 		       "rx_msdu_end tlv (1/3) - "
@@ -1927,9 +1930,19 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6750;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_6750;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6750;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_6750;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6750;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6750;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_6750;
@@ -1947,8 +1960,6 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -2087,6 +2098,14 @@ static void hal_hw_txrx_ops_attach_qca6750(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_get_first_wow_wakeup_packet =
 		hal_get_first_wow_wakeup_packet_6750;
 #endif
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 =
 				hal_compute_reo_remap_ix0_6750;
 	hal_soc->ops->hal_rx_tlv_msdu_len_get =

+ 19 - 3
hal/wifi3.0/qca8074v1/hal_8074v1.c

@@ -1288,9 +1288,19 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_8074;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_8074;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_8074;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_8074;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_8074;
@@ -1308,8 +1318,6 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1425,6 +1433,14 @@ static void hal_hw_txrx_ops_attach_qca8074(struct hal_soc *hal_soc)
 					hal_compute_reo_remap_ix2_ix3_8074v1;
 	hal_soc->ops->hal_setup_link_idle_list =
 				hal_setup_link_idle_list_generic_li;
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 };
 

+ 12 - 9
hal/wifi3.0/qca8074v1/hal_8074v1_rx.h

@@ -432,17 +432,19 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_8074(void *rx_tlv_hdr,
 
 
 /**
- * hal_rx_dump_msdu_start_tlv_8074() : dump RX msdu_start TLV in structured
- *			     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ * hal_rx_dump_msdu_start_tlv_8074() - dump RX msdu_start TLV in structured
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_8074(void *msdustart,
+static void hal_rx_dump_msdu_start_tlv_8074(void *pkttlvs,
 					    uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_start tlv - "
@@ -512,16 +514,17 @@ static void hal_rx_dump_msdu_start_tlv_8074(void *msdustart,
 
 /**
  * hal_rx_dump_msdu_end_tlv_8074() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_8074(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_8074(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_end tlv - "

+ 20 - 3
hal/wifi3.0/qca8074v2/hal_8074v2.c

@@ -1283,9 +1283,20 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_8074v2;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_8074v2;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv =
+					hal_rx_dump_msdu_end_tlv_8074v2;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_8074v2;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_8074v2;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_8074v2;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_8074v2;
@@ -1303,8 +1314,6 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1424,6 +1433,14 @@ static void hal_hw_txrx_ops_attach_qca8074v2(struct hal_soc *hal_soc)
 					hal_compute_reo_remap_ix2_ix3_8074v2;
 	hal_soc->ops->hal_setup_link_idle_list =
 				hal_setup_link_idle_list_generic_li;
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 };
 

+ 13 - 10
hal/wifi3.0/qca8074v2/hal_8074v2_rx.h

@@ -607,16 +607,18 @@ void hal_rx_get_rtt_info_8074v2(void *rx_tlv,
 
 /**
  * hal_rx_dump_msdu_start_tlv_8074v2() - dump RX msdu_start TLV in structured
- *                                       human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_8074v2(void *msdustart,
-					    uint8_t dbg_level)
+static void hal_rx_dump_msdu_start_tlv_8074v2(void *pkttlvs,
+					      uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_start tlv - "
@@ -682,16 +684,17 @@ static void hal_rx_dump_msdu_start_tlv_8074v2(void *msdustart,
 
 /**
  * hal_rx_dump_msdu_end_tlv_8074v2() - dump RX msdu_end TLV in structured
- *                                     human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_8074v2(void *msduend,
-					  uint8_t dbg_level)
+static void hal_rx_dump_msdu_end_tlv_8074v2(void *pkttlvs,
+					    uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 			"rx_msdu_end tlv - "

+ 30 - 11
hal/wifi3.0/qcn6122/hal_qcn6122.c

@@ -410,16 +410,18 @@ void hal_rx_get_rtt_info_6122(void *rx_tlv,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6122() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6122(void *msdustart,
+static void hal_rx_dump_msdu_start_tlv_6122(void *pkttlvs,
 					    uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_start tlv - "
@@ -485,16 +487,17 @@ static void hal_rx_dump_msdu_start_tlv_6122(void *msdustart,
 
 /**
  * hal_rx_dump_msdu_end_tlv_6122() - dump RX msdu_end TLV in structured
- *                                   human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6122(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6122(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_end tlv - "
@@ -1832,9 +1835,19 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6122;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_6122;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6122;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_6122;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6122;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6122;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_6122;
@@ -1852,8 +1865,6 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1976,6 +1987,14 @@ static void hal_hw_txrx_ops_attach_qcn6122(struct hal_soc *hal_soc)
 					hal_compute_reo_remap_ix2_ix3_6122;
 	hal_soc->ops->hal_setup_link_idle_list =
 				hal_setup_link_idle_list_generic_li;
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 	hal_soc->ops->hal_rx_tlv_msdu_len_get =
 				hal_rx_msdu_start_get_len_6122;

+ 32 - 12
hal/wifi3.0/qcn9000/hal_9000.c

@@ -406,18 +406,21 @@ void hal_rx_get_rtt_info_9000(void *rx_tlv, void *ppdu_info_hdl)
 		   RTT_GI_TYPE);
 }
 #endif
+
 /**
  * hal_rx_dump_msdu_start_tlv_9000() - dump RX msdu_start TLV in structured
- *                                     human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *			               human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_9000(void *msdustart,
+static void hal_rx_dump_msdu_start_tlv_9000(void *pkttlvs,
 					    uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_start tlv - "
@@ -482,17 +485,18 @@ static void hal_rx_dump_msdu_start_tlv_9000(void *msdustart,
 }
 
 /**
- * hal_rx_dump_msdu_end_tlv_9000() - dump RX msdu_end TLV in structured human
- *                                   readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ * hal_rx_dump_msdu_end_tlv_9000() - dump RX msdu_end TLV in structured
+ *			             human readable format.
+ * @pkttlvs: pointer to the pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_9000(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_9000(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	QDF_TRACE(QDF_MODULE_ID_DP, dbg_level,
 		  "rx_msdu_end tlv - "
@@ -1828,9 +1832,19 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_9000;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 		hal_rx_proc_phyrx_other_receive_info_tlv_9000;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_9000;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_li;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
 					hal_rx_dump_msdu_start_tlv_9000;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_9000;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_li;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_li;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_9000;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 					hal_rx_mpdu_start_tid_get_9000;
@@ -1848,8 +1862,6 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc)
 					hal_rx_status_get_tlv_info_generic_li;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 					hal_rx_wbm_err_info_get_generic_li;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-					hal_rx_dump_mpdu_start_tlv_generic_li;
 
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 					hal_tx_set_pcp_tid_map_generic_li;
@@ -1973,6 +1985,14 @@ static void hal_hw_txrx_ops_attach_qcn9000(struct hal_soc *hal_soc)
 					hal_compute_reo_remap_ix2_ix3_9000;
 	hal_soc->ops->hal_setup_link_idle_list =
 				hal_setup_link_idle_list_generic_li;
+	hal_soc->ops->hal_rx_tlv_get_pn_num = hal_rx_tlv_get_pn_num_li;
+	hal_soc->ops->hal_rx_tlv_mic_err_get = hal_rx_tlv_mic_err_get_li;
+	hal_soc->ops->hal_rx_tlv_decrypt_err_get =
+			hal_rx_tlv_decrypt_err_get_li;
+	hal_soc->ops->hal_rx_tlv_get_pkt_capture_flags =
+					hal_rx_tlv_get_pkt_capture_flags_li;
+	hal_soc->ops->hal_rx_mpdu_info_ampdu_flag_get =
+					hal_rx_mpdu_info_ampdu_flag_get_li;
 	hal_soc->ops->hal_compute_reo_remap_ix0 = NULL;
 	hal_soc->ops->hal_rx_tlv_msdu_len_get =
 				hal_rx_msdu_start_get_len_9000;

+ 6 - 13
hal/wifi3.0/rh/hal_rh_generic_api.c

@@ -240,21 +240,14 @@ static void hal_rx_dump_pkt_tlvs_rh(hal_soc_handle_t hal_soc_hdl,
 				    uint8_t *buf, uint8_t dbg_level)
 {
 	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)buf;
-	struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn;
-	struct rx_mpdu_start *mpdu_start =
-				&pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
-	struct rx_msdu_start *msdu_start =
-				&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
-	struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
-	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 	struct hal_soc *hal_soc = (struct hal_soc *)hal_soc_hdl;
 
-	hal_rx_dump_rx_attention_tlv(rx_attn, dbg_level);
-	hal_rx_dump_mpdu_start_tlv(mpdu_start, dbg_level, hal_soc);
-	hal_rx_dump_msdu_start_tlv(hal_soc, msdu_start, dbg_level);
-	hal_rx_dump_mpdu_end_tlv(mpdu_end, dbg_level);
-	hal_rx_dump_msdu_end_tlv(hal_soc, msdu_end, dbg_level);
-	hal_rx_dump_pkt_hdr_tlv(pkt_tlvs, dbg_level);
+	hal_rx_dump_msdu_end_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_rx_attention_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_msdu_start_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_mpdu_start_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_mpdu_end_tlv(hal_soc, pkt_tlvs, dbg_level);
+	hal_rx_dump_pkt_hdr_tlv(hal_soc, pkt_tlvs, dbg_level);
 }
 
 /**

+ 202 - 4
hal/wifi3.0/rh/hal_rh_generic_api.h

@@ -1628,18 +1628,216 @@ hal_rx_status_get_tlv_info_generic_rh(void *rx_tlv_hdr, void *ppduinfo,
 	return HAL_TLV_STATUS_PPDU_NOT_DONE;
 }
 
+/**
+ * hal_rx_dump_rx_attention_tlv_generic_rh: dump RX attention TLV in structured
+ *					    humman readable format.
+ * @pkttlvs: pointer to pkttlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_rx_attention_tlv_generic_rh(void *pkttlvs,
+							   uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_attention *rx_attn = &pkt_tlvs->attn_tlv.rx_attn;
+
+	hal_verbose_debug("rx_attention tlv (1/2) - "
+			  "rxpcu_mpdu_filter_in_category: %x "
+			  "sw_frame_group_id: %x "
+			  "reserved_0: %x "
+			  "phy_ppdu_id: %x "
+			  "first_mpdu : %x "
+			  "reserved_1a: %x "
+			  "mcast_bcast: %x "
+			  "ast_index_not_found: %x "
+			  "ast_index_timeout: %x "
+			  "power_mgmt: %x "
+			  "non_qos: %x "
+			  "null_data: %x "
+			  "mgmt_type: %x "
+			  "ctrl_type: %x "
+			  "more_data: %x "
+			  "eosp: %x "
+			  "a_msdu_error: %x "
+			  "fragment_flag: %x "
+			  "order: %x "
+			  "cce_match: %x "
+			  "overflow_err: %x "
+			  "msdu_length_err: %x "
+			  "tcp_udp_chksum_fail: %x "
+			  "ip_chksum_fail: %x "
+			  "sa_idx_invalid: %x "
+			  "da_idx_invalid: %x "
+			  "reserved_1b: %x "
+			  "rx_in_tx_decrypt_byp: %x ",
+			  rx_attn->rxpcu_mpdu_filter_in_category,
+			  rx_attn->sw_frame_group_id,
+			  rx_attn->reserved_0,
+			  rx_attn->phy_ppdu_id,
+			  rx_attn->first_mpdu,
+			  rx_attn->reserved_1a,
+			  rx_attn->mcast_bcast,
+			  rx_attn->ast_index_not_found,
+			  rx_attn->ast_index_timeout,
+			  rx_attn->power_mgmt,
+			  rx_attn->non_qos,
+			  rx_attn->null_data,
+			  rx_attn->mgmt_type,
+			  rx_attn->ctrl_type,
+			  rx_attn->more_data,
+			  rx_attn->eosp,
+			  rx_attn->a_msdu_error,
+			  rx_attn->fragment_flag,
+			  rx_attn->order,
+			  rx_attn->cce_match,
+			  rx_attn->overflow_err,
+			  rx_attn->msdu_length_err,
+			  rx_attn->tcp_udp_chksum_fail,
+			  rx_attn->ip_chksum_fail,
+			  rx_attn->sa_idx_invalid,
+			  rx_attn->da_idx_invalid,
+			  rx_attn->reserved_1b,
+			  rx_attn->rx_in_tx_decrypt_byp);
+
+	hal_verbose_debug("rx_attention tlv (2/2) - "
+			  "encrypt_required: %x "
+			  "directed: %x "
+			  "buffer_fragment: %x "
+			  "mpdu_length_err: %x "
+			  "tkip_mic_err: %x "
+			  "decrypt_err: %x "
+			  "unencrypted_frame_err: %x "
+			  "fcs_err: %x "
+			  "flow_idx_timeout: %x "
+			  "flow_idx_invalid: %x "
+			  "wifi_parser_error: %x "
+			  "amsdu_parser_error: %x "
+			  "sa_idx_timeout: %x "
+			  "da_idx_timeout: %x "
+			  "msdu_limit_error: %x "
+			  "da_is_valid: %x "
+			  "da_is_mcbc: %x "
+			  "sa_is_valid: %x "
+			  "decrypt_status_code: %x "
+			  "rx_bitmap_not_updated: %x "
+			  "reserved_2: %x "
+			  "msdu_done: %x ",
+			  rx_attn->encrypt_required,
+			  rx_attn->directed,
+			  rx_attn->buffer_fragment,
+			  rx_attn->mpdu_length_err,
+			  rx_attn->tkip_mic_err,
+			  rx_attn->decrypt_err,
+			  rx_attn->unencrypted_frame_err,
+			  rx_attn->fcs_err,
+			  rx_attn->flow_idx_timeout,
+			  rx_attn->flow_idx_invalid,
+			  rx_attn->wifi_parser_error,
+			  rx_attn->amsdu_parser_error,
+			  rx_attn->sa_idx_timeout,
+			  rx_attn->da_idx_timeout,
+			  rx_attn->msdu_limit_error,
+			  rx_attn->da_is_valid,
+			  rx_attn->da_is_mcbc,
+			  rx_attn->sa_is_valid,
+			  rx_attn->decrypt_status_code,
+			  rx_attn->rx_bitmap_not_updated,
+			  rx_attn->reserved_2,
+			  rx_attn->msdu_done);
+}
+
+/**
+ * hal_rx_dump_mpdu_end_tlv_generic_rh: dump RX mpdu_end TLV in structured
+ *					human readable format.
+ * @pkttlvs: pointer to pkttlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_mpdu_end_tlv_generic_rh(void *pkttlvs,
+						       uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_mpdu_end *mpdu_end = &pkt_tlvs->mpdu_end_tlv.rx_mpdu_end;
+
+	hal_verbose_debug("rx_mpdu_end tlv - "
+			  "rxpcu_mpdu_filter_in_category: %x "
+			  "sw_frame_group_id: %x "
+			  "phy_ppdu_id: %x "
+			  "unsup_ktype_short_frame: %x "
+			  "rx_in_tx_decrypt_byp: %x "
+			  "overflow_err: %x "
+			  "mpdu_length_err: %x "
+			  "tkip_mic_err: %x "
+			  "decrypt_err: %x "
+			  "unencrypted_frame_err: %x "
+			  "pn_fields_contain_valid_info: %x "
+			  "fcs_err: %x "
+			  "msdu_length_err: %x "
+			  "rxdma0_destination_ring: %x "
+			  "rxdma1_destination_ring: %x "
+			  "decrypt_status_code: %x "
+			  "rx_bitmap_not_updated: %x ",
+			  mpdu_end->rxpcu_mpdu_filter_in_category,
+			  mpdu_end->sw_frame_group_id,
+			  mpdu_end->phy_ppdu_id,
+			  mpdu_end->unsup_ktype_short_frame,
+			  mpdu_end->rx_in_tx_decrypt_byp,
+			  mpdu_end->overflow_err,
+			  mpdu_end->mpdu_length_err,
+			  mpdu_end->tkip_mic_err,
+			  mpdu_end->decrypt_err,
+			  mpdu_end->unencrypted_frame_err,
+			  mpdu_end->pn_fields_contain_valid_info,
+			  mpdu_end->fcs_err,
+			  mpdu_end->msdu_length_err,
+			  mpdu_end->rxdma0_destination_ring,
+			  mpdu_end->rxdma1_destination_ring,
+			  mpdu_end->decrypt_status_code,
+			  mpdu_end->rx_bitmap_not_updated);
+}
+
+#ifdef NO_RX_PKT_HDR_TLV
+static inline void hal_rx_dump_pkt_hdr_tlv_generic_rh(void *pkttlvs,
+						      uint8_t dbg_level)
+{
+}
+#else
+/**
+ * hal_rx_dump_pkt_hdr_tlv_generic_rh: dump RX pkt header TLV in hex format
+ * @pkttlvs: pointer to pkttlvs.
+ * @dbg_level: log level.
+ *
+ * Return: void
+ */
+static inline void hal_rx_dump_pkt_hdr_tlv_generic_rh(void *pkttlvs,
+						      uint8_t dbg_level)
+{
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv;
+
+	hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv"
+			  "\n---------------\nphy_ppdu_id %d ",
+			  pkt_hdr_tlv->phy_ppdu_id);
+	hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128);
+}
+#endif
+
 /**
  * hal_rx_dump_mpdu_start_tlv_generic_rh: dump RX mpdu_start TLV in structured
- *			       human readable format.
- * @mpdustart: pointer the rx_attention TLV in pkt.
+ *					  human readable format.
+ * @pkttlvs: pointer to pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static inline void hal_rx_dump_mpdu_start_tlv_generic_rh(void *mpdustart,
+static inline void hal_rx_dump_mpdu_start_tlv_generic_rh(void *pkttlvs,
 							 uint8_t dbg_level)
 {
-	struct rx_mpdu_start *mpdu_start = (struct rx_mpdu_start *)mpdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_mpdu_start *mpdu_start =
+					&pkt_tlvs->mpdu_start_tlv.rx_mpdu_start;
 	struct rx_mpdu_info *mpdu_info =
 		(struct rx_mpdu_info *)&mpdu_start->rx_mpdu_info_details;
 

+ 0 - 189
hal/wifi3.0/rh/hal_rh_rx.h

@@ -577,195 +577,6 @@ hal_rx_mpdu_peer_meta_data_get_rh(uint8_t *buf)
 		RX_MPDU_END_1_TKIP_MIC_ERR_MASK,	\
 		RX_MPDU_END_1_TKIP_MIC_ERR_LSB))
 
-/**
- * hal_rx_dump_rx_attention_tlv: dump RX attention TLV in structured
- *				 humman readable format.
- * @rx_attn: pointer the rx_attention TLV in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_rx_attention_tlv(struct rx_attention *rx_attn,
-						uint8_t dbg_level)
-{
-	hal_verbose_debug("rx_attention tlv (1/2) - "
-			  "rxpcu_mpdu_filter_in_category: %x "
-			  "sw_frame_group_id: %x "
-			  "reserved_0: %x "
-			  "phy_ppdu_id: %x "
-			  "first_mpdu : %x "
-			  "reserved_1a: %x "
-			  "mcast_bcast: %x "
-			  "ast_index_not_found: %x "
-			  "ast_index_timeout: %x "
-			  "power_mgmt: %x "
-			  "non_qos: %x "
-			  "null_data: %x "
-			  "mgmt_type: %x "
-			  "ctrl_type: %x "
-			  "more_data: %x "
-			  "eosp: %x "
-			  "a_msdu_error: %x "
-			  "fragment_flag: %x "
-			  "order: %x "
-			  "cce_match: %x "
-			  "overflow_err: %x "
-			  "msdu_length_err: %x "
-			  "tcp_udp_chksum_fail: %x "
-			  "ip_chksum_fail: %x "
-			  "sa_idx_invalid: %x "
-			  "da_idx_invalid: %x "
-			  "reserved_1b: %x "
-			  "rx_in_tx_decrypt_byp: %x ",
-			  rx_attn->rxpcu_mpdu_filter_in_category,
-			  rx_attn->sw_frame_group_id,
-			  rx_attn->reserved_0,
-			  rx_attn->phy_ppdu_id,
-			  rx_attn->first_mpdu,
-			  rx_attn->reserved_1a,
-			  rx_attn->mcast_bcast,
-			  rx_attn->ast_index_not_found,
-			  rx_attn->ast_index_timeout,
-			  rx_attn->power_mgmt,
-			  rx_attn->non_qos,
-			  rx_attn->null_data,
-			  rx_attn->mgmt_type,
-			  rx_attn->ctrl_type,
-			  rx_attn->more_data,
-			  rx_attn->eosp,
-			  rx_attn->a_msdu_error,
-			  rx_attn->fragment_flag,
-			  rx_attn->order,
-			  rx_attn->cce_match,
-			  rx_attn->overflow_err,
-			  rx_attn->msdu_length_err,
-			  rx_attn->tcp_udp_chksum_fail,
-			  rx_attn->ip_chksum_fail,
-			  rx_attn->sa_idx_invalid,
-			  rx_attn->da_idx_invalid,
-			  rx_attn->reserved_1b,
-			  rx_attn->rx_in_tx_decrypt_byp);
-
-	hal_verbose_debug("rx_attention tlv (2/2) - "
-			  "encrypt_required: %x "
-			  "directed: %x "
-			  "buffer_fragment: %x "
-			  "mpdu_length_err: %x "
-			  "tkip_mic_err: %x "
-			  "decrypt_err: %x "
-			  "unencrypted_frame_err: %x "
-			  "fcs_err: %x "
-			  "flow_idx_timeout: %x "
-			  "flow_idx_invalid: %x "
-			  "wifi_parser_error: %x "
-			  "amsdu_parser_error: %x "
-			  "sa_idx_timeout: %x "
-			  "da_idx_timeout: %x "
-			  "msdu_limit_error: %x "
-			  "da_is_valid: %x "
-			  "da_is_mcbc: %x "
-			  "sa_is_valid: %x "
-			  "decrypt_status_code: %x "
-			  "rx_bitmap_not_updated: %x "
-			  "reserved_2: %x "
-			  "msdu_done: %x ",
-			  rx_attn->encrypt_required,
-			  rx_attn->directed,
-			  rx_attn->buffer_fragment,
-			  rx_attn->mpdu_length_err,
-			  rx_attn->tkip_mic_err,
-			  rx_attn->decrypt_err,
-			  rx_attn->unencrypted_frame_err,
-			  rx_attn->fcs_err,
-			  rx_attn->flow_idx_timeout,
-			  rx_attn->flow_idx_invalid,
-			  rx_attn->wifi_parser_error,
-			  rx_attn->amsdu_parser_error,
-			  rx_attn->sa_idx_timeout,
-			  rx_attn->da_idx_timeout,
-			  rx_attn->msdu_limit_error,
-			  rx_attn->da_is_valid,
-			  rx_attn->da_is_mcbc,
-			  rx_attn->sa_is_valid,
-			  rx_attn->decrypt_status_code,
-			  rx_attn->rx_bitmap_not_updated,
-			  rx_attn->reserved_2,
-			  rx_attn->msdu_done);
-}
-
-/**
- * hal_rx_dump_mpdu_end_tlv: dump RX mpdu_end TLV in structured
- *			     human readable format.
- * @mpdu_end: pointer the mpdu_end TLV in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_mpdu_end_tlv(struct rx_mpdu_end *mpdu_end,
-					    uint8_t dbg_level)
-{
-	hal_verbose_debug("rx_mpdu_end tlv - "
-			  "rxpcu_mpdu_filter_in_category: %x "
-			  "sw_frame_group_id: %x "
-			  "phy_ppdu_id: %x "
-			  "unsup_ktype_short_frame: %x "
-			  "rx_in_tx_decrypt_byp: %x "
-			  "overflow_err: %x "
-			  "mpdu_length_err: %x "
-			  "tkip_mic_err: %x "
-			  "decrypt_err: %x "
-			  "unencrypted_frame_err: %x "
-			  "pn_fields_contain_valid_info: %x "
-			  "fcs_err: %x "
-			  "msdu_length_err: %x "
-			  "rxdma0_destination_ring: %x "
-			  "rxdma1_destination_ring: %x "
-			  "decrypt_status_code: %x "
-			  "rx_bitmap_not_updated: %x ",
-			  mpdu_end->rxpcu_mpdu_filter_in_category,
-			  mpdu_end->sw_frame_group_id,
-			  mpdu_end->phy_ppdu_id,
-			  mpdu_end->unsup_ktype_short_frame,
-			  mpdu_end->rx_in_tx_decrypt_byp,
-			  mpdu_end->overflow_err,
-			  mpdu_end->mpdu_length_err,
-			  mpdu_end->tkip_mic_err,
-			  mpdu_end->decrypt_err,
-			  mpdu_end->unencrypted_frame_err,
-			  mpdu_end->pn_fields_contain_valid_info,
-			  mpdu_end->fcs_err,
-			  mpdu_end->msdu_length_err,
-			  mpdu_end->rxdma0_destination_ring,
-			  mpdu_end->rxdma1_destination_ring,
-			  mpdu_end->decrypt_status_code,
-			  mpdu_end->rx_bitmap_not_updated);
-}
-
-#ifdef NO_RX_PKT_HDR_TLV
-static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs,
-					   uint8_t dbg_level)
-{
-}
-#else
-/**
- * hal_rx_dump_pkt_hdr_tlv: dump RX pkt header TLV in hex format
- * @pkt_tlvs: pointer the pkt_hdr_tlv in pkt.
- * @dbg_level: log level.
- *
- * Return: void
- */
-static inline void hal_rx_dump_pkt_hdr_tlv(struct rx_pkt_tlvs *pkt_tlvs,
-					   uint8_t dbg_level)
-{
-	struct rx_pkt_hdr_tlv *pkt_hdr_tlv = &pkt_tlvs->pkt_hdr_tlv;
-
-	hal_verbose_debug("\n---------------\nrx_pkt_hdr_tlv"
-			  "\n---------------\nphy_ppdu_id %d ",
-			  pkt_hdr_tlv->phy_ppdu_id);
-	hal_verbose_hex_dump(pkt_hdr_tlv->rx_pkt_hdr, 128);
-}
-#endif
-
 #define HAL_RX_MPDU_GET_FRAME_CONTROL_FIELD(_rx_mpdu_info)	\
 	(_HAL_MS((*_OFFSET_TO_WORD_PTR(_rx_mpdu_info,	\
 		RX_MPDU_INFO_14_MPDU_FRAME_CONTROL_FIELD_OFFSET)),	\

+ 24 - 12
hal/wifi3.0/wcn6450/hal_wcn6450.c

@@ -533,15 +533,17 @@ void hal_rx_proc_phyrx_other_receive_info_tlv_6450(void *rx_tlv_hdr,
 
 /**
  * hal_rx_dump_msdu_start_tlv_6450() : dump RX msdu_start TLV in structured
- *                           human readable format.
- * @msdustart: pointer the msdu_start TLV in pkt.
+ *				       human readable format.
+ * @pkttlvs: pointer to pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_start_tlv_6450(void *msdustart, uint8_t dbg_level)
+static void hal_rx_dump_msdu_start_tlv_6450(void *pkttlvs, uint8_t dbg_level)
 {
-	struct rx_msdu_start *msdu_start = (struct rx_msdu_start *)msdustart;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_start *msdu_start =
+					&pkt_tlvs->msdu_start_tlv.rx_msdu_start;
 
 	hal_verbose_debug(
 			  "rx_msdu_start tlv (1/2) - "
@@ -610,16 +612,17 @@ static void hal_rx_dump_msdu_start_tlv_6450(void *msdustart, uint8_t dbg_level)
 
 /**
  * hal_rx_dump_msdu_end_tlv_6450: dump RX msdu_end TLV in structured
- *			     human readable format.
- * @msduend: pointer the msdu_end TLV in pkt.
+ *				  human readable format.
+ * @pkttlvs: pointer to pkttlvs.
  * @dbg_level: log level.
  *
  * Return: void
  */
-static void hal_rx_dump_msdu_end_tlv_6450(void *msduend,
+static void hal_rx_dump_msdu_end_tlv_6450(void *pkttlvs,
 					  uint8_t dbg_level)
 {
-	struct rx_msdu_end *msdu_end = (struct rx_msdu_end *)msduend;
+	struct rx_pkt_tlvs *pkt_tlvs = (struct rx_pkt_tlvs *)pkttlvs;
+	struct rx_msdu_end *msdu_end = &pkt_tlvs->msdu_end_tlv.rx_msdu_end;
 
 	__QDF_TRACE_RL(dbg_level, QDF_MODULE_ID_DP,
 		       "rx_msdu_end tlv (1/3) - "
@@ -1813,9 +1816,20 @@ static void hal_hw_txrx_ops_attach_wcn6450(struct hal_soc *hal_soc)
 	hal_soc->ops->hal_rx_get_tlv = hal_rx_get_tlv_6450;
 	hal_soc->ops->hal_rx_proc_phyrx_other_receive_info_tlv =
 				hal_rx_proc_phyrx_other_receive_info_tlv_6450;
+
+	hal_soc->ops->hal_rx_dump_msdu_end_tlv =
+					hal_rx_dump_msdu_end_tlv_6450;
+	hal_soc->ops->hal_rx_dump_rx_attention_tlv =
+					hal_rx_dump_rx_attention_tlv_generic_rh;
 	hal_soc->ops->hal_rx_dump_msdu_start_tlv =
-				hal_rx_dump_msdu_start_tlv_6450;
-	hal_soc->ops->hal_rx_dump_msdu_end_tlv = hal_rx_dump_msdu_end_tlv_6450;
+					hal_rx_dump_msdu_start_tlv_6450;
+	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
+					hal_rx_dump_mpdu_start_tlv_generic_rh;
+	hal_soc->ops->hal_rx_dump_mpdu_end_tlv =
+					hal_rx_dump_mpdu_end_tlv_generic_rh;
+	hal_soc->ops->hal_rx_dump_pkt_hdr_tlv =
+					hal_rx_dump_pkt_hdr_tlv_generic_rh;
+
 	hal_soc->ops->hal_get_link_desc_size = hal_get_link_desc_size_6450;
 	hal_soc->ops->hal_rx_mpdu_start_tid_get =
 				hal_rx_mpdu_start_tid_get_6450;
@@ -1833,8 +1847,6 @@ static void hal_hw_txrx_ops_attach_wcn6450(struct hal_soc *hal_soc)
 				hal_rx_status_get_tlv_info_generic_rh;
 	hal_soc->ops->hal_rx_wbm_err_info_get =
 				hal_rx_wbm_err_info_get_6450;
-	hal_soc->ops->hal_rx_dump_mpdu_start_tlv =
-				hal_rx_dump_mpdu_start_tlv_generic_rh;
 	hal_soc->ops->hal_tx_set_pcp_tid_map =
 				hal_tx_set_pcp_tid_map_generic_rh;
 	hal_soc->ops->hal_tx_update_pcp_tid_map =