瀏覽代碼

qcacmn: print tx/rx stats for 11BE

Add and initialize function pointer to print BE/LI stats

CRs-Fixed: 3071271
Change-Id: Ib9748d475ac583b7404fcc5f1207b8019c7671a6
aloksing 3 年之前
父節點
當前提交
9a4ae1a05a
共有 5 個文件被更改,包括 275 次插入16 次删除
  1. 10 0
      dp/inc/cdp_txrx_stats_struct.h
  2. 1 1
      dp/wifi3.0/be/dp_be.c
  3. 257 15
      dp/wifi3.0/dp_stats.c
  4. 6 0
      dp/wifi3.0/dp_types.h
  5. 1 0
      dp/wifi3.0/li/dp_li.c

+ 10 - 0
dp/inc/cdp_txrx_stats_struct.h

@@ -540,6 +540,16 @@ enum cdp_mu_packet_type {
 	TXRX_TYPE_MU_MAX = 2,
 };
 
+/*
+ * peer_stats_type: peer stats type
+ * PEER_TX_STATS: stats type for tx
+ * PEER_RX_STATS: stats type for rx
+ */
+enum peer_stats_type {
+	PEER_TX_STATS,
+	PEER_RX_STATS,
+};
+
 enum WDI_EVENT {
 	WDI_EVENT_TX_STATUS = WDI_EVENT_BASE,
 	WDI_EVENT_OFFLOAD_ALL,

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

@@ -1429,6 +1429,6 @@ void dp_initialize_arch_ops_be(struct dp_arch_ops *arch_ops)
 	arch_ops->mlo_peer_find_hash_remove = dp_mlo_peer_find_hash_remove_be;
 	arch_ops->mlo_peer_find_hash_find = dp_mlo_peer_find_hash_find_be;
 #endif
-
+	arch_ops->txrx_print_peer_stats = dp_print_peer_txrx_stats_be;
 	dp_init_near_full_arch_ops_be(arch_ops);
 }

+ 257 - 15
dp/wifi3.0/dp_stats.c

