| From e82b936350ccc3186d2dc70c0ea2a9bc91d13f4f Mon Sep 17 00:00:00 2001 |
| From: Jose Abreu <Jose.Abreu@synopsys.com> |
| Date: Wed, 18 Dec 2019 11:17:43 +0100 |
| Subject: [PATCH] net: stmmac: Always arm TX Timer at end of transmission start |
| |
| commit 4772f26db8d1fb568c4862c538344a1b5fb52081 upstream. |
| |
| If TX Coalesce timer is enabled we should always arm it, otherwise we |
| may hit the case where an interrupt is missed and the TX Queue will |
| timeout. |
| |
| Arming the timer does not necessarly mean it will run the tx_clean() |
| because this function is wrapped around NAPI launcher. |
| |
| Fixes: 9125cdd1be11 ("stmmac: add the initial tx coalesce schema") |
| Signed-off-by: Jose Abreu <Jose.Abreu@synopsys.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| [PG: use linux-stable 4.19.95 version instead of mainline.] |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| index 64f67cf7766b..dd151e09c8e9 100644 |
| --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c |
| @@ -3008,6 +3008,7 @@ static netdev_tx_t stmmac_tso_xmit(struct sk_buff *skb, struct net_device *dev) |
| |
| tx_q->tx_tail_addr = tx_q->dma_tx_phy + (tx_q->cur_tx * sizeof(*desc)); |
| stmmac_set_tx_tail_ptr(priv, priv->ioaddr, tx_q->tx_tail_addr, queue); |
| + stmmac_tx_timer_arm(priv, queue); |
| |
| return NETDEV_TX_OK; |
| |
| @@ -3221,6 +3222,7 @@ static netdev_tx_t stmmac_xmit(struct sk_buff *skb, struct net_device *dev) |
| |
| tx_q->tx_tail_addr = tx_q->dma_tx_phy + (tx_q->cur_tx * sizeof(*desc)); |
| stmmac_set_tx_tail_ptr(priv, priv->ioaddr, tx_q->tx_tail_addr, queue); |
| + stmmac_tx_timer_arm(priv, queue); |
| |
| return NETDEV_TX_OK; |
| |
| -- |
| 2.7.4 |
| |