* [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event
@ 2026-10-13 2:47 Pengfei Zhang
2026-10-13 2:49 ` netdev-bot+sinfo
` (2 more replies)
0 siblings, 3 replies; 5+ messages in thread
From: Pengfei Zhang @ 2026-10-13 2:47 UTC (permalink / raw)
To: Maxime Chevallier, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Jose Abreu, EricChan, Simon Horman, zhangpengfei16, netdev,
linux-stm32, linux-arm-kernel, linux-kernel
Commit 8d07a7930434 ("net: stmmac: xgmac: Do not enable TBU interrupt")
removed TBUE from the default DMA interrupt mask, but did not remove the
TBU check from dwxgmac2_dma_interrupt().
TBU is set whenever a TX channel runs out of descriptors. Since TBUE is
not enabled and only enabled bits are cleared, the TBU status bit is
never cleared. As a result, TBU stays set on every idle TX channel,
regardless of whether there is any TX traffic.
With a shared interrupt, stmmac_dma_interrupt() checks all channels,
so every interrupt from any source schedules TX NAPI on every idle TX
channel.
Only use TI to trigger TX processing.
Fixes: 8d07a7930434 ("net: stmmac: xgmac: Do not enable TBU interrupt")
Signed-off-by: Pengfei Zhang <zhangfeionline@gmail.com>
---
Tested on a board with 8 RX/TX DMA channels behind one shared
interrupt. A peer sends 10k UDP packets/s to the board and the board
sends nothing back, so there should be almost no TX work. Every idle
channel reads DMA_CH_STATUS 0x4 (TBU only).
Per second, averaged over 10 s:
before after
hw interrupts 9071 8580
tx_normal_irq_n 72572 1
tx_clean ~73000 9
- hw interrupts: the shared interrupt line, from /proc/interrupts.
Unchanged, the RX watchdog sets the rate.
- tx_normal_irq_n (ethtool -S): how often dwxgmac2_dma_interrupt()
returned handle_tx. Before the fix every interrupt reports it for
all 8 channels.
- tx_clean (ethtool -S): stmmac_tx_clean() runs, i.e. TX NAPI polls.
Each spurious handle_tx schedules one. What is left after the fix
is real TX and the TX coalesce timer. The "before" value is from a
separate run with the same setup.
No packet loss before or after.
drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
index ff83858ebc..0a6e82a155 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwxgmac2_dma.c
@@ -346,7 +346,7 @@ static int dwxgmac2_dma_interrupt(struct stmmac_priv *priv,
u64_stats_update_end(&stats->syncp);
ret |= handle_rx;
}
- if (likely(intr_status & (XGMAC_TI | XGMAC_TBU))) {
+ if (likely(intr_status & XGMAC_TI)) {
u64_stats_update_begin(&stats->syncp);
u64_stats_inc(&stats->tx_normal_irq_n[chan]);
u64_stats_update_end(&stats->syncp);
--
2.54.0
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event
2026-10-13 2:47 [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event Pengfei Zhang
@ 2026-10-13 2:49 ` netdev-bot+sinfo
2026-10-13 6:09 ` Pengfei Zhang
2026-10-13 4:55 ` Pengfei Zhang
2026-10-13 6:40 ` Maxime Chevallier
2 siblings, 1 reply; 5+ messages in thread
From: netdev-bot+sinfo @ 2026-10-13 2:49 UTC (permalink / raw)
To: Pengfei Zhang
Cc: Maxime Chevallier, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue,
Jose Abreu, EricChan, Simon Horman, zhangpengfei16, netdev,
linux-stm32, linux-arm-kernel, linux-kernel
Hi!
This is an automated message. This series looks like a fix, but its
commit messages seem to be missing some information:
- What hardware the change was tested on. For driver fixes please
mention the device (and if relevant firmware version) used for
testing, or say that the change was not tested on real hardware.
Please do not repost the series just to address the above. Instead,
reply to this email with the missing information, so that reviewers
can take it into account. If the series needs another revision for
other reasons, please include the information in the commit messages
then.
The evaluation is done by an LLM so it may be wrong, if you think
that is the case please reply and explain.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event
2026-10-13 2:49 ` netdev-bot+sinfo
@ 2026-10-13 6:09 ` Pengfei Zhang
0 siblings, 0 replies; 5+ messages in thread
From: Pengfei Zhang @ 2026-10-13 6:09 UTC (permalink / raw)
To: Maxime Chevallier, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Jose Abreu, EricChan, Simon Horman, zhangpengfei16, netdev,
linux-stm32, linux-arm-kernel, linux-kernel
It has been tested on the hardware device (not publicly available),
a DWC XGMAC with 8 RX/TX DMA channels behind one shared interrupt.
The numbers below the --- in the patch are from that device.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event
2026-10-13 2:47 [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event Pengfei Zhang
2026-10-13 2:49 ` netdev-bot+sinfo
@ 2026-10-13 4:55 ` Pengfei Zhang
2026-10-13 6:40 ` Maxime Chevallier
2 siblings, 0 replies; 5+ messages in thread
From: Pengfei Zhang @ 2026-10-13 4:55 UTC (permalink / raw)
To: Maxime Chevallier, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Jose Abreu, Jose Abreu, EricChan, Simon Horman, zhangpengfei16,
netdev, linux-stm32, linux-arm-kernel, linux-kernel
+Cc Jose Abreu, the author of the commit in Fixes:. I used an outdated
address for him in the original posting, sorry.
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event
2026-10-13 2:47 [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event Pengfei Zhang
2026-10-13 2:49 ` netdev-bot+sinfo
2026-10-13 4:55 ` Pengfei Zhang
@ 2026-10-13 6:40 ` Maxime Chevallier
2 siblings, 0 replies; 5+ messages in thread
From: Maxime Chevallier @ 2026-10-13 6:40 UTC (permalink / raw)
To: Pengfei Zhang, Andrew Lunn, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Maxime Coquelin, Alexandre Torgue
Cc: Jose Abreu, EricChan, Simon Horman, zhangpengfei16, netdev,
linux-stm32, linux-arm-kernel, linux-kernel
Hi,
On 10/13/26 04:47, Pengfei Zhang wrote:
> Commit 8d07a7930434 ("net: stmmac: xgmac: Do not enable TBU interrupt")
> removed TBUE from the default DMA interrupt mask, but did not remove the
> TBU check from dwxgmac2_dma_interrupt().
>
> TBU is set whenever a TX channel runs out of descriptors. Since TBUE is
> not enabled and only enabled bits are cleared, the TBU status bit is
> never cleared. As a result, TBU stays set on every idle TX channel,
> regardless of whether there is any TX traffic.
>
> With a shared interrupt, stmmac_dma_interrupt() checks all channels,
> so every interrupt from any source schedules TX NAPI on every idle TX
> channel.
>
> Only use TI to trigger TX processing.
>
> Fixes: 8d07a7930434 ("net: stmmac: xgmac: Do not enable TBU interrupt")
> Signed-off-by: Pengfei Zhang <zhangfeionline@gmail.com>
Reviewed-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
> ---
> Tested on a board with 8 RX/TX DMA channels behind one shared
> interrupt. A peer sends 10k UDP packets/s to the board and the board
> sends nothing back, so there should be almost no TX work. Every idle
> channel reads DMA_CH_STATUS 0x4 (TBU only).
>
> Per second, averaged over 10 s:
>
> before after
> hw interrupts 9071 8580
> tx_normal_irq_n 72572 1
> tx_clean ~73000 9
>
> - hw interrupts: the shared interrupt line, from /proc/interrupts.
> Unchanged, the RX watchdog sets the rate.
> - tx_normal_irq_n (ethtool -S): how often dwxgmac2_dma_interrupt()
> returned handle_tx. Before the fix every interrupt reports it for
> all 8 channels.
> - tx_clean (ethtool -S): stmmac_tx_clean() runs, i.e. TX NAPI polls.
> Each spurious handle_tx schedules one. What is left after the fix
> is real TX and the TX coalesce timer. The "before" value is from a
> separate run with the same setup.
>
> No packet loss before or after.
If you need to respin, that information should be in the commit log
directly.
Thanks,
Maxime
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2026-10-13 6:41 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-13 2:47 [PATCH net] net: stmmac: xgmac: do not treat TBU as a TX event Pengfei Zhang
2026-10-13 2:49 ` netdev-bot+sinfo
2026-10-13 6:09 ` Pengfei Zhang
2026-10-13 4:55 ` Pengfei Zhang
2026-10-13 6:40 ` Maxime Chevallier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox