610-v5.13-42-net-ethernet-mtk_eth_soc-remove-unnecessary-TX-queue.patch 1.7 KB

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