Re: [PATCH net v2] net: stmmac: fix transmit queue timed out after resume
From: Maxime Chevallier <maxime.chevallier@bootlin.com>
Date: 2026-01-15 21:04:50
Also in:
linux-doc, lkml
Hi,
I've just run iperf3 in both directions with the kernel I had on the board (based on 6.18.0-rc7-net-next+), and stmmac really isn't looking particularly great - by that I mean, iperf3 *failed* spectacularly. First, running in normal mode (stmmac transmitting, x86 receiving) it's only capable of 210Mbps, which is nowhere near line rate. However, when running iperf3 in reverse mode, it filled the stmmac's receive queue, which then started spewing PAUSE frames at a rate of knots, flooding the network, and causing the entire network to stop. It never recovered without rebooting. Trying again on 6.19.0-rc4-net-next+, stmmac transmitting shows the same dire performance: [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 24.2 MBytes 203 Mbits/sec 0 230 KBytes [ 5] 1.00-2.00 sec 25.5 MBytes 214 Mbits/sec 0 230 KBytes [ 5] 2.00-3.00 sec 25.0 MBytes 210 Mbits/sec 0 230 KBytes [ 5] 3.00-4.00 sec 25.5 MBytes 214 Mbits/sec 0 230 KBytes [ 5] 4.00-5.00 sec 25.1 MBytes 211 Mbits/sec 0 230 KBytes [ 5] 5.00-6.00 sec 25.1 MBytes 211 Mbits/sec 0 230 KBytes [ 5] 6.00-7.00 sec 25.7 MBytes 215 Mbits/sec 0 230 KBytes [ 5] 7.00-8.00 sec 25.2 MBytes 212 Mbits/sec 0 230 KBytes [ 5] 8.00-9.00 sec 25.3 MBytes 212 Mbits/sec 0 346 KBytes [ 5] 9.00-10.00 sec 25.4 MBytes 213 Mbits/sec 0 346 KBytes - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 252 MBytes 211 Mbits/sec 0 sender [ 5] 0.00-10.02 sec 250 MBytes 210 Mbits/sec receiver stmmac receiving shows the same problem: [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 64.1 MBytes 537 Mbits/sec [ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 2.00-3.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 3.00-4.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 4.00-5.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 5.00-6.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 6.00-7.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 7.00-8.00 sec 0.00 Bytes 0.00 bits/sec [ 5] 8.00-9.00 sec 0.00 Bytes 0.00 bits/sec ^C[ 5] 9.00-9.43 sec 0.00 Bytes 0.00 bits/sec - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate [ 5] 0.00-9.43 sec 0.00 Bytes 0.00 bits/sec sender [ 5] 0.00-9.43 sec 64.1 MBytes 57.0 Mbits/sec receiver iperf3: interrupt - the client has terminated
Heh, I was able to reproduce something similar on imx8mp, that has an imx-dwmac (dwmac 4/5 according to dmesg) : DUT to x86 Connecting to host 192.168.2.1, port 5201 [ 5] local 192.168.2.13 port 54744 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 0.00 Bytes 0.00 bits/sec 2 1.41 KBytes [ 5] 1.00-2.00 sec 0.00 Bytes 0.00 bits/sec 1 1.41 KBytes x86 to DUT : Reverse mode, remote host 192.168.2.1 is sending [ 5] local 192.168.2.13 port 47050 connected to 192.168.2.1 port 5201 [ ID] Interval Transfer Bitrate [ 5] 0.00-1.00 sec 112 MBytes 935 Mbits/sec [ 5] 1.00-2.00 sec 112 MBytes 936 Mbits/sec [ 5] 2.00-3.00 sec 112 MBytes 936 Mbits/sec Nothing as bas as what you face, but there's defintely something going on there. "good" news is that it worked in v6.19-rc1, I have a bisect ongoing. I'll update once I have homed-in on something. Maxime