瀏覽代碼

qcacmn: Add support for Punctured Preamble PPDU count in tx stats

Add support to update the count of number of Punctured Preamble
PPDU's transmitted by the AP.

Change-Id: Id85a490e9e80566e639f48190a96d3107c6e5c61
CRs-fixed: 2755288
Rhythm Patwa 4 年之前
父節點
當前提交
3a1d8d64f7
共有 5 個文件被更改,包括 12 次插入1 次删除
  1. 3 1
      dp/inc/cdp_txrx_cmn_struct.h
  2. 2 0
      dp/inc/cdp_txrx_stats_struct.h
  3. 3 0
      dp/wifi3.0/dp_htt.c
  4. 2 0
      dp/wifi3.0/dp_internal.h
  5. 2 0
      dp/wifi3.0/dp_stats.c

+ 3 - 1
dp/inc/cdp_txrx_cmn_struct.h

@@ -1609,6 +1609,7 @@ struct cdp_delayed_tx_completion_ppdu_user {
  * @delayed_ba: delayed ba bit
  * @ack_ba_tlv: ack ba recv tlv bit
  * @ppdu_type: SU/MU_MIMO/MU_OFDMA/MU_MIMO_OFDMA/UL_TRIG/BURST_BCN/UL_BSR_RESP/
+ * @pream_punct: Preamble Punctured PPDU
  * UL_BSR_TRIG/UNKNOWN
  * @ba_seq_no: Block Ack sequence number
  * @ba_bitmap: Block Ack bitmap
@@ -1658,7 +1659,8 @@ struct cdp_tx_completion_ppdu_user {
 		 short_retries:4,
 		 tx_ratecode:16,
 		 is_ampdu:1,
-		 ppdu_type:5;
+		 ppdu_type:5,
+		 pream_punct:1;
 	uint32_t success_bytes;
 	uint32_t retry_bytes;
 	uint32_t failed_bytes;

+ 2 - 0
dp/inc/cdp_txrx_stats_struct.h

@@ -877,6 +877,7 @@ struct protocol_trace_count {
  * @tx_byte_rate: Bytes Trasmitted in last one sec
  * @tx_data_rate: Data Transmitted in last one sec
  * @sgi_count[MAX_GI]: SGI count
+ * @pream_punct_cnt: Preamble Punctured count
  * @nss[SS_COUNT]: Packet count for different num_spatial_stream values
  * @bw[MAX_BW]: Packet Count for different bandwidths
  * @wme_ac_type[WME_AC_MAX]: Wireless Multimedia type Count
@@ -960,6 +961,7 @@ struct cdp_tx_stats {
 	uint32_t tx_data_ucast_rate;
 	struct cdp_pkt_type pkt_type[DOT11_MAX];
 	uint32_t sgi_count[MAX_GI];
+	uint32_t pream_punct_cnt;
 
 	uint32_t nss[SS_COUNT];
 

+ 3 - 0
dp/wifi3.0/dp_htt.c

@@ -452,6 +452,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 			((mcs < (MAX_MCS - 1)) && (preamble == DOT11_AX)));
 	DP_STATS_INCC(peer, tx.ampdu_cnt, num_msdu, ppdu->is_ampdu);
 	DP_STATS_INCC(peer, tx.non_ampdu_cnt, num_msdu, !(ppdu->is_ampdu));
+	DP_STATS_INCC(peer, tx.pream_punct_cnt, 1, ppdu->pream_punct);
 
 	dp_peer_stats_notify(pdev, peer);
 
@@ -2708,6 +2709,8 @@ static void dp_process_ppdu_stats_user_cmpltn_common_tlv(
 		HTT_PPDU_STATS_USER_CMPLTN_COMMON_TLV_RTS_SUCCESS_GET(*tag_buf);
 	ppdu_desc->rts_failure =
 		HTT_PPDU_STATS_USER_CMPLTN_COMMON_TLV_RTS_FAILURE_GET(*tag_buf);
+	ppdu_user_desc->pream_punct =
+		HTT_PPDU_STATS_USER_CMPLTN_COMMON_TLV_PREAM_PUNC_TX_GET(*tag_buf);
 
 	ppdu_info->compltn_common_tlv++;
 

+ 2 - 0
dp/wifi3.0/dp_internal.h

@@ -589,6 +589,7 @@ static inline void dp_update_pdev_stats(struct dp_pdev *tgtobj,
 	tgtobj->stats.tx.ofdma += srcobj->tx.ofdma;
 	tgtobj->stats.tx.stbc += srcobj->tx.stbc;
 	tgtobj->stats.tx.ldpc += srcobj->tx.ldpc;
+	tgtobj->stats.tx.pream_punct_cnt += srcobj->tx.pream_punct_cnt;
 	tgtobj->stats.tx.retries += srcobj->tx.retries;
 	tgtobj->stats.tx.non_amsdu_cnt += srcobj->tx.non_amsdu_cnt;
 	tgtobj->stats.tx.amsdu_cnt += srcobj->tx.amsdu_cnt;
@@ -777,6 +778,7 @@ static inline void dp_update_vdev_stats(struct dp_soc *soc,
 	tgtobj->tx.ofdma += srcobj->stats.tx.ofdma;
 	tgtobj->tx.stbc += srcobj->stats.tx.stbc;
 	tgtobj->tx.ldpc += srcobj->stats.tx.ldpc;
+	tgtobj->tx.pream_punct_cnt += srcobj->stats.tx.pream_punct_cnt;
 	tgtobj->tx.retries += srcobj->stats.tx.retries;
 	tgtobj->tx.non_amsdu_cnt += srcobj->stats.tx.non_amsdu_cnt;
 	tgtobj->tx.amsdu_cnt += srcobj->stats.tx.amsdu_cnt;

+ 2 - 0
dp/wifi3.0/dp_stats.c

@@ -5340,6 +5340,8 @@ void dp_print_tx_rates(struct dp_vdev *vdev)
 	DP_PRINT_STATS("LDPC = %d", pdev->stats.tx.ldpc);
 	DP_PRINT_STATS("Retries = %d", pdev->stats.tx.retries);
 	DP_PRINT_STATS("Last ack rssi = %d\n", pdev->stats.tx.last_ack_rssi);
+	DP_PRINT_STATS("Number of PPDU's with Punctured Preamble = %d",
+			   pdev->stats.tx.pream_punct_cnt);
 
 	DP_PRINT_STATS("Aggregation:\n");
 	DP_PRINT_STATS("Number of Msdu's Part of Ampdus = %d",