Selaa lähdekoodia

qcacmn: Correct computation of tx.tx_rate and tx.last_tx_rate

Correct computation of tx.tx_rate and tx.last_tx_rate in Tx HTT
PPDU completion path.

Change-Id: I8dcc4913c651a2c90e0f1d153e4e09f02d7403d4
CRs-Fixed: 3167357
Harsh Kumar Bijlani 3 vuotta sitten
vanhempi
sitoutus
c41c8f1d8c
2 muutettua tiedostoa jossa 8 lisäystä ja 5 poistoa
  1. 1 1
      dp/wifi3.0/dp_types.h
  2. 7 4
      dp/wifi3.0/monitor/dp_mon.c

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

@@ -3487,7 +3487,7 @@ struct dp_peer_per_pkt_tx_stats {
  * @tx_ppdus: ppdus in tx
  * @tx_mpdus_success: mpdus successful in tx
  * @tx_mpdus_tried: mpdus tried in tx
- * @tx_rate: Tx Rate
+ * @tx_rate: Tx Rate in kbps
  * @last_tx_rate: Last tx rate for unicast packets
  * @last_tx_rate_mcs: Tx rate mcs for unicast packets
  * @mcast_last_tx_rate: Last tx rate for multicast packets

+ 7 - 4
dp/wifi3.0/monitor/dp_mon.c

@@ -2432,8 +2432,6 @@ dp_tx_rate_stats_update(struct dp_peer *peer,
 				   &rix,
 				   &ratecode);
 
-	DP_STATS_UPD(mon_peer, tx.last_tx_rate, ratekbps);
-
 	if (!ratekbps)
 		return;
 
@@ -2448,6 +2446,7 @@ dp_tx_rate_stats_update(struct dp_peer *peer,
 	ppdu->rix = rix;
 	ppdu->tx_ratekbps = ratekbps;
 	ppdu->tx_ratecode = ratecode;
+	DP_STATS_UPD(mon_peer, tx.tx_rate, ratekbps);
 	mon_peer->stats.tx.avg_tx_rate =
 		dp_ath_rate_lpf(mon_peer->stats.tx.avg_tx_rate, ratekbps);
 	ppdu_tx_rate = dp_ath_rate_out(mon_peer->stats.tx.avg_tx_rate);
@@ -2628,6 +2627,7 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	struct dp_mon_ops *mon_ops;
 	enum cdp_ru_index ru_index;
 	struct dp_mon_peer *mon_peer = NULL;
+	uint32_t ratekbps = 0;
 
 	preamble = ppdu->preamble;
 	mcs = ppdu->mcs;
@@ -2701,7 +2701,6 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	DP_STATS_INC(mon_peer, tx.transmit_type[ppdu->ppdu_type].mpdu_tried,
 		     mpdu_tried);
 
-	DP_STATS_UPD(mon_peer, tx.tx_rate, ppdu->tx_rate);
 	DP_STATS_INC(mon_peer, tx.sgi_count[ppdu->gi], num_msdu);
 	DP_STATS_INC(mon_peer, tx.bw[ppdu->bw], num_msdu);
 	DP_STATS_INC(mon_peer, tx.nss[ppdu->nss], num_msdu);
@@ -2754,8 +2753,13 @@ dp_tx_stats_update(struct dp_pdev *pdev, struct dp_peer *peer,
 	if (mon_ops && mon_ops->mon_tx_stats_update)
 		mon_ops->mon_tx_stats_update(mon_peer, ppdu);
 
+	dp_tx_rate_stats_update(peer, ppdu);
+
 	dp_peer_stats_notify(pdev, peer);
 
+	ratekbps = mon_peer->stats.tx.tx_rate;
+	DP_STATS_UPD(mon_peer, tx.last_tx_rate, ratekbps);
+
 	dp_send_stats_event(pdev, peer, ppdu->peer_id);
 }
 
@@ -4056,7 +4060,6 @@ dp_ppdu_desc_user_stats_update(struct dp_pdev *pdev,
 			dp_tx_stats_update(pdev, peer,
 					   &ppdu_desc->user[i],
 					   ppdu_desc->ack_rssi);
-			dp_tx_rate_stats_update(peer, &ppdu_desc->user[i]);
 		}
 
 		dp_ppdu_desc_user_phy_tx_time_update(pdev, ppdu_desc,