Эх сурвалжийг харах

qcacmn: Remove tx_desc pool lock in dp_tx_notify_completion

dp_peer hold the peer ref_cnt outside of dp_tx_notify_completion()
already, so dp_vdev can not be freed during that period if dp_peer
exist, it's not necessary that hold dp tx_desc pool lock in
dp_tx_notify_completion() which will introduce lock contention with
TX/TX Comp path.

Remove tx_desc pool lock to optimize it.

Change-Id: I5fdb9143bbc0800db74f8595f77c5a2c96d8e7d6
CRs-Fixed: 3170805
Jinwei Chen 3 жил өмнө
parent
commit
4b88dddd72

+ 0 - 4
dp/wifi3.0/dp_tx.c

@@ -4239,17 +4239,13 @@ static inline void dp_tx_notify_completion(struct dp_soc *soc,
 
 
 	qdf_assert(tx_desc);
 	qdf_assert(tx_desc);
 
 
-	dp_tx_flow_pool_lock(soc, tx_desc);
-
 	if (!vdev ||
 	if (!vdev ||
 	    !vdev->osif_vdev) {
 	    !vdev->osif_vdev) {
-		dp_tx_flow_pool_unlock(soc, tx_desc);
 		return;
 		return;
 	}
 	}
 
 
 	osif_dev = vdev->osif_vdev;
 	osif_dev = vdev->osif_vdev;
 	tx_compl_cbk = vdev->tx_comp;
 	tx_compl_cbk = vdev->tx_comp;
-	dp_tx_flow_pool_unlock(soc, tx_desc);
 
 
 	if (status == HAL_TX_TQM_RR_FRAME_ACKED)
 	if (status == HAL_TX_TQM_RR_FRAME_ACKED)
 		flag |= BIT(QDF_TX_RX_STATUS_OK);
 		flag |= BIT(QDF_TX_RX_STATUS_OK);