فهرست منبع

qcacmn: Fix WKK monitor compilation issues

Fix WKK monitor compilation issues

Change-Id: I04bd89341e61bdcef59ecb03baa6cf53ca970cbe
CRs-Fixed: 3100286
Amir Patel 3 سال پیش
والد
کامیت
484c917fbf

+ 0 - 3
dp/wifi3.0/be/dp_be.c

@@ -24,7 +24,6 @@
 #include "dp_be_tx.h"
 #include "dp_be_rx.h"
 #if !defined(DISABLE_MON_CONFIG) && defined(QCA_MONITOR_2_0_SUPPORT)
-#ifdef QCA_MONITOR_2_0_SUPPORT
 #include "dp_mon_2.0.h"
 #endif
 #include <hal_be_api.h>
@@ -1481,9 +1480,7 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 				dp_wbm_get_rx_desc_from_hal_desc_be;
 #endif
 	arch_ops->txrx_get_context_size = dp_get_context_size_be;
-#if QCA_MONITOR_2_0_SUPPORT
 	arch_ops->txrx_get_mon_context_size = dp_mon_get_context_size_be;
-#endif
 	arch_ops->dp_rx_desc_cookie_2_va =
 			dp_rx_desc_cookie_2_va_be;
 

+ 0 - 2
dp/wifi3.0/be/dp_be.h

@@ -293,7 +293,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops);
  */
 qdf_size_t dp_get_context_size_be(enum dp_context_type context_type);
 
-#if QCA_MONITOR_2_0_SUPPORT
 /**
  * dp_mon_get_context_size_be() - get BE specific size for mon pdev/soc
  * @arch_ops: arch ops pointer
@@ -301,7 +300,6 @@ qdf_size_t dp_get_context_size_be(enum dp_context_type context_type);
  * Return: size in bytes for the context_type
  */
 qdf_size_t dp_mon_get_context_size_be(enum dp_context_type context_type);
