diff --git a/dp/inc/cdp_txrx_cmn_struct.h b/dp/inc/cdp_txrx_cmn_struct.h index 583b9dff2c..21b248cfcc 100644 --- a/dp/inc/cdp_txrx_cmn_struct.h +++ b/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; diff --git a/dp/inc/cdp_txrx_stats_struct.h b/dp/inc/cdp_txrx_stats_struct.h index 69ba88279a..cc9e44f643 100644 --- a/dp/inc/cdp_txrx_stats_struct.h +++ b/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]; diff --git a/dp/wifi3.0/dp_htt.c b/dp/wifi3.0/dp_htt.c index 0ea0ccb6dd..3203cf4bec 100644 --- a/dp/wifi3.0/dp_htt.c +++ b/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++; diff --git a/dp/wifi3.0/dp_internal.h b/dp/wifi3.0/dp_internal.h index 38867a86b6..94c3c70c3d 100644 --- a/dp/wifi3.0/dp_internal.h +++ b/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; diff --git a/dp/wifi3.0/dp_stats.c b/dp/wifi3.0/dp_stats.c index 98796d49d7..095cd67a3e 100644 --- a/dp/wifi3.0/dp_stats.c +++ b/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",