@dlakelan,
No discussion, it should not crash. I was merely trying to understand where in the kernel driver it could go wrong.
Interestingly, as expected, the problem goes away, if we enable jumbo frames. The router survived 90 minutes of stress test of packets of all sizes up to 4088 bytes...
Unfortunately due to a bug in OpenWRT, you can't set the MTU in /etc/config/network, neither in the interface, nor device section.
And regrettably, the driver does not allow setting the MTU in active state.
So you need to issue:
ifconfig eth1 down; ifconfig eth1 mtu 4088; ifconfig eth1 up
I know this is just a workaround, but at least my router is not (continuously) crashing anymore and, if time allows, I know where to look for a defect now and where to add some debug code.
Need to find a clean way to set the mtu at router boot...
EDIT: Ok, this won't win any prize but it works.
- Set MTU in Luci for your ethernet port (interfaces - lan - advanced settings). This will add the mtu option to /etc/config/network
- Add to the /etc/rc.local
MTU=$(uci get network.lan.mtu)
ifconfig eth1 down; ifconfig eth1 mtu $MTU; ifconfig eth1 up
- reboot
You can change the MTU size using Luci (or edit /etc/config/network), the changes will be picked up by rc.local
Ewald