-#endif
 
 /**
  * dp_get_be_soc_from_dp_soc() - get dp_soc_be from dp_soc

+ 1 - 0
dp/wifi3.0/dp_types.h

@@ -2297,6 +2297,7 @@ struct dp_soc {
 	qdf_atomic_t ref_count;
 
 	unsigned long vdev_stats_id_map;
+	bool txmon_hw_support;
 };
 
 #ifdef IPA_OFFLOAD

+ 44 - 52
dp/wifi3.0/monitor/2.0/dp_mon_2.0.c

@@ -28,6 +28,7 @@
 #include <dp_tx_mon_2.0.h>
 #include <hal_be_api_mon.h>
 #include <dp_be.h>
+#include <htt_ppdu_stats.h>
 
 #if !defined(DISABLE_MON_CONFIG)
 /*
@@ -183,7 +184,7 @@ dp_mon_buffers_replenish(struct dp_soc *dp_soc,
 							   tail);
 
 		if (!num_alloc_desc) {
-			dp_mon_err("%pK: no free rx_descs in freelist", dp_soc);
+			dp_mon_debug("%pK: no free rx_descs in freelist", dp_soc);
 			return QDF_STATUS_E_NOMEM;
 		}
 
@@ -342,19 +343,6 @@ QDF_STATUS dp_vdev_set_monitor_mode_rings_2_0(struct dp_pdev *pdev,
 {
 	return QDF_STATUS_SUCCESS;
 }
-#else
-static inline
-void dp_vdev_set_monitor_mode_buf_rings_2_0(struct dp_pdev *pdev)
-{
-}
-
-static inline
-QDF_STATUS dp_vdev_set_monitor_mode_rings_2_0(struct dp_pdev *pdev,
-					      uint8_t delayed_replenish)
-{
-	return QDF_STATUS_SUCCESS;
-}
-#endif
 
 #if defined(QCA_ENHANCED_STATS_SUPPORT) && defined(WLAN_FEATURE_11BE)
 void
@@ -368,10 +356,12 @@ dp_mon_tx_stats_update_2_0(struct dp_peer *peer,
 	mcs = ppdu->mcs;
 
 	DP_STATS_INCC(peer,
-		      tx.pkt_type[preamble].mcs_count[MAX_MCS - 1], num_msdu,
+		      tx.pkt_type[preamble].mcs_count[MAX_MCS - 1],
+		      ppdu->num_msdu,
 		      ((mcs >= (MAX_MCS - 1)) && (preamble == DOT11_BE)));
 	DP_STATS_INCC(peer,
-		      tx.pkt_type[preamble].mcs_count[mcs], num_msdu,
+		      tx.pkt_type[preamble].mcs_count[mcs],
+		      ppdu->num_msdu,
 		      ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_BE)));
 	DP_STATS_INCC(peer,
 		      tx.su_be_ppdu_cnt.mcs_count[MAX_MCS - 1], 1,
@@ -382,22 +372,22 @@ dp_mon_tx_stats_update_2_0(struct dp_peer *peer,
 		      ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_BE) &&
 		      (ppdu->ppdu_type == HTT_PPDU_STATS_PPDU_TYPE_SU)));
 	DP_STATS_INCC(peer,
-		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[MAX_MCS - 1],
+		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].mcs_count[MAX_MCS - 1],
 		      1, ((mcs >= (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu->ppdu_type == HTT_PPDU_STATS_PPDU_TYPE_MU_OFDMA)));
 	DP_STATS_INCC(peer,
-		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[mcs],
+		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_OFDMA].mcs_count[mcs],
 		      1, ((mcs < (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu->ppdu_type == HTT_PPDU_STATS_PPDU_TYPE_MU_OFDMA)));
 	DP_STATS_INCC(peer,
-		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[MAX_MCS - 1],
+		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].mcs_count[MAX_MCS - 1],
 		      1, ((mcs >= (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu->ppdu_type == HTT_PPDU_STATS_PPDU_TYPE_MU_MIMO)));
 	DP_STATS_INCC(peer,
-		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[mcs],
+		      tx.mu_be_ppdu_cnt[TXRX_TYPE_MU_MIMO].mcs_count[mcs],
 		      1, ((mcs < (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu->ppdu_type == HTT_PPDU_STATS_PPDU_TYPE_MU_MIMO)));
@@ -410,7 +400,7 @@ dp_mon_tx_stats_update_2_0(struct dp_peer *peer,
 			   struct cdp_tx_completion_ppdu_user *ppdu)
 {
 }
-#endif
+#endif /* QCA_ENHANCED_STATS_SUPPORT && WLAN_FEATURE_11BE */
 
 #ifdef QCA_SUPPORT_BPR
 static QDF_STATUS
@@ -418,9 +408,8 @@ dp_set_bpr_enable_2_0(struct dp_pdev *pdev, int val)
 {
 	return QDF_STATUS_SUCCESS;
 }
-#endif
+#endif /* QCA_SUPPORT_BPR */
 