@@ -80,6 +80,7 @@
 	__QDF_TRACE_FL(QDF_TRACE_LEVEL_INFO_HIGH, QDF_MODULE_ID_DP_STATS, ## params)
 #define dp_stats_debug(params...) QDF_TRACE_DEBUG(QDF_MODULE_ID_DP_STATS, params)
 
+#ifdef WLAN_FEATURE_11BE
 static const struct cdp_rate_debug dp_ppdu_rate_string[DOT11_MAX][MAX_MCS] = {
 	{
 		{"HE MCS 0 (BPSK 1/2)     ", MCS_VALID},
@@ -97,9 +98,52 @@ static const struct cdp_rate_debug dp_ppdu_rate_string[DOT11_MAX][MAX_MCS] = {
 		{"HE MCS 12 (4096-QAM 3/4)", MCS_VALID},
 		{"HE MCS 13 (4096-QAM 5/6)", MCS_VALID},
 		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	},
+	{
+		{"EHT MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"EHT MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"EHT MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"EHT MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"EHT MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"EHT MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"EHT MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"EHT MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"EHT MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"EHT MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"EHT MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"EHT MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"EHT MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"EHT MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"EHT MCS 14 (BPSK-DCM 1/2)", MCS_VALID},
+		{"EHT MCS 15 (BPSK-DCM 1/2)", MCS_VALID},
+		{"INVALID ", MCS_INVALID},
 	}
 };
+#else
+static const struct cdp_rate_debug dp_ppdu_rate_string[DOT11_MAX][MAX_MCS] = {
+	{
+		{"HE MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"HE MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"HE MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"HE MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"HE MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"HE MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"HE MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"HE MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"HE MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"HE MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"HE MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"HE MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"HE MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"HE MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	}
+};
+#endif
 
+#ifdef WLAN_FEATURE_11BE
 static const struct cdp_rate_debug
 dp_mu_rate_string[TXRX_TYPE_MU_MAX][MAX_MCS] = {
 	{
@@ -118,6 +162,8 @@ dp_mu_rate_string[TXRX_TYPE_MU_MAX][MAX_MCS] = {
 		{"HE MU-MIMO MCS 12 (4096-QAM 3/4)", MCS_VALID},
 		{"HE MU-MIMO MCS 13 (4096-QAM 5/6)", MCS_VALID},
 		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
 	},
 	{
 		{"HE OFDMA MCS 0 (BPSK 1/2)     ", MCS_VALID},
@@ -135,8 +181,91 @@ dp_mu_rate_string[TXRX_TYPE_MU_MAX][MAX_MCS] = {
 		{"HE OFDMA MCS 12 (4096-QAM 3/4)", MCS_VALID},
 		{"HE OFDMA MCS 13 (4096-QAM 5/6)", MCS_VALID},
 		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	}
+};
+
+static const struct cdp_rate_debug
+dp_mu_be_rate_string[TXRX_TYPE_MU_MAX][MAX_MCS] = {
+	{
+		{"EHT MU-MIMO MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"EHT MU-MIMO MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"EHT MU-MIMO MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"EHT MU-MIMO MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"EHT MU-MIMO MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"EHT MU-MIMO MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"EHT MU-MIMO MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"EHT MU-MIMO MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"EHT MU-MIMO MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"EHT MU-MIMO MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"EHT MU-MIMO MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"EHT MU-MIMO MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"EHT MU-MIMO MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"EHT MU-MIMO MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"EHT MU-MINO MCS 14 (BPSK-DCM 1/2)", MCS_VALID},
+		{"EHT MU-MIMO MCS 15 (BPSK-DCM 1/2)", MCS_VALID},
+		{"INVALID ", MCS_VALID},
 	},
+	{
+		{"EHT OFDMA MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"EHT OFDMA MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"EHT OFDMA MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"EHT OFDMA MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"EHT OFDMA MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"EHT OFDMA MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"EHT OFDMA MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"EHT OFDMA MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"EHT OFDMA MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"EHT OFDMA MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"EHT OFDMA MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"EHT OFDMA MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"EHT OFDMA MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"EHT OFDMA MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"EHT OFDMA MCS 14 (BPSK-DCM 1/2)", MCS_VALID},
+		{"EHT OFDMA MCS 15 (BPSK-DCM 1/2)", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	}
+};
+#else
+static const struct cdp_rate_debug
+dp_mu_rate_string[TXRX_TYPE_MU_MAX][MAX_MCS] = {
+	{
+		{"HE MU-MIMO MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"HE MU-MIMO MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"HE MU-MIMO MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"HE MU-MIMO MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"HE MU-MIMO MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"HE MU-MIMO MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"HE MU-MIMO MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"HE MU-MIMO MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"HE MU-MIMO MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"HE MU-MIMO MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"HE MU-MIMO MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"HE MU-MIMO MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"HE MU-MIMO MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"HE MU-MIMO MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	},
+	{
+		{"HE OFDMA MCS 0 (BPSK 1/2)     ", MCS_VALID},
+		{"HE OFDMA MCS 1 (QPSK 1/2)     ", MCS_VALID},
+		{"HE OFDMA MCS 2 (QPSK 3/4)     ", MCS_VALID},
+		{"HE OFDMA MCS 3 (16-QAM 1/2)   ", MCS_VALID},
+		{"HE OFDMA MCS 4 (16-QAM 3/4)   ", MCS_VALID},
+		{"HE OFDMA MCS 5 (64-QAM 2/3)   ", MCS_VALID},
+		{"HE OFDMA MCS 6 (64-QAM 3/4)   ", MCS_VALID},
+		{"HE OFDMA MCS 7 (64-QAM 5/6)   ", MCS_VALID},
+		{"HE OFDMA MCS 8 (256-QAM 3/4)  ", MCS_VALID},
+		{"HE OFDMA MCS 9 (256-QAM 5/6)  ", MCS_VALID},
+		{"HE OFDMA MCS 10 (1024-QAM 3/4)", MCS_VALID},
+		{"HE OFDMA MCS 11 (1024-QAM 5/6)", MCS_VALID},
+		{"HE OFDMA MCS 12 (4096-QAM 3/4)", MCS_VALID},
+		{"HE OFDMA MCS 13 (4096-QAM 5/6)", MCS_VALID},
+		{"INVALID ", MCS_VALID},
+	}
 };
+#endif
 
 const char *mu_reception_mode[TXRX_TYPE_MU_MAX] = {
 	"MU MIMO", "MU OFDMA"
@@ -5283,13 +5412,44 @@ dp_print_common_rates_info(struct cdp_pkt_type *pkt_type_array)
 }
 
 /**
- * dp_print_common_ppdu_rates_info(): Print common rate for tx or rx
+ * dp_print_common_ppdu_rates_info(): Print ppdu rate for tx or rx
  * @pkt_type_array: rate type array contains rate info
+ * @pkt_type: packet type
  *
  * Return:void
  */
+#ifdef WLAN_FEATURE_11BE
 static inline void
-dp_print_common_ppdu_rates_info(struct cdp_pkt_type *pkt_type_array)
+dp_print_common_ppdu_rates_info(struct cdp_pkt_type *pkt_type_array,
+				enum cdp_packet_type pkt_type)
+{
+	uint8_t mcs;
+
+	DP_PRINT_STATS("PPDU Count");
+	for (mcs = 0; mcs < MAX_MCS; mcs++) {
+		if (pkt_type == DOT11_AX) {
+			if (!dp_ppdu_rate_string[0][mcs].valid)
+				continue;
+
+			DP_PRINT_STATS("	%s = %d",
+				       dp_ppdu_rate_string[0][mcs].mcs_type,
+				       pkt_type_array->mcs_count[mcs]);
+		} else if (pkt_type == DOT11_BE) {
+			if (!dp_ppdu_rate_string[1][mcs].valid)
+				continue;
+
+			DP_PRINT_STATS("	%s = %d",
+				       dp_ppdu_rate_string[1][mcs].mcs_type,
+				       pkt_type_array->mcs_count[mcs]);
+		}
+	}
+
+	DP_PRINT_STATS("\n");
+}
+#else
+static inline void
+dp_print_common_ppdu_rates_info(struct cdp_pkt_type *pkt_type_array,
+				enum cdp_packet_type pkt_type)
 {
 	uint8_t mcs;
 
@@ -5305,13 +5465,36 @@ dp_print_common_ppdu_rates_info(struct cdp_pkt_type *pkt_type_array)
 
 	DP_PRINT_STATS("\n");
 }
+#endif
 
 /**
- * dp_print_mu_ppdu_rates_info(): Print mu rate for tx or rx
- * @rx_mu: rx MU stats array
+ * dp_print_mu_be_ppdu_rates_info(): Print mu be rate for tx or rx
+ * @pkt_type_array: rate type array contains rate info
  *
  * Return:void
  */
+#ifdef WLAN_FEATURE_11BE
+static inline void
+dp_print_mu_be_ppdu_rates_info(struct cdp_pkt_type *pkt_type_array)
+{
+	uint8_t mcs, pkt_type;
+
+	DP_PRINT_STATS("PPDU Count");
+	for (pkt_type = 0; pkt_type < TXRX_TYPE_MU_MAX; pkt_type++) {
+		for (mcs = 0; mcs < MAX_MCS; mcs++) {
+			if (!dp_mu_rate_string[pkt_type][mcs].valid)
+				continue;
+
+			DP_PRINT_STATS("	%s = %d",
+				       dp_mu_be_rate_string[pkt_type][mcs].mcs_type,
+				       pkt_type_array->mcs_count[mcs]);
+		}
+
+		DP_PRINT_STATS("\n");
+	}
+}
+#endif
+
 static inline void
 dp_print_mu_ppdu_rates_info(struct cdp_rx_mu *rx_mu)
 {
@@ -5656,6 +5839,69 @@ static inline void dp_peer_print_rx_delay_stats(struct dp_pdev *pdev,
 }
 #endif
 
+#ifdef WLAN_FEATURE_11BE
+void dp_print_peer_txrx_stats_be(struct dp_peer *peer,
+				 enum peer_stats_type stats_type)
+{
+	uint8_t i;
+
+	if (stats_type == PEER_TX_STATS) {
+		DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d 320MHZ %d\n",
+			       peer->stats.tx.bw[0], peer->stats.tx.bw[1],
+			       peer->stats.tx.bw[2], peer->stats.tx.bw[3],
+			       peer->stats.tx.bw[4]);
+		DP_PRINT_STATS("RU Locations RU[26 52 52_26 106 106_26 242 484 484_242 996 996_484 996_484_242 2X996 2X996_484 3X996 3X996_484 4X996]:");
+		for (i = 0; i < RU_INDEX_MAX; i++)
+			DP_PRINT_STATS("%s:  %d", cdp_ru_string[i].ru_type,
+				       peer->stats.tx.ru_loc[i].num_msdu);
+		dp_print_common_ppdu_rates_info(&peer->stats.tx.su_be_ppdu_cnt,
+						DOT11_BE);
+		dp_print_mu_be_ppdu_rates_info(&peer->stats.tx.mu_be_ppdu_cnt[0]);
+
+	} else {
+		DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d 320MHZ %d",
+			       peer->stats.rx.bw[0], peer->stats.rx.bw[1],
+			       peer->stats.rx.bw[2], peer->stats.rx.bw[3],
+			       peer->stats.rx.bw[4]);
+		dp_print_common_ppdu_rates_info(&peer->stats.rx.su_be_ppdu_cnt,
+						DOT11_BE);
+		dp_print_mu_be_ppdu_rates_info(&peer->stats.rx.rx_mu_be[0]);
+	}
+}
+#else
+void dp_print_peer_txrx_stats_be(struct dp_peer *peer,
+				 enum peer_stats_type stats_type)
+{
+}
+#endif
+
+void dp_print_peer_txrx_stats_li(struct dp_peer *peer,
+				 enum peer_stats_type stats_type)
+{
+	if (stats_type == PEER_TX_STATS) {
+		DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d\n",
+			       peer->stats.tx.bw[0], peer->stats.tx.bw[1],
+			       peer->stats.tx.bw[2], peer->stats.tx.bw[3]);
+		DP_PRINT_STATS("RU Locations RU[26 52 106 242 484 996]:");
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_26_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_26_INDEX].num_msdu);
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_52_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_52_INDEX].num_msdu);
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_106_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_106_INDEX].num_msdu);
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_242_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_242_INDEX].num_msdu);
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_484_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_484_INDEX].num_msdu);
+		DP_PRINT_STATS("%s:  %d", cdp_ru_string[RU_996_INDEX].ru_type,
+			       peer->stats.tx.ru_loc[RU_996_INDEX].num_msdu);
+	} else {
+		DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d",
+			       peer->stats.rx.bw[0], peer->stats.rx.bw[1],
+			       peer->stats.rx.bw[2], peer->stats.rx.bw[3]);
+	}
+}
+
 void dp_print_peer_stats(struct dp_peer *peer)
 {
 	uint8_t i;
@@ -5746,9 +5992,6 @@ void dp_print_peer_stats(struct dp_peer *peer)
 		       peer->stats.tx.excess_retries_per_ac[2]);
 	DP_PRINT_STATS("	 Voice = %d",
 		       peer->stats.tx.excess_retries_per_ac[3]);
-	DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d\n",
-		       peer->stats.tx.bw[0], peer->stats.tx.bw[1],
-		       peer->stats.tx.bw[2], peer->stats.tx.bw[3]);
 
 	pnss = &peer->stats.tx.nss[0];
 	dp_print_nss(nss, pnss, SS_COUNT);
@@ -5779,10 +6022,6 @@ void dp_print_peer_stats(struct dp_peer *peer)
 
 	DP_PRINT_STATS("Last Packet RU index [%d], Size [%d]",
 		       peer->stats.tx.ru_start, peer->stats.tx.ru_tones);
-	DP_PRINT_STATS("RU Locations RU[26 52 106 242 484 996]:");
-	for (i = 0; i < RU_INDEX_MAX; i++)
-		DP_PRINT_STATS("%s:  %d", cdp_ru_string[i].ru_type,
-			       peer->stats.tx.ru_loc[i].num_msdu);
 
 	DP_PRINT_STATS("Aggregation:");
 	DP_PRINT_STATS("Number of Msdu's Part of Amsdu = %d",
@@ -5796,6 +6035,9 @@ void dp_print_peer_stats(struct dp_peer *peer)
 	DP_PRINT_STATS("	Data transmitted in last sec: %d",
 		       peer->stats.tx.tx_data_rate);
 
+	if (pdev && pdev->soc->arch_ops.txrx_print_peer_stats)
+		pdev->soc->arch_ops.txrx_print_peer_stats(peer, PEER_TX_STATS);
+
 	dp_print_jitter_stats(peer, pdev);
 	dp_peer_print_tx_delay_stats(pdev, peer);
 
@@ -5855,9 +6097,6 @@ void dp_print_peer_stats(struct dp_peer *peer)
 		       peer->stats.rx.sgi_count[1],
 		       peer->stats.rx.sgi_count[2],
 		       peer->stats.rx.sgi_count[3]);
