]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
net: bcmgenet: Use weighted round-robin TX DMA arbitration
authorOvidiu Panait <ovidiu.panait.rb@renesas.com>
Wed, 10 Jun 2026 08:52:38 +0000 (08:52 +0000)
committerJakub Kicinski <kuba@kernel.org>
Sat, 13 Jun 2026 21:49:10 +0000 (14:49 -0700)
commitfd615abd53110f0f815984e99e7cc51ca6b7d979
tree29d7695dece7255c7c0a42a027054187dfd36b94
parent05f789fa90d95d5771230e78453cedff2486039d
net: bcmgenet: Use weighted round-robin TX DMA arbitration

Under heavy network traffic, we observed sporadic TX queue timeouts on the
Raspberry Pi 4. The timeouts can be reproduced by stress testing the TX
path with multiple concurrent iperf UDP streams:

    iperf3 -c <ip> -u -b0 -P16 -t60
    NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2044 ms
    NETDEV WATCHDOG: CPU: 3: transmit queue 0 timed out 2004 ms

Investigation showed that the timeouts are caused by the priority-based
arbiter. Under heavy load the highest priority queue starves the lower
priority ones, causing timeouts. The TX strict priority arbiter is not
suitable for the default use case where all the traffic gets spread
across all the TX queues.

Therefore, to fix this, switch the TX DMA arbiter to Weighted Round-Robin,
which services all queues, so they do not stall. The weights were chosen
to follow the existing priority scheme: q0 gets the smallest weight, while
q1-4 get the bulk of the TX bandwidth.

Fixes: 1c1008c793fa ("net: bcmgenet: add main driver file")
Signed-off-by: Ovidiu Panait <ovidiu.panait.rb@renesas.com>
Link: https://patch.msgid.link/20260610085238.56300-1-ovidiu.panait.rb@renesas.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/broadcom/genet/bcmgenet.c