ath11k: remove unused tx ring counters
authorPradeep Kumar Chitrapu <pradeepc@codeaurora.org>
Wed, 27 Nov 2019 16:30:01 +0000 (18:30 +0200)
committerKalle Valo <kvalo@codeaurora.org>
Fri, 29 Nov 2019 07:35:48 +0000 (09:35 +0200)
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 <pradeepc@codeaurora.org>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/ath/ath11k/dp.h
drivers/net/wireless/ath/ath11k/dp_tx.c

index eb0f3df..db216f0 100644 (file)
@@ -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);
index 51a02b8..a8b9557 100644 (file)
@@ -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;