Hello!
I've got a RaspberryPi 4Br1.2. I've had OpenWRT 23.x running on it without problem. Several months ago I upgraded to OpenWRT 24.10.1.
The network configuration of this device is:
eth0 -> br-lan
eth1 (usb) -> wan
eth2 (usb) -> wanb
mwan3 manages traffic against wan and wanb. Other than the problems with ipsets, no complaints here.
Since moving to 24.10.1 I've sporadically had all LAN connectivity fail. I've had to power-cycle the RPi to get it back online.
To troubleshoot the problem I've added eth3 and added this device to br-lan. When connectivity fails I can unplug the patch cable from eth0 (on the RPi or the switch) and br-lan picks up the connection to eth3 for the LAN interface and allows me to log into the RPi. If I then reconnect the patch cable, br-lan switches back to using eth0 for LAN and I lose connectivity. Unplug the patch cable - I am able to connect again via eth3.
After trawling through the logs I find that every time this has happened I am seeing a flurry of these errors:
Tue Jun 24 11:18:48 2025 kern.crit kernel: [312676.902251] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:18:50 2025 kern.crit kernel: [312678.912278] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:18:52 2025 kern.crit kernel: [312680.922288] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:18:54 2025 kern.crit kernel: [312682.932318] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:18:56 2025 kern.crit kernel: [312684.942322] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:18:59 2025 kern.crit kernel: [312686.952342] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:19:01 2025 kern.crit kernel: [312688.962358] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
Tue Jun 24 11:19:03 2025 kern.crit kernel: [312690.972377] bcmgenet fd580000.ethernet eth0: NETDEV WATCHDOG: CPU: 0: transmit queue 0 timed out 2010 ms
It seems as though I can recover the port without restarting the RPi by issuing these commands:
ip link set eth0 down; ip link set eth0 up
If I do this, then plug the patch cable back in, the link comes to life and can again act as the LAN port.
In trying to diagnose this I've found various OpenWRT threads, and GitHub bug reports, indicating that this onboard bcmgenet eth driver can be flakey. The various threads make recommendations about how to work around the problem, but they are evidently not working. From my rc.local:
# https://forum.openwrt.org/t/bizarre-dns-problems-with-debian-linux-after-upgrade-to-24-10/225860/34
# https://github.com/openwrt/openwrt/issues/18122
ethtool -K eth0 rx-gro-list off
# https://github.com/openwrt/openwrt/issues/9305#issuecomment-1047344495
# https://github.com/raspberrypi/linux/issues/5561
ethtool -K eth0 rx off
yet the failure just happened. Note that the time-to-failure can be as little as a few minutes, and as long as several weeks.
The /etc/config/network config for br-lan and the device
config device
option name 'br-lan'
option type 'bridge'
option ipv6 '0'
option stp '1'
list ports 'eth0'
list ports 'eth3'
...
config device
option name 'eth0'
option ipv6 '0'
option gro '0'
The end of my too long question - is there anything to be done? Is this a hardware failure with this RPi4? Would there be any different behavior if I upgraded to an RPi5? Should I just not use the onboard eth and run everything off the USB eth interfaces plugged into the USB3 ports (these ports have far greater bandwidth than the network links connected to them, so I'm not super concerned about the performance impact).
Any guidance?
Thank you!