lkml.org 
[lkml]   [2021]   [Jun]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.9 68/71] net: ll_temac: Avoid ndo_start_xmit returning NETDEV_TX_BUSY
    Date
    From: Esben Haabendal <esben@geanix.com>

    [ Upstream commit f6396341194234e9b01cd7538bc2c6ac4501ab14 ]

    As documented in Documentation/networking/driver.rst, the ndo_start_xmit
    method must not return NETDEV_TX_BUSY under any normal circumstances, and
    as recommended, we simply stop the tx queue in advance, when there is a
    risk that the next xmit would cause a NETDEV_TX_BUSY return.

    Signed-off-by: Esben Haabendal <esben@geanix.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/net/ethernet/xilinx/ll_temac_main.c | 5 +++++
    1 file changed, 5 insertions(+)

    diff --git a/drivers/net/ethernet/xilinx/ll_temac_main.c b/drivers/net/ethernet/xilinx/ll_temac_main.c
    index 545f60877bb7..9ba36c930ce3 100644
    --- a/drivers/net/ethernet/xilinx/ll_temac_main.c
    +++ b/drivers/net/ethernet/xilinx/ll_temac_main.c
    @@ -735,6 +735,11 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
    /* Kick off the transfer */
    lp->dma_out(lp, TX_TAILDESC_PTR, tail_p); /* DMA start */

    + if (temac_check_tx_bd_space(lp, MAX_SKB_FRAGS + 1)) {
    + netdev_info(ndev, "%s -> netif_stop_queue\n", __func__);
    + netif_stop_queue(ndev);
    + }
    +
    return NETDEV_TX_OK;
    }

    --
    2.30.2
    \
     
     \ /
      Last update: 2021-06-28 17:24    [W:11.983 / U:0.016 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site