-	DP_PRINT_STATS("BW Counts = 20MHZ %d 40MHZ %d 80MHZ %d 160MHZ %d",
-		       peer->stats.rx.bw[0], peer->stats.rx.bw[1],
-		       peer->stats.rx.bw[2], peer->stats.rx.bw[3]);
 	DP_PRINT_STATS("MSDU Reception Type");
 	DP_PRINT_STATS("SU %d MU_MIMO %d MU_OFDMA %d MU_OFDMA_MIMO %d",
 		       peer->stats.rx.reception_type[0],
@@ -5872,7 +6111,8 @@ void dp_print_peer_stats(struct dp_peer *peer)
 		       peer->stats.rx.ppdu_cnt[3]);
 
 	dp_print_common_rates_info(peer->stats.rx.pkt_type);
-	dp_print_common_ppdu_rates_info(&peer->stats.rx.su_ax_ppdu_cnt);
+	dp_print_common_ppdu_rates_info(&peer->stats.rx.su_ax_ppdu_cnt,
+					DOT11_AX);
 	dp_print_mu_ppdu_rates_info(&peer->stats.rx.rx_mu[0]);
 
 	pnss = &peer->stats.rx.nss[0];
@@ -5927,6 +6167,8 @@ void dp_print_peer_stats(struct dp_peer *peer)
 		       peer->stats.rx.peer_unauth_rx_pkt_drop);
 	DP_PRINT_STATS("Policy Check Rx Packet Drop = %d",
 		       peer->stats.rx.policy_check_drop);
+	if (pdev && pdev->soc->arch_ops.txrx_print_peer_stats)
+		pdev->soc->arch_ops.txrx_print_peer_stats(peer, PEER_RX_STATS);
 
 	dp_peer_print_rx_delay_stats(pdev, peer);
 }

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

@@ -1724,6 +1724,8 @@ struct dp_arch_ops {
 						   int mac_addr_is_aligned,
 						   enum dp_mod_id mod_id);
 #endif
+	void (*txrx_print_peer_stats)(struct dp_peer *peer,
+				      enum peer_stats_type stats_type);
 };
 
 /**
@@ -3678,6 +3680,10 @@ QDF_STATUS dp_srng_init(struct dp_soc *soc, struct dp_srng *srng,
 			int ring_type, int ring_num, int mac_id);
 void dp_srng_deinit(struct dp_soc *soc, struct dp_srng *srng,
 		    int ring_type, int ring_num);
+void dp_print_peer_txrx_stats_be(struct dp_peer *peer,
+				 enum peer_stats_type stats_type);
+void dp_print_peer_txrx_stats_li(struct dp_peer *peer,
+				 enum peer_stats_type stats_type);
 
 enum timer_yield_status
 dp_should_timer_irq_yield(struct dp_soc *soc, uint32_t work_done,

+ 1 - 0
dp/wifi3.0/li/dp_li.c

@@ -424,5 +424,6 @@ void dp_initialize_arch_ops_li(struct dp_arch_ops *arch_ops)
 	arch_ops->peer_get_reo_hash = dp_peer_get_reo_hash_li;
 	arch_ops->reo_remap_config = dp_reo_remap_config_li;
 	arch_ops->txrx_set_vdev_param = dp_txrx_set_vdev_param_li;
+	arch_ops->txrx_print_peer_stats = dp_print_peer_txrx_stats_li;
 }