Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1413941

[PATCH 11/12] net: mediatek: only wake the queue if it is stopped

From John Crispin <john@phrozen.org>
Newsgroups linux.kernel
Subject [PATCH 11/12] net: mediatek: only wake the queue if it is stopped
Date 2016-06-05 09:10 +0200
Message-ID <rGAm6-3Hp-7@gated-at.bofh.it> (permalink)
References <rGzT3-3iX-3@gated-at.bofh.it>
Organization linux.* mail to news gateway

Show all headers | View raw


The current code unconditionally wakes up the queue at the end of each
tx_poll action. Change the code to only wake up the queues if any of
them have actually been stopped before.

Signed-off-by: John Crispin <john@phrozen.org>
---
 drivers/net/ethernet/mediatek/mtk_eth_soc.c |   17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
index 6daf48b..40d3cfd 100644
--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
@@ -685,6 +685,20 @@ static inline int mtk_cal_txd_req(struct sk_buff *skb)
 	return nfrags;
 }
 
+static int mtk_queue_stopped(struct mtk_eth *eth)
+{
+	int i;
+
+	for (i = 0; i < MTK_MAC_COUNT; i++) {
+		if (!eth->netdev[i])
+			continue;
+		if (netif_queue_stopped(eth->netdev[i]))
+			return 1;
+	}
+
+	return 0;
+}
+
 static void mtk_wake_queue(struct mtk_eth *eth)
 {
 	int i;
@@ -929,7 +943,8 @@ static int mtk_poll_tx(struct mtk_eth *eth, int budget, bool *tx_again)
 	if (!total)
 		return 0;
 
-	if (atomic_read(&ring->free_count) > ring->thresh)
+	if (mtk_queue_stopped(eth) &&
+	    (atomic_read(&ring->free_count) > ring->thresh))
 		mtk_wake_queue(eth);
 
 	return total;
-- 
1.7.10.4

Back to linux.kernel | Previous | NextPrevious in thread | Find similar | Unroll thread


Thread

[PATCH 00/12] net: mediatek: various small fixes John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 09/12] net: mediatek: increase watchdog_timeo John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
    Re: [PATCH 09/12] net: mediatek: increase watchdog_timeo Andrew Lunn <andrew@lunn.ch> - 2016-06-05 17:00 +0200
      Re: [PATCH 09/12] net: mediatek: increase watchdog_timeo John Crispin <john@phrozen.org> - 2016-06-06 08:30 +0200
        Re: [PATCH 09/12] net: mediatek: increase watchdog_timeo Andrew Lunn <andrew@lunn.ch> - 2016-06-06 14:30 +0200
          Re: [PATCH 09/12] net: mediatek: increase watchdog_timeo John Crispin <john@phrozen.org> - 2016-06-06 14:40 +0200
  [PATCH 01/12] net: mediatek: fix DQL support John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
    Re: [PATCH 01/12] net: mediatek: fix DQL support David Miller <davem@davemloft.net> - 2016-06-05 09:40 +0200
      Re: [PATCH 01/12] net: mediatek: fix DQL support John Crispin <john@phrozen.org> - 2016-06-06 08:50 +0200
        Re: [PATCH 01/12] net: mediatek: fix DQL support David Miller <davem@davemloft.net> - 2016-06-08 01:10 +0200
          Re: [PATCH 01/12] net: mediatek: fix DQL support Tom Herbert <tom@herbertland.com> - 2016-06-08 01:30 +0200
  [PATCH 07/12] net: mediatek: disable all interrupts during probe John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 04/12] net: mediatek: invalid buffer lookup in mtk_tx_map() John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 05/12] net: mediatek: dropped rx packets are not being counted properly John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 06/12] net: mediatek: add next data pointer coherency protection John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 08/12] net: mediatek: fix threshold value John Crispin <john@phrozen.org> - 2016-06-05 08:40 +0200
  [PATCH 12/12] net: mediatek: remove superfluous queue wake up call John Crispin <john@phrozen.org> - 2016-06-05 09:10 +0200
  [PATCH 10/12] net: mediatek: fix off by one in the TX ring allocation John Crispin <john@phrozen.org> - 2016-06-05 09:10 +0200
  [PATCH 11/12] net: mediatek: only wake the queue if it is stopped John Crispin <john@phrozen.org> - 2016-06-05 09:10 +0200

csiph-web