From d23d8240fb01dbe6d682e44840aa24d68444883c Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Fri, 24 Sep 2021 11:49:30 +0200 Subject: [PATCH] 5.4-stable patches added patches: net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch --- ...sc-base-address-before-restarting-tx.patch | 40 +++++++++++++++++++ queue-5.4/series | 1 + 2 files changed, 41 insertions(+) create mode 100644 queue-5.4/net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch diff --git a/queue-5.4/net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch b/queue-5.4/net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch new file mode 100644 index 00000000000..319e37741db --- /dev/null +++ b/queue-5.4/net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch @@ -0,0 +1,40 @@ +From f421031e3ff0dd288a6e1bbde9aa41a25bb814e6 Mon Sep 17 00:00:00 2001 +From: Jongsung Kim +Date: Fri, 6 Dec 2019 20:40:00 +0900 +Subject: net: stmmac: reset Tx desc base address before restarting Tx + +From: Jongsung Kim + +commit f421031e3ff0dd288a6e1bbde9aa41a25bb814e6 upstream. + +Refer to the databook of DesignWare Cores Ethernet MAC Universal: + +6.2.1.5 Register 4 (Transmit Descriptor List Address Register + +If this register is not changed when the ST bit is set to 0, then +the DMA takes the descriptor address where it was stopped earlier. + +The stmmac_tx_err() does zero indices to Tx descriptors, but does +not reset HW current Tx descriptor address. To fix inconsistency, +the base address of the Tx descriptors should be rewritten before +restarting Tx. + +Signed-off-by: Jongsung Kim +Signed-off-by: David S. Miller +Cc: Macpaul Lin +Signed-off-by: Greg Kroah-Hartman +--- + drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c ++++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c +@@ -1987,6 +1987,8 @@ static void stmmac_tx_err(struct stmmac_ + tx_q->cur_tx = 0; + tx_q->mss = 0; + netdev_tx_reset_queue(netdev_get_tx_queue(priv->dev, chan)); ++ stmmac_init_tx_chan(priv, priv->ioaddr, priv->plat->dma_cfg, ++ tx_q->dma_tx_phy, chan); + stmmac_start_tx_dma(priv, chan); + + priv->dev->stats.tx_errors++; diff --git a/queue-5.4/series b/queue-5.4/series index fa908171cfd..2f02afa9ac0 100644 --- a/queue-5.4/series +++ b/queue-5.4/series @@ -25,3 +25,4 @@ profiling-fix-shift-out-of-bounds-bugs.patch pwm-lpc32xx-don-t-modify-hw-state-in-.probe-after-the-pwm-chip-was-registered.patch pwm-mxs-don-t-modify-hw-state-in-.probe-after-the-pwm-chip-was-registered.patch phy-avoid-unnecessary-link-up-delay-in-polling-mode.patch +net-stmmac-reset-tx-desc-base-address-before-restarting-tx.patch -- 2.47.2