From d12ac6c47a32b720d77181b8c2915be43c5be2d0 Mon Sep 17 00:00:00 2001 From: Pradeep Kumar Chitrapu Date: Wed, 27 Nov 2019 18:30:01 +0200 Subject: [PATCH] ath11k: remove unused tx ring counters remove unused counter to avoid taking locks inorder to optimize cpu load. Using Flamegraph, cpu usage of ath11k_dp_tx() observed to be decreased from 5.58% to 3.74% with iperf traffic running with 80MHz bandwidth ap mode. Signed-off-by: Pradeep Kumar Chitrapu Signed-off-by: Kalle Valo --- drivers/net/wireless/ath/ath11k/dp.h | 1 - drivers/net/wireless/ath/ath11k/dp_tx.c | 7 ------- 2 files changed, 8 deletions(-) diff --git a/drivers/net/wireless/ath/ath11k/dp.h b/drivers/net/wireless/ath/ath11k/dp.h index eb0f3df..db216f0 100644 --- a/drivers/net/wireless/ath/ath11k/dp.h +++ b/drivers/net/wireless/ath/ath11k/dp.h @@ -63,7 +63,6 @@ struct dp_tx_ring { struct dp_srng tcl_data_ring; struct dp_srng tcl_comp_ring; struct idr txbuf_idr; - u32 num_tx_pending; /* Protects txbuf_idr and num_pending */ spinlock_t tx_idr_lock; DECLARE_KFIFO_PTR(tx_status_fifo, struct hal_wbm_release_ring); diff --git a/drivers/net/wireless/ath/ath11k/dp_tx.c b/drivers/net/wireless/ath/ath11k/dp_tx.c index 51a02b8..a8b9557 100644 --- a/drivers/net/wireless/ath/ath11k/dp_tx.c +++ b/drivers/net/wireless/ath/ath11k/dp_tx.c @@ -196,10 +196,6 @@ int ath11k_dp_tx(struct ath11k *ar, struct ath11k_vif *arvif, spin_unlock_bh(&tcl_ring->lock); - spin_lock_bh(&tx_ring->tx_idr_lock); - tx_ring->num_tx_pending++; - spin_unlock_bh(&tx_ring->tx_idr_lock); - atomic_inc(&ar->dp.num_tx_pending); return 0; @@ -236,7 +232,6 @@ static void ath11k_dp_tx_free_txbuf(struct ath11k_base *ab, u8 mac_id, skb_cb = ATH11K_SKB_CB(msdu); idr_remove(&tx_ring->txbuf_idr, msdu_id); - tx_ring->num_tx_pending--; spin_unlock_bh(&tx_ring->tx_idr_lock); dma_unmap_single(ab->dev, skb_cb->paddr, msdu->len, DMA_TO_DEVICE); @@ -272,7 +267,6 @@ ath11k_dp_tx_htt_tx_complete_buf(struct ath11k_base *ab, ar = skb_cb->ar; idr_remove(&tx_ring->txbuf_idr, ts->msdu_id); - tx_ring->num_tx_pending--; spin_unlock_bh(&tx_ring->tx_idr_lock); if (atomic_dec_and_test(&ar->dp.num_tx_pending)) @@ -495,7 +489,6 @@ void ath11k_dp_tx_completion_handler(struct ath11k_base *ab, int ring_id) continue; } idr_remove(&tx_ring->txbuf_idr, msdu_id); - tx_ring->num_tx_pending--; spin_unlock_bh(&tx_ring->tx_idr_lock); ar = ab->pdevs[mac_id].ar; -- 2.7.4