Browse Source

qcacmn: Update ack rssi only for successful completion status

Currently ack rssi is updated unconditionally. Check completion
status before updating ack rssi

Change-Id: I9dec8a051adc933ceab33c71ccbb784471b2756e
Anish Nataraj 6 years ago
parent
commit
7235d9b33d
2 changed files with 8 additions and 2 deletions
  1. 1 0
      dp/inc/cdp_txrx_cmn_struct.h
  2. 7 2
      dp/wifi3.0/dp_htt.c

+ 1 - 0
dp/inc/cdp_txrx_cmn_struct.h

@@ -987,6 +987,7 @@ struct cdp_tx_completion_ppdu_user {
 	uint32_t tx_ratekbps;
 	/*ack rssi for separate chains*/
 	uint32_t ack_rssi[CDP_RSSI_CHAIN_LEN];
+	bool ack_rssi_valid;
 };
 
 /**

+ 7 - 2
dp/wifi3.0/dp_htt.c

@@ -152,7 +152,7 @@ static void dp_tx_stats_update(struct dp_soc *soc, struct dp_peer *peer,
 	DP_STATS_INC(peer, tx.wme_ac_type[TID_TO_WME_AC(ppdu->tid)], num_msdu);
 	DP_STATS_INCC(peer, tx.stbc, num_msdu, ppdu->stbc);
 	DP_STATS_INCC(peer, tx.ldpc, num_msdu, ppdu->ldpc);
-	if (!(ppdu->is_mcast))
+	if (!(ppdu->is_mcast) && ppdu->ack_rssi_valid)
 		DP_STATS_UPD(peer, tx.last_ack_rssi, ack_rssi);
 
 	DP_STATS_INC(peer, tx.retries,
@@ -1986,7 +1986,12 @@ static void dp_process_ppdu_stats_user_cmpltn_common_tlv(
 
 
 	tag_buf++;
-	ppdu_desc->ack_rssi = dp_stats_buf->ack_rssi;
+	if (qdf_likely(ppdu_user_desc->completion_status)) {
+		ppdu_desc->ack_rssi = dp_stats_buf->ack_rssi;
+		ppdu_user_desc->ack_rssi_valid = 1;
+	} else {
+		ppdu_user_desc->ack_rssi_valid = 0;
+	}
 
 	tag_buf++;