| 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
 
- @@ -1163,17 +1163,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);
 
- @@ -1194,7 +1183,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);
 
- @@ -1220,7 +1209,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);
 
-  
 
 
  |