-#ifndef DISABLE_MON_CONFIG
 static
 QDF_STATUS dp_mon_soc_htt_srng_setup_2_0(struct dp_soc *soc)
 {
@@ -484,17 +473,17 @@ QDF_STATUS dp_mon_pdev_htt_srng_setup_2_0(struct dp_soc *soc,
 QDF_STATUS dp_tx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 {
 	struct dp_soc *soc  = int_ctx->soc;
+	struct dp_mon_soc *mon_soc = soc->monitor_soc;
 	union dp_mon_desc_list_elem_t *desc_list = NULL;
 	union dp_mon_desc_list_elem_t *tail = NULL;
 	struct dp_srng *tx_mon_buf_ring;
-	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
-	struct dp_mon_soc_be *mon_soc_be = be_soc->monitor_soc_be;
 	struct dp_intr_stats *intr_stats = &int_ctx->intr_stats;
+	struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
 	uint32_t num_entries_avail;
 	int sync_hw_ptr = 1;
 	void *hal_srng;
 
-	tx_mon_buf_ring = &be_soc->monitor_soc_be->tx_mon_buf_ring;
+	tx_mon_buf_ring = &mon_soc_be->tx_mon_buf_ring;
 	hal_srng = tx_mon_buf_ring->hal_srng;
 
 	intr_stats->num_host2txmon_ring__masks++;
@@ -505,9 +494,10 @@ QDF_STATUS dp_tx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 						   sync_hw_ptr);
 	hal_srng_access_end(soc->hal_soc, hal_srng);
 
-	dp_mon_buffers_replenish(soc, tx_mon_buf_ring,
-				 &be_soc->monitor_soc_be->tx_desc_mon,
-				 num_entries_avail, &desc_list, &tail);
+	if (num_entries_avail)
+		dp_mon_buffers_replenish(soc, tx_mon_buf_ring,
+					 &mon_soc_be->tx_desc_mon,
+					 num_entries_avail, &desc_list, &tail);
 
 	return QDF_STATUS_SUCCESS;
 }
@@ -515,12 +505,12 @@ QDF_STATUS dp_tx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 QDF_STATUS dp_rx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 {
 	struct dp_soc *soc  = int_ctx->soc;
+	struct dp_mon_soc *mon_soc = soc->monitor_soc;
 	union dp_mon_desc_list_elem_t *desc_list = NULL;
 	union dp_mon_desc_list_elem_t *tail = NULL;
 	struct dp_srng *rx_mon_buf_ring;
-	struct dp_soc_be *be_soc = dp_get_be_soc_from_dp_soc(soc);
-	struct dp_mon_soc_be *mon_soc_be = be_soc->monitor_soc_be;
 	struct dp_intr_stats *intr_stats = &int_ctx->intr_stats;
+	struct dp_mon_soc_be *mon_soc_be = dp_get_be_mon_soc_from_dp_mon_soc(mon_soc);
 	uint32_t num_entries_avail;
 	int sync_hw_ptr = 1;
 	void *hal_srng;
@@ -536,21 +526,14 @@ QDF_STATUS dp_rx_mon_refill_buf_ring_2_0(struct dp_intr *int_ctx)
 						   sync_hw_ptr);
 	hal_srng_access_end(soc->hal_soc, hal_srng);
 
-	dp_mon_buffers_replenish(soc, rx_mon_buf_ring,
-				 &be_soc->monitor_soc_be->rx_desc_mon,
-				 num_entries_avail, &desc_list, &tail);
+	if (num_entries_avail)
+		dp_mon_buffers_replenish(soc, rx_mon_buf_ring,
+					 &mon_soc_be->rx_desc_mon,
+					 num_entries_avail, &desc_list, &tail);
 
 	return QDF_STATUS_SUCCESS;
 }
 
-#ifndef DISABLE_MON_CONFIG
-static uint32_t
-dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
-		      uint32_t mac_id, uint32_t quota)
-{
-	return 0;
-}
-
 static
 QDF_STATUS dp_mon_soc_detach_2_0(struct dp_soc *soc)
 {
@@ -790,13 +773,6 @@ QDF_STATUS dp_mon_htt_srng_setup_2_0(struct dp_soc *soc,
 	return QDF_STATUS_SUCCESS;
 }
 
-static uint32_t
-dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
-		      uint32_t mac_id, uint32_t quota)
-{
-	return 0;
-}
-
 static uint32_t
 dp_tx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
 		      uint32_t mac_id, uint32_t quota)
@@ -848,12 +824,28 @@ QDF_STATUS dp_mon_pdev_alloc_2_0(struct dp_pdev *pdev)
 {
 	return QDF_STATUS_SUCCESS;
 }
+
+static inline
+void dp_vdev_set_monitor_mode_buf_rings_2_0(struct dp_pdev *pdev)
+{
+}
+
+static inline
+QDF_STATUS dp_vdev_set_monitor_mode_rings_2_0(struct dp_pdev *pdev,
+					      uint8_t delayed_replenish)
+{
+	return QDF_STATUS_SUCCESS;
+}
 #endif
 
 static void dp_mon_register_intr_ops_2_0(struct dp_soc *soc)
 {
 	struct dp_mon_soc *mon_soc = soc->monitor_soc;
 
+	mon_soc->mon_ops->rx_mon_refill_buf_ring =
+			dp_rx_mon_refill_buf_ring_2_0,
+	mon_soc->mon_ops->tx_mon_refill_buf_ring =
+			dp_tx_mon_refill_buf_ring_2_0,
 	mon_soc->mon_rx_process = dp_rx_mon_process_2_0;
 }
 
