| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- From 16ef670789b252b221700adc413497ed2f941d8a Mon Sep 17 00:00:00 2001
- From: Felix Fietkau <[email protected]>
- Date: Thu, 22 Apr 2021 22:20:59 -0700
- Subject: [PATCH] net: ethernet: mtk_eth_soc: remove unnecessary TX queue stops
- When running short on descriptors, only stop the queue for the netdev that
- tx was attempted for. By the time something tries to send on the other
- netdev, the ring might have some more room already.
- Signed-off-by: Felix Fietkau <[email protected]>
- Signed-off-by: Ilya Lipnitskiy <[email protected]>
- Signed-off-by: David S. Miller <[email protected]>
- ---
- drivers/net/ethernet/mediatek/mtk_eth_soc.c | 15 ++-------------
- 1 file changed, 2 insertions(+), 13 deletions(-)
- --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
- @@ -1131,17 +1131,6 @@ static void mtk_wake_queue(struct mtk_et
- }
- }
-
- -static void mtk_stop_queue(struct mtk_eth *eth)
- -{
- - int i;
- -
- - for (i = 0; i < MTK_MAC_COUNT; i++) {
- - if (!eth->netdev[i])
- - continue;
- - netif_stop_queue(eth->netdev[i]);
- - }
- -}
- -
- static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
- {
- struct mtk_mac *mac = netdev_priv(dev);
- @@ -1162,7 +1151,7 @@ static netdev_tx_t mtk_start_xmit(struct
-
- tx_num = mtk_cal_txd_req(skb);
- if (unlikely(atomic_read(&ring->free_count) <= tx_num)) {
- - mtk_stop_queue(eth);
- + netif_stop_queue(dev);
- netif_err(eth, tx_queued, dev,
- "Tx Ring full when queue awake!\n");
- spin_unlock(ð->page_lock);
- @@ -1188,7 +1177,7 @@ static netdev_tx_t mtk_start_xmit(struct
- goto drop;
-
- if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
- - mtk_stop_queue(eth);
- + netif_stop_queue(dev);
-
- spin_unlock(ð->page_lock);
-
|