net: ll_temac: Avoid ndo_start_xmit returning NETDEV_TX_BUSY
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>
This commit is contained in:
Родитель
c364df2489
Коммит
f639634119
|
@ -942,6 +942,11 @@ temac_start_xmit(struct sk_buff *skb, struct net_device *ndev)
|
||||||
wmb();
|
wmb();
|
||||||
lp->dma_out(lp, TX_TAILDESC_PTR, tail_p); /* DMA start */
|
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;
|
return NETDEV_TX_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче