Pārlūkot izejas kodu

qcacmn: Increase timeout from 30s to 60s for freeing tx desc

Tx completions can be received after 30seconds, this is causing
race condition as there is a forceful freeing of tx descriptors
after 30seconds. This race condition corrupted tx desc pool's
freelist pointer which contains list of all free tx descriptors.
Increasing the threshold from 30seconds to 60seconds. Display
id for which tx descriptor is freed.

Change-Id: I5e0c78283747028de558f9c5db99f7089ffb7e97
CRs-Fixed: 3322566
Ananya Gupta 2 gadi atpakaļ
vecāks
revīzija
b74658cb00
1 mainītis faili ar 3 papildinājumiem un 2 dzēšanām
  1. 3 2
      dp/wifi3.0/dp_main.c

+ 3 - 2
dp/wifi3.0/dp_main.c

@@ -14107,7 +14107,7 @@ void dp_flush_ring_hptp(struct dp_soc *soc, hal_ring_handle_t hal_srng)
 
 #ifdef DP_TX_TRACKING
 
-#define DP_TX_COMP_MAX_LATENCY_MS 30000
+#define DP_TX_COMP_MAX_LATENCY_MS 60000
 /**
  * dp_tx_comp_delay_check() - calculate time latency for tx completion per pkt
  * @tx_desc: tx descriptor
@@ -14195,13 +14195,14 @@ static void dp_find_missing_tx_comp(struct dp_soc *soc)
 						  tx_desc->id);
 					if (tx_desc->vdev_id == DP_INVALID_VDEV_ID) {
 						tx_desc->flags |= DP_TX_DESC_FLAG_FLUSH;
+						dp_err_rl("Freed tx_desc %u",
+							  tx_desc->id);
 						dp_tx_comp_free_buf(soc,
 								    tx_desc,
 								    false);
 						dp_tx_desc_release(tx_desc, i);
 						DP_STATS_INC(soc,
 							     tx.tx_comp_force_freed, 1);
-						dp_err_rl("Tx completion force freed");
 					}
 				}
 			} else {