lkml.org 
[lkml]   [2021]   [Apr]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH net-next 06/14] net: ethernet: mtk_eth_soc: remove unnecessary TX queue stops
    Date
    From: Felix Fietkau <nbd@nbd.name>

    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 <nbd@nbd.name>
    Signed-off-by: Ilya Lipnitskiy <ilya.lipnitskiy@gmail.com>
    ---
    drivers/net/ethernet/mediatek/mtk_eth_soc.c | 15 ++-------------
    1 file changed, 2 insertions(+), 13 deletions(-)

    diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    index a3958e99a29f..223131645a37 100644
    --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
    @@ -1129,17 +1129,6 @@ static void mtk_wake_queue(struct mtk_eth *eth)
    }
    }

    -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);
    @@ -1160,7 +1149,7 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)

    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(&eth->page_lock);
    @@ -1186,7 +1175,7 @@ static netdev_tx_t mtk_start_xmit(struct sk_buff *skb, struct net_device *dev)
    goto drop;

    if (unlikely(atomic_read(&ring->free_count) <= ring->thresh))
    - mtk_stop_queue(eth);
    + netif_stop_queue(dev);

    spin_unlock(&eth->page_lock);

    --
    2.31.1
    \
     
     \ /
      Last update: 2021-04-22 06:10    [W:5.016 / U:1.132 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site