ソースを参照

qcacmn: Add support for TX stats in IPA use case

Add support for TX stats in IPA use case

Change-Id: Ie7d2c6d27219c49dc09bcacc65851b0c37fc337e
CRs-Fixed: 3231035
Amrit Sahai 3 年 前
コミット
7cc4edf06c
2 ファイル変更18 行追加0 行削除
  1. 4 0
      dp/wifi3.0/dp_types.h
  2. 14 0
      dp/wifi3.0/monitor/dp_mon.c

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

@@ -3640,6 +3640,8 @@ struct dp_peer_per_pkt_tx_stats {
  *       <enum 2     1_6_us_sgi > HE related GI
  *       <enum 3     3_2_us_sgi > HE
  * @preamble_info: preamble
+ * @tx_ucast_total: total ucast count
+ * @tx_ucast_success: total ucast success count
  * @retries_mpdu: mpdu number of successfully transmitted after retries
  * @mpdu_success_with_retries: mpdu retry count in case of successful tx
  * @su_be_ppdu_cnt: SU Tx packet count for 11BE
@@ -3690,6 +3692,8 @@ struct dp_peer_extd_tx_stats {
 
 	uint32_t retries_mpdu;
 	uint32_t mpdu_success_with_retries;
+	struct cdp_pkt_info tx_ucast_total;
+	struct cdp_pkt_info tx_ucast_success;
 #ifdef WLAN_FEATURE_11BE
 	struct cdp_pkt_type su_be_ppdu_cnt;
 	struct cdp_pkt_type mu_be_ppdu_cnt[TXRX_TYPE_MU_MAX];

+ 14 - 0
dp/wifi3.0/monitor/dp_mon.c

@@ -2685,6 +2685,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	enum cdp_ru_index ru_index;
 	struct dp_mon_peer *mon_peer = NULL;
 	uint32_t ratekbps = 0;
+	uint64_t tx_byte_count;
 
 	preamble = ppdu->preamble;
 	mcs = ppdu->mcs;
@@ -2692,6 +2693,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	num_mpdu = ppdu->mpdu_success;
 	mpdu_tried = ppdu->mpdu_tried_ucast + ppdu->mpdu_tried_mcast;
 	mpdu_failed = mpdu_tried - num_mpdu;
+	tx_byte_count = ppdu->success_bytes;
 
 	/* If the peer statistics are already processed as part of
 	 * per-MSDU completion handler, do not process these again in per-PPDU
@@ -2704,6 +2706,12 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	if (!mon_peer)
 		return;
 
+	if (!ppdu->is_mcast) {
+		DP_STATS_INC(mon_peer, tx.tx_ucast_total.num, num_msdu);
+		DP_STATS_INC(mon_peer, tx.tx_ucast_total.bytes,
+			     tx_byte_count);
+	}
+
 	if (ppdu->completion_status != HTT_PPDU_STATS_USER_STATUS_OK) {
 		/*
 		 * All failed mpdu will be retried, so incrementing
@@ -2770,6 +2778,12 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	if (!(ppdu->is_mcast) && ppdu->ack_rssi_valid)
 		DP_STATS_UPD(mon_peer, tx.last_ack_rssi, ack_rssi);
 
+	if (!ppdu->is_mcast) {
+		DP_STATS_INC(mon_peer, tx.tx_ucast_success.num, num_msdu);
+		DP_STATS_INC(mon_peer, tx.tx_ucast_success.bytes,
+			     tx_byte_count);
+	}
+
 	DP_STATS_INCC(mon_peer,
 		      tx.pkt_type[preamble].mcs_count[MAX_MCS - 1], num_msdu,
 		      ((mcs >= MAX_MCS_11A) && (preamble == DOT11_A)));