rtlwifi: Reduce IO in RX interrupt to boost throughput
authorPing-Ke Shih <pkshih@realtek.com>
Mon, 13 Nov 2017 09:39:33 +0000 (17:39 +0800)
committerKalle Valo <kvalo@codeaurora.org>
Thu, 7 Dec 2017 13:14:50 +0000 (15:14 +0200)
Check remaining count of RX packets cost a lot of CPU time, so only update
when the counter decreases to zero. In old flow, the counter was updated
once a RX packet is received.

Signed-off-by: Steven Ting <steventing@realtek.com>
Signed-off-by: Ping-Ke Shih <pkshih@realtek.com>
Signed-off-by: Kalle Valo <kvalo@codeaurora.org>
drivers/net/wireless/realtek/rtlwifi/pci.c

index ed6e4a5..b28e6e3 100644 (file)
@@ -747,7 +747,7 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)
        u8 tmp_one;
        bool unicast = false;
        u8 hw_queue = 0;
-       unsigned int rx_remained_cnt;
+       unsigned int rx_remained_cnt = 0;
        struct rtl_stats stats = {
                .signal = 0,
                .rate = 0,
@@ -768,7 +768,8 @@ static void _rtl_pci_rx_interrupt(struct ieee80211_hw *hw)
                struct sk_buff *new_skb;
 
                if (rtlpriv->use_new_trx_flow) {
-                       rx_remained_cnt =
+                       if (rx_remained_cnt == 0)
+                               rx_remained_cnt =
                                rtlpriv->cfg->ops->rx_desc_buff_remained_cnt(hw,
                                                                      hw_queue);
                        if (rx_remained_cnt == 0)