Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 76c10e10 authored by Esben Haabendal's avatar Esben Haabendal Committed by Sasha Levin
Browse files

net: ll_temac: Avoid ndo_start_xmit returning NETDEV_TX_BUSY



[ 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: default avatarEsben Haabendal <esben@geanix.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent aa00b978
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -939,6 +939,11 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
	wmb();
	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;
}