1 From 16ef670789b252b221700adc413497ed2f941d8a Mon Sep 17 00:00:00 2001
2 From: Felix Fietkau <nbd@nbd.name>
3 Date: Thu, 22 Apr 2021 22:20:59 -0700
4 Subject: [PATCH] net: ethernet: mtk_eth_soc: remove unnecessary TX queue stops
6 When running short on descriptors, only stop the queue for the netdev that
7 tx was attempted for. By the time something tries to send on the other
8 netdev, the ring might have some more room already.
10 Signed-off-by: Felix Fietkau <nbd@nbd.name>
11 Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
12 Signed-off-by: David S. Miller <davem@davemloft.net>
14 drivers/net/ethernet/mediatek/mtk_eth_soc.c | 15 ++-------------
15 1 file changed, 2 insertions(+), 13 deletions(-)
17 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
18 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
19 @@ -1152,17 +1152,6 @@ static void mtk_wake_queue(struct mtk_et
23 -static void mtk_stop_queue(struct mtk_eth *eth)
27 - for (i = 0; i < MTK_MAC_COUNT; i++) {
28 - if (!eth->netdev[i])
30 - netif_stop_queue(eth->netdev[i]);
34 static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
36 struct mtk_mac *mac = netdev_priv(dev);
37 @@ -1183,7 +1172,7 @@ static netdev_tx_t mtk_start_xmit(struct
39 tx_num = mtk_cal_txd_req(skb);
40 if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
41 - mtk_stop_queue(eth);
42 + netif_stop_queue(dev);
43 netif_err(eth, tx_queued, dev,
44 "Tx Ring full when queue awake!\n");
45 spin_unlock(ð->page_lock);
46 @@ -1209,7 +1198,7 @@ static netdev_tx_t mtk_start_xmit(struct
49 if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
50 - mtk_stop_queue(eth);
51 + netif_stop_queue(dev);
53 spin_unlock(ð->page_lock);