ath10k: minimize coherent dma accesses
authorMichal Kazior <michal.kazior@tieto.com>
Thu, 27 Feb 2014 16:50:05 +0000 (18:50 +0200)
committerKalle Valo <kvalo@qca.qualcomm.com>
Fri, 28 Feb 2014 10:00:41 +0000 (12:00 +0200)
It doesn't make much sense to calculate the ring
size fill count because it already is memoized in
a separate variable.

Signed-off-by: Michal Kazior <michal.kazior@tieto.com>
Signed-off-by: Kalle Valo <kvalo@qca.qualcomm.com>
drivers/net/wireless/ath/ath10k/htt_rx.c

index 8e708df..36a3871 100644 (file)
@@ -225,12 +225,6 @@ static void ath10k_htt_rx_ring_refill_retry(unsigned long arg)
        ath10k_htt_rx_msdu_buff_replenish(htt);
 }
 
-static unsigned ath10k_htt_rx_ring_elems(struct ath10k_htt *htt)
-{
-       return (__le32_to_cpu(*htt->rx_ring.alloc_idx.vaddr) -
-               htt->rx_ring.sw_rd_idx.msdu_payld) & htt->rx_ring.size_mask;
-}
-
 void ath10k_htt_rx_detach(struct ath10k_htt *htt)
 {
        int sw_rd_idx = htt->rx_ring.sw_rd_idx.msdu_payld;
@@ -276,8 +270,10 @@ static inline struct sk_buff *ath10k_htt_rx_netbuf_pop(struct ath10k_htt *htt)
 
        lockdep_assert_held(&htt->rx_ring.lock);
 
-       if (ath10k_htt_rx_ring_elems(htt) == 0)
-               ath10k_warn("htt rx ring is empty!\n");
+       if (htt->rx_ring.fill_cnt == 0) {
+               ath10k_warn("tried to pop sk_buff from an empty rx ring\n");
+               return NULL;
+       }
 
        idx = htt->rx_ring.sw_rd_idx.msdu_payld;
        msdu = htt->rx_ring.netbufs_ring[idx];
@@ -312,9 +308,6 @@ static int ath10k_htt_rx_amsdu_pop(struct ath10k_htt *htt,
 
        lockdep_assert_held(&htt->rx_ring.lock);
 
-       if (ath10k_htt_rx_ring_elems(htt) == 0)
-               ath10k_warn("htt rx ring is empty!\n");
-
        if (htt->rx_confused) {
                ath10k_warn("htt is confused. refusing rx\n");
                return 0;