[PATCH net-next] net: stmmac: enable RPS and RBU interrupts
Russell King (Oracle)
linux at armlinux.org.uk
Tue Apr 14 18:19:45 PDT 2026
Okay, just a quick note to say that nvidia's 5.10.216-tegra kernel
survives iperf3 -c -R to the imx6.
Dumping the registers and comparing, and then forcing the RQS and TQS
values to 0x23 (+1 = 36, *256 = 9216 bytes) and 0x8f (+1 = 144,
*256 = 36864 ytes) respectively seems to solve the problem. Under
net-next, these both end up being 0xff (+1 = 256, *256 = 65536 bytes.)
Suspiciously, 36 * 4 = 144, and I also see that this kernel programs
all four of the MTL receive operation mode registers, but only the
first MTL transmit operation mode register. However, DMA channels 1-3
aren't initialised.
net-next derives them from:
unsigned int tqs = fifosz / 256 - 1;
where fifosz is passed in to dwmac4_dma_tx_chan_op_mode() and
unsigned int rqs = fifosz / 256 - 1;
where fifosz is passed in to dwmac4_dma_rx_chan_op_mode().
Now, according to the DMA capabilities:
Number of Additional RX channel: 4
Number of Additional TX channel: 4
Number of Additional RX queues: 4
Number of Additional TX queues: 4
TX Fifo Size: 65536
RX Fifo Size: 65536
However:
# ethtool -l eth0
Channel parameters for eth0:
Pre-set maximums:
RX: 4
TX: 4
Other: 0
Combined: 0
Current hardware settings:
RX: 1
TX: 1
Other: 0
Combined: 0
So, we end up allocating the entire 64K of the tx and rx FIFO to one
queue in net-next.
Looking back at 5.10, I don't see any code that would account for these
values being programmed for TQS and RQS, it looks like the calculations
are basically the same as we have today.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps down 10Mbps up. Decent connectivity at last!
More information about the linux-arm-kernel
mailing list