@@ -972,10 +964,10 @@ dp_mon_register_feature_ops_2_0(struct dp_soc *soc)
 	mon_ops->mon_vdev_set_monitor_mode_rings =
 				dp_vdev_set_monitor_mode_rings_2_0;
 #ifdef QCA_ENHANCED_STATS_SUPPORT
-	mon_ops->mon_rx_stats_update = dp_mon_rx_stats_update_2_0;
+	mon_ops->mon_rx_stats_update = dp_rx_mon_stats_update_2_0;
 	mon_ops->mon_rx_populate_ppdu_usr_info =
-			dp_mon_populate_ppdu_usr_info_2_0;
-	mon_ops->mon_rx_populate_ppdu_info = dp_mon_populate_ppdu_info_2_0;
+			dp_rx_mon_populate_ppdu_usr_info_2_0;
+	mon_ops->mon_rx_populate_ppdu_info = dp_rx_mon_populate_ppdu_info_2_0;
 #endif
 }
 

+ 8 - 2
dp/wifi3.0/monitor/2.0/dp_mon_filter_2.0.c

@@ -1345,7 +1345,7 @@ dp_mon_filter_set_reset_rx_pkt_log_cbf_dest_2_0(struct dp_pdev_be *pdev_be,
 	struct dp_soc *soc = pdev_be->pdev.soc;
 	enum dp_mon_filter_mode mode = DP_MON_FILTER_PKT_LOG_CBF_MODE;
 	enum dp_mon_filter_srng_type srng_type;
-	struct dp_mon_pdev *mon_pdev = pdev_be->pdev->monitor_pdev;
+	struct dp_mon_pdev *mon_pdev = pdev_be->pdev.monitor_pdev;
 	struct dp_mon_pdev_be *mon_pdev_be =
 			dp_get_be_mon_pdev_from_dp_mon_pdev(mon_pdev);
 
@@ -1397,7 +1397,7 @@ void dp_mon_filter_setup_rx_pkt_log_cbf_2_0(struct dp_pdev *pdev)
 	/* Enabled the filter */
 	filter.rx_tlv_filter.valid = true;
 
-	dp_mon_filter_set_status_cbf(&pdev, &filter.rx_tlv_filter);
+	dp_mon_filter_set_status_cbf(pdev, &filter.rx_tlv_filter);
 	dp_mon_filter_show_filter_be(mon_pdev_be, mode, &filter);
 	mon_pdev_be->filter_be[mode][srng_type] = filter;
 
@@ -1688,6 +1688,12 @@ QDF_STATUS dp_tx_mon_filter_update_2_0(struct dp_pdev *pdev)
 		return QDF_STATUS_E_FAILURE;
 	}
 
+	soc = pdev->soc;
+	if (!soc) {
+		dp_mon_filter_err("soc Context is null");
+		return QDF_STATUS_E_FAILURE;
+	}
+
 	filter_ptr = &mon_pdev_be->filter_be[mode][srng_type];
 	if (!filter_ptr) {
 		dp_mon_filter_err("Filter not allocated");

+ 12 - 12
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.c

@@ -205,14 +205,14 @@ dp_rx_mon_buffers_alloc(struct dp_soc *soc, uint32_t size)
 
 #ifdef QCA_ENHANCED_STATS_SUPPORT
 void
-dp_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status *rx_user_status,
-				  struct cdp_rx_stats_ppdu_user *ppdu_user)
+dp_rx_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status *rx_user_status,
+				     struct cdp_rx_stats_ppdu_user *ppdu_user)
 {
 	ppdu_user->mpdu_retries = rx_user_status->retry_mpdu;
 }
 
 #ifdef WLAN_FEATURE_11BE
-void dp_mon_rx_stats_update_2_0(struct dp_peer *peer,
+void dp_rx_mon_stats_update_2_0(struct dp_peer *peer,
 				struct cdp_rx_indication_ppdu *ppdu,
 				struct cdp_rx_stats_ppdu_user *ppdu_user)
 {
@@ -235,35 +235,35 @@ void dp_mon_rx_stats_update_2_0(struct dp_peer *peer,
 		      ((mcs < (MAX_MCS - 1)) && (preamble == DOT11_BE) &&
 		      (ppdu_type == HAL_RX_TYPE_SU)));
 	DP_STATS_INCC(peer,
-		      rx.rx_mu_be[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[MAX_MCS - 1],
+		      rx.rx_mu_be[TXRX_TYPE_MU_OFDMA].mcs_count[MAX_MCS - 1],
 		      1, ((mcs >= (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu_type == HAL_RX_TYPE_MU_OFDMA)));
 	DP_STATS_INCC(peer,
-		      rx.rx_mu_be[TXRX_TYPE_MU_OFDMA].ppdu.mcs_count[mcs],
+		      rx.rx_mu_be[TXRX_TYPE_MU_OFDMA].mcs_count[mcs],
 		      1, ((mcs < (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu_type == HAL_RX_TYPE_MU_OFDMA)));
 	DP_STATS_INCC(peer,
-		      rx.rx_mu_be[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[MAX_MCS - 1],
+		      rx.rx_mu_be[TXRX_TYPE_MU_MIMO].mcs_count[MAX_MCS - 1],
 		      1, ((mcs >= (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu_type == HAL_RX_TYPE_MU_MIMO)));
 	DP_STATS_INCC(peer,
-		      rx.rx_mu_be[TXRX_TYPE_MU_MIMO].ppdu.mcs_count[mc],
+		      rx.rx_mu_be[TXRX_TYPE_MU_MIMO].mcs_count[mcs],
 		      1, ((mcs < (MAX_MCS - 1)) &&
 		      (preamble == DOT11_BE) &&
 		      (ppdu_type == HAL_RX_TYPE_MU_MIMO)));
 }
 
 void
-dp_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
-			      struct cdp_rx_indication_ppdu *ppdu)
+dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
+				 struct cdp_rx_indication_ppdu *ppdu)
 {
 	ppdu->punc_bw = hal_ppdu_info->rx_status.punctured_bw;
 }
 #else
-void dp_mon_rx_stats_update_2_0(struct dp_peer *peer,
+void dp_rx_mon_stats_update_2_0(struct dp_peer *peer,
 				struct cdp_rx_indication_ppdu *ppdu,
 				struct cdp_rx_stats_ppdu_user *ppdu_user)
 {
@@ -271,8 +271,8 @@ void dp_mon_rx_stats_update_2_0(struct dp_peer *peer,
 }
 
 void
-dp_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
-			      struct cdp_rx_indication_ppdu *ppdu)
+dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
+				 struct cdp_rx_indication_ppdu *ppdu)
 {
 	ppdu->punc_bw = 0;
 }

+ 58 - 0
dp/wifi3.0/monitor/2.0/dp_rx_mon_2.0.h

@@ -87,4 +87,62 @@ void dp_rx_mon_process_status_tlv(struct dp_soc *soc,
 				  struct hal_mon_desc *mon_ring_desc,
 				  qdf_dma_addr_t addr);
 
+/**
+ * dp_rx_mon_stats_update_2_0 () - update rx stats
+ *
+ * @peer: peer handle
+ * @ppdu: Rx PPDU status metadata object
+ * @ppdu_user: Rx PPDU user status metadata object
+ *
+ * Return: Void
+ */
+void dp_rx_mon_stats_update_2_0(struct dp_peer *peer,
+				struct cdp_rx_indication_ppdu *ppdu,
+				struct cdp_rx_stats_ppdu_user *ppdu_user);
+
+/**
+ * dp_rx_mon_populate_ppdu_usr_info_2_0 () - Populate ppdu user info
+ *
+ * @rx_user_status: Rx user status
+ * @ppdu_user: ppdu user metadata
+ *
+ * Return: void
+ */
+void
+dp_rx_mon_populate_ppdu_usr_info_2_0(struct mon_rx_user_status *rx_user_status,
+				     struct cdp_rx_stats_ppdu_user *ppdu_user);
+
+/**
+ * dp_rx_mon_populate_ppdu_info_2_0 () --  Populate ppdu info
+ *
+ * @hal_ppdu_info: HAL PPDU info
+ * @ppdu: Rx PPDU status metadata object
+ *
+ * Return: void
+ */
+void
+dp_rx_mon_populate_ppdu_info_2_0(struct hal_rx_ppdu_info *hal_ppdu_info,
+				 struct cdp_rx_indication_ppdu *ppdu);
+
+#if !defined(DISABLE_MON_CONFIG)
+/*
+ * dp_rx_mon_process_2_0 () - Process Rx monitor interrupt
+ *
+ * @soc: DP soc handle
+ * @int_ctx: Interrupt context
+ * @mac_id: LMAC id
+ * @quota: quota to reap
+ */
+uint32_t
+dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
+		      uint32_t mac_id, uint32_t quota);
+#else
+static uint32_t
+dp_rx_mon_process_2_0(struct dp_soc *soc, struct dp_intr *int_ctx,
+		      uint32_t mac_id, uint32_t quota)
+{
+	return 0;
+}
+
+#endif /* DISABLE_MON_CONFIG */
 #endif /* _DP_RX_MON_2_0_H_ */

+ 2 - 12
dp/wifi3.0/monitor/dp_mon.c

@@ -4707,23 +4707,13 @@ QDF_STATUS dp_mon_pdev_init(struct dp_pdev *pdev)
 		mon_ops->rx_mon_desc_pool_init(pdev);
 
 	/* allocate buffers and replenish the monitor RxDMA ring */
-	if (mon_ops->rx_mon_buffers_alloc) {
-		if (mon_ops->rx_mon_buffers_alloc(pdev)) {
-			dp_mon_err("%pK: rx mon buffers alloc failed", pdev);
-			goto fail2;
-		}
-	}
+	if (mon_ops->rx_mon_buffers_alloc)
+		mon_ops->rx_mon_buffers_alloc(pdev);
 
 	dp_tx_ppdu_stats_attach(pdev);
 	mon_pdev->is_dp_mon_pdev_initialized = true;
 
 	return QDF_STATUS_SUCCESS;
-fail2:
-	if (mon_ops->rx_mon_desc_pool_deinit)
-		mon_ops->rx_mon_desc_pool_deinit(pdev);
-
-	if (mon_ops->mon_rings_deinit)
-		mon_ops->mon_rings_deinit(pdev);
 fail1:
 	dp_htt_ppdu_stats_detach(pdev);
 fail0:

+ 1 - 0
dp/wifi3.0/monitor/dp_mon_filter.c

@@ -291,6 +291,7 @@ dp_mon_ht2_rx_ring_cfg(struct dp_soc *soc,
 				soc->rxdma_mon_dst_ring[lmac_id].hal_srng;
 			hal_ring_type = RXDMA_MONITOR_DST;
 			ring_buf_size = RX_DATA_BUFFER_SIZE;
+			break;
 		default:
 			return QDF_STATUS_E_FAILURE;
 		}

+ 3 - 0
hal/wifi3.0/be/hal_be_api_mon.h

@@ -18,6 +18,8 @@
 #ifndef _HAL_BE_API_MON_H_
 #define _HAL_BE_API_MON_H_
 
+#ifdef QCA_MONITOR_2_0_SUPPORT
+
 #include <mon_ingress_ring.h>
 #include <mon_destination_ring.h>
 
@@ -146,4 +148,5 @@ void hal_mon_buff_addr_info_set(hal_soc_handle_t hal_soc_hdl,
 	HAL_MON_VADDR_HI_SET(mon_entry, vaddr_hi);
 }
 
+#endif /* QCA_MONITOR_2_0_SUPPORT */
 #endif /* _HAL_BE_API_MON_H_ */

+ 28 - 0
hal/wifi3.0/kiwi/hal_kiwi.c

@@ -38,6 +38,34 @@
 
 #include <hal_be_rx.h>
 
+#define UNIFIED_RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_OFFSET \
+	RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_OFFSET
+#define UNIFIED_RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_MASK \
+	RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_MASK
+#define UNIFIED_RXPCU_PPDU_END_INFO_8_RX_PPDU_DURATION_LSB \
+	RXPCU_PPDU_END_INFO_RX_PPDU_DURATION_LSB
+#define UNIFIED_PHYRX_HT_SIG_0_HT_SIG_INFO_PHYRX_HT_SIG_INFO_DETAILS_OFFSET \
+	PHYRX_HT_SIG_PHYRX_HT_SIG_INFO_DETAILS_MCS_OFFSET
+#define UNIFIED_PHYRX_L_SIG_B_0_L_SIG_B_INFO_PHYRX_L_SIG_B_INFO_DETAILS_OFFSET \
+	PHYRX_L_SIG_B_PHYRX_L_SIG_B_INFO_DETAILS_RATE_OFFSET
+#define UNIFIED_PHYRX_L_SIG_A_0_L_SIG_A_INFO_PHYRX_L_SIG_A_INFO_DETAILS_OFFSET \
+	PHYRX_L_SIG_A_PHYRX_L_SIG_A_INFO_DETAILS_RATE_OFFSET
+#define UNIFIED_PHYRX_VHT_SIG_A_0_VHT_SIG_A_INFO_PHYRX_VHT_SIG_A_INFO_DETAILS_OFFSET \
+	PHYRX_VHT_SIG_A_PHYRX_VHT_SIG_A_INFO_DETAILS_BANDWIDTH_OFFSET
+#define UNIFIED_PHYRX_HE_SIG_A_SU_0_HE_SIG_A_SU_INFO_PHYRX_HE_SIG_A_SU_INFO_DETAILS_OFFSET \
+	PHYRX_HE_SIG_A_SU_PHYRX_HE_SIG_A_SU_INFO_DETAILS_FORMAT_INDICATION_OFFSET
+#define UNIFIED_PHYRX_HE_SIG_A_MU_DL_0_HE_SIG_A_MU_DL_INFO_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_OFFSET \
+	PHYRX_HE_SIG_A_MU_DL_PHYRX_HE_SIG_A_MU_DL_INFO_DETAILS_DL_UL_FLAG_OFFSET
+#define UNIFIED_PHYRX_HE_SIG_B1_MU_0_HE_SIG_B1_MU_INFO_PHYRX_HE_SIG_B1_MU_INFO_DETAILS_OFFSET \
+	PHYRX_HE_SIG_B1_MU_PHYRX_HE_SIG_B1_MU_INFO_DETAILS_RU_ALLOCATION_OFFSET
+#define UNIFIED_PHYRX_HE_SIG_B2_MU_0_HE_SIG_B2_MU_INFO_PHYRX_HE_SIG_B2_MU_INFO_DETAILS_OFFSET \
+	PHYRX_HE_SIG_B2_MU_PHYRX_HE_SIG_B2_MU_INFO_DETAILS_STA_ID_OFFSET
+#define UNIFIED_PHYRX_HE_SIG_B2_OFDMA_0_HE_SIG_B2_OFDMA_INFO_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_OFFSET \
+	PHYRX_HE_SIG_B2_OFDMA_PHYRX_HE_SIG_B2_OFDMA_INFO_DETAILS_STA_ID_OFFSET
+#define UNIFIED_PHYRX_RSSI_LEGACY_3_RECEIVE_RSSI_INFO_PRE_RSSI_INFO_DETAILS_OFFSET \
+	PHYRX_RSSI_LEGACY_PRE_RSSI_INFO_DETAILS_RSSI_PRI20_CHAIN0_OFFSET
+#define UNIFIED_PHYRX_RSSI_LEGACY_19_RECEIVE_RSSI_INFO_PREAMBLE_RSSI_INFO_DETAILS_OFFSET \
+	PHYRX_RSSI_LEGACY_PREAMBLE_RSSI_INFO_DETAILS_RSSI_PRI20_CHAIN0_OFFSET
 #define UNIFIED_RX_MPDU_START_0_RX_MPDU_INFO_RX_MPDU_INFO_DETAILS_OFFSET \
 	RX_MPDU_START_0_RX_MPDU_INFO_DETAILS_RXPT_CLASSIFY_INFO_DETAILS_REO_DESTINATION_INDICATION_OFFSET
 #define UNIFIED_RX_MSDU_LINK_8_RX_MSDU_DETAILS_MSDU_0_OFFSET \