Intermittent TX freeze on EdgeRouter 6P under modest load (OpenWrt 24.10.5)

I'm facing an intermittent issue with my Ubiquiti EdgeRouter 6P (UBNT_E300) running OpenWrt 24.10.5.

When the router is under a modest load, one or more network interfaces may suddenly stop transmitting packets. Packets still arrive, but nothing goes out. The LED on the port remains solid, showing no activity.

Which network interface experiences this issue is random: it happens to either the WAN or LAN interface (in my case that's lan0 and lan1 respectively).

Recovering from this state requires a reboot of the router, restarting the interface alone is not enough. A power cycle is not required, a reboot is enough.

Currently I have the router in a state where the WAN interface is working normally, but the LAN interface is broken. I deliberately did not reboot this time to try and debug this issue, I have SSH access through another interface.

With tcpdump I can see mDNS, DHCP, and ARP traffic arriving at the LAN interface, but no response ever goes out.

When attempting to ping a machine in the LAN network from the router there's no network activity. The ICMP packets are not showing up in the local tcpdump output, nor are they captured on the target machine.

This issue usually shows during a long (> 30 minute) file transfer at Gigabit speeds, it never happens with regular internet activity.

I already tried disabling hardware offloading, this made no difference.

At this point I think I'm chasing down some hardware, driver, or kernel issue.

In the ifconfig output I can see that the TX counter for lan1 (the broken interface) is stuck, the RX counter keeps increasing:

lan0      Link encap:Ethernet  HWaddr FC:EC:DA:47:C9:B1  
          UP BROADCAST RUNNING MULTICAST  MTU:1504  Metric:1
          RX packets:26829763 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63729200 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2050144683 (1.9 GiB)  TX bytes:94363821632 (87.8 GiB)

lan1      Link encap:Ethernet  HWaddr FC:EC:DA:47:C9:B2  
          inet addr:10.0.0.1  Bcast:10.0.0.255  Mask:255.255.255.0
          inet6 addr: fe80::feec:daff:fe47:c9b2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:62576349 errors:0 dropped:435 overruns:0 frame:0
          TX packets:26715684 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:93409539117 (86.9 GiB)  TX bytes:1801648976 (1.6 GiB)

lan2      Link encap:Ethernet  HWaddr FC:EC:DA:47:C9:B3  
          inet addr:10.9.0.1  Bcast:10.9.0.255  Mask:255.255.255.0
          inet6 addr: fe80::feec:daff:fe47:c9b3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1178441 errors:0 dropped:0 overruns:0 frame:0
          TX packets:50902 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:892102854 (850.7 MiB)  TX bytes:6004691 (5.7 MiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:47450 errors:0 dropped:0 overruns:0 frame:0
          TX packets:47450 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:3983603 (3.7 MiB)  TX bytes:3983603 (3.7 MiB)

odido0    Link encap:Ethernet  HWaddr FC:EC:DA:47:C9:B1  
          inet addr:REDACTED  Bcast:REDACTED  Mask:255.255.252.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:151722 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63729268 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:37599364 (35.8 MiB)  TX bytes:94169631808 (87.7 GiB)

wg0       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.8.0.1  P-t-P:10.8.0.1  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP  MTU:1420  Metric:1
          RX packets:11540 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8402 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2874996 (2.7 MiB)  TX bytes:1069884 (1.0 MiB)

wg1       Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.7.0.1  P-t-P:10.7.0.1  Mask:255.255.255.0
          UP POINTOPOINT RUNNING NOARP  MTU:1420  Metric:1
          RX packets:131628 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1312468 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:28354464 (27.0 MiB)  TX bytes:1106273464 (1.0 GiB)

Configs:

/etc/config/network:

config interface 'loopback'
        option device 'lo'
        option proto 'static'
        option ipaddr '127.0.0.1'
        option netmask '255.0.0.0'

config globals 'globals'
        option ula_prefix 'fd86:32e4:d8eb::/48'
        option packet_steering '1'

config interface 'wan'
        option proto 'dhcp'
        option device 'odido0'
        option peerdns '0'
        option delegate '0'
        list dns '9.9.9.9'
        list dns '149.112.112.112'

config interface 'lan'
        option proto 'static'
        option device 'lan1'
        option ipaddr '10.0.0.1'
        option netmask '255.255.255.0'

config device
        option type '8021q'
        option ifname 'lan0'
        option vid '300'
        option name 'odido0'
        option ipv6 '0'
        option mtu '1500'

config device
        option name 'lan0'
        option mtu '1504'
        option ipv6 '0'

config interface 'wg0'
        option proto 'wireguard'
        option private_key 'REDACTED'
        list addresses '10.8.0.1/24'
        option listen_port '4090'

config wireguard_wg0
        option description 'nuc'
        option public_key 'REDACTED'
        list allowed_ips '10.8.0.2/32'

config wireguard_wg0
        option description 'rtr'
        option public_key 'REDACTED'
        option route_allowed_ips '1'
        list allowed_ips '10.8.0.3/32'
        list allowed_ips '192.168.2.0/24'
        list allowed_ips '192.168.1.0/24'

config interface 'oob'
        option proto 'static'
        option device 'lan2'
        option ipaddr '10.9.0.1'
        option netmask '255.255.255.0'
        option delegate '0'

config interface 'wg1'
        option proto 'wireguard'
        option private_key 'REDACTED'
        option listen_port '3090'
        list addresses '10.7.0.1/24'

config wireguard_wg1
        option description 'iPhone 15 Pro'
        option public_key 'REDACTED'
        list allowed_ips '10.7.0.10/32'

config wireguard_wg1
        option description 'Mac Mini'
        option public_key 'REDACTED'
        list allowed_ips '10.7.0.20/32'

config wireguard_wg1
        option description 'iPad Mini'
        option public_key 'REDACTED'
        list allowed_ips '10.7.0.30/32'

/etc/config/firewall:

config defaults
        option input 'DROP'
        option output 'ACCEPT'
        option forward 'DROP'
        option synflood_protect '1'
        option flow_offloading '1'
        option flow_offloading_hw '1'

config zone
        option name 'lan'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'ACCEPT'
        list network 'lan'

config zone
        option name 'oob'
        option input 'ACCEPT'
        option output 'ACCEPT'
        option forward 'DROP'
        list network 'oob'

config zone
        option name 'redacted-zone-name'
        option input 'DROP'
        option output 'ACCEPT'
        option forward 'DROP'
        list network 'wg0'

config zone
        option name 'remote'
        option input 'DROP'
        option output 'ACCEPT'
        option forward 'DROP'
        list network 'wg1'

config zone
        option name 'wan'
        option input 'DROP'
        option output 'ACCEPT'
        option forward 'DROP'
        option masq '1'
        list network 'wan'

config forwarding
        option src 'lan'
        option dest 'wan'

config rule
        option name 'Allow WG for redacted-zone-name'
        list proto 'udp'
        option src 'wan'
        option dest_port '4090'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow WG for remote'
        list proto 'udp'
        option src 'wan'
        option dest_port '3090'
        option target 'ACCEPT'
        option family 'ipv4'

config rule
        option name 'Allow HTTP from LAN'
        list proto 'tcp'
        option src 'lan'
        option dest_port '80'
        option target 'ACCEPT'
        option family 'ipv4'

config forwarding
        option src 'lan'
        option dest 'redacted-zone-name'

config rule
        option name 'Allow Unifi STUN from redacted-zone-name'
        option family 'ipv4'
        list proto 'udp'
        option src 'redacted-zone-name'
        option dest_port '3478'
        option target 'ACCEPT'
        option dest 'lan'
        list dest_ip '10.0.0.11'

config rule
        option name 'Allow Unifi from redacted-zone-name'
        option family 'ipv4'
        list proto 'tcp'
        option src 'redacted-zone-name'
        option dest_port '8080'
        option target 'ACCEPT'
        option dest 'lan'
        list dest_ip '10.0.0.11'

config rule
        option name 'Allow SMB 139 from redacted-zone-name'
        option family 'ipv4'
        option src 'redacted-zone-name'
        option dest 'lan'
        option dest_port '139'
        option target 'ACCEPT'
        list dest_ip '10.0.0.11'
        list proto 'tcp'
        list proto 'udp'

config rule
        option name 'Allow SMB 445 from redacted-zone-name'
        option family 'ipv4'
        option src 'redacted-zone-name'
        option dest 'lan'
        option dest_port '445'
        option target 'ACCEPT'
        list dest_ip '10.0.0.11'
        list proto 'tcp'
        list proto 'udp'

config forwarding
        option src 'lan'
        option dest 'oob'

config forwarding
        option src 'oob'
        option dest 'wan'

config rule
        option src 'remote'
        option dest 'lan'
        option name 'Allow server access from remote'
        option target 'ACCEPT'
        list dest_ip '10.0.0.11'
        list dest_ip '10.0.0.15'

config rule
        option src 'remote'
        option name 'Allow router access from remote'
        list proto 'tcp'
        list dest_ip '10.7.0.1'
        option target 'ACCEPT'

config rule
        option src 'remote'
        option dest 'oob'
        option name 'Allow KVM from remote'
        list dest_ip '10.9.0.9'
        option target 'ACCEPT'

Build: OpenWrt 24.10.5 r29087-d9c5716d1d / LuCI openwrt-24.10 branch 25.354.54193~3972ee2

Any debugging tips are welcome. So far dmesg and system.log are not showing anything of interest.

First candidates to disable would be firewall offloads.

Please connect to your OpenWrt device using ssh and copy the output of the following commands and post it here using the "Preformatted text </> " button (red circle; this works best in the 'Markdown' composer view in the blue oval):

Screenshot 2025-10-20 at 8.14.14 PM

Remember to redact passwords, VPN keys, MAC addresses and any public IP addresses you may have:

ubus call system board
cat /etc/config/dhcp

I already tried disabling HW offloading in the firewall options, unfortunately that didn't help.

Here is the output:

ubus call system board:

{
        "kernel": "6.6.119",
        "hostname": "billy-rtr",
        "system": "UBNT_E300 (CN7030p1.2-1000-AAP)",
        "model": "Ubiquiti EdgeRouter 6P",
        "board_name": "ubnt,edgerouter-6p",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "24.10.5",
                "revision": "r29087-d9c5716d1d",
                "target": "octeon/generic",
                "description": "OpenWrt 24.10.5 r29087-d9c5716d1d",
                "builddate": "1766005702"
        }
}

/etc/config/dhcp (I doubt the static leases are relevant, but I included them anyway):

config odhcpd 'odhcpd'
        option maindhcp '0'
        option leasefile '/tmp/hosts/odhcpd'
        option leasetrigger '/usr/sbin/odhcpd-update'
        option loglevel '4'
        option piofolder '/tmp/odhcpd-piofolder'

config dhcp 'lan'
        option interface 'lan'
        option start '100'
        option limit '100'
        option leasetime '24h'

config dnsmasq 'main'
        option rebind_protection '0'
        option localservice '0'
        list interface 'lan'
        option authoritative '1'
        option domain 'lan.REDACTED'
        option sequential_ip '1'
        option enable_tftp '1'
        list address '/unifi/10.0.0.11'

config host
        option name 'hvac'
        option dns '1'
        list mac 'b8:27:eb:72:0f:bc'
        option ip '10.0.0.168'
        option instance 'main'

config host
        option name 'shelly-plug-koelkast'
        option dns '1'
        list mac 'c8:c9:a3:89:16:56'
        option ip '10.0.0.220'
        option instance 'main'

config host
        option name 'shelly-plug-wtw'
        option dns '1'
        list mac 'c8:c9:a3:88:5a:d8'
        option ip '10.0.0.221'
        option instance 'main'

config host
        option name 'shelly-plug-netwerk'
        list mac 'c8:c9:a3:89:41:80'
        option ip '10.0.0.222'
        option instance 'main'
        option dns '1'

config host
        option name 'shelly-plug-entertainment'
        option dns '1'
        list mac 'c8:c9:a3:88:88:62'
        option ip '10.0.0.223'
        option instance 'main'

config host
        option name 'shelly-plug-wasmachine'
        option dns '1'
        list mac '48:3f:da:28:e4:86'
        option ip '10.0.0.224'
        option instance 'main'

config host
        option name 'shelly-plug-bureau'
        option dns '1'
        list mac 'c8:c9:a3:88:d5:23'
        option ip '10.0.0.225'
        option instance 'main'

config host
        option name 'shelly-plug-vaatwasser'
        option dns '1'
        list mac 'c8:c9:a3:88:f5:34'
        option ip '10.0.0.226'
        option instance 'main'

config host
        option name 'shelly-plug-powercube'
        option dns '1'
        list mac 'c8:c9:a3:88:d4:65'
        option ip '10.0.0.227'
        option instance 'main'

config host
        option name 'shelly-plug-hifi'
        list mac 'c8:c9:a3:88:fb:e8'
        option ip '10.0.0.228'
        option dns '1'
        option instance 'main'

config host
        option name 'desktop'
        option dns '1'
        list mac '48:4d:7e:f4:92:a3'
        option ip '10.0.0.10'
        option instance 'main'

config dnsmasq 'OOB'
        option authoritative '1'
        option domain 'oob.REDACTED'
        option rebind_protection '0'
        option localservice '0'
        list interface 'oob'
        option sequential_ip '1'
        list notinterface 'loopback'

config dhcp 'oob'
        option interface 'oob'
        option start '100'
        option limit '150'
        option leasetime '7d'
        option dynamicdhcp '0'

config host
        option name 'triangle-kvm'
        option ip '10.9.0.9'
        option dns '1'
        option instance 'OOB'
        list mac '44:b7:d0:ea:29:bc'

config host
        option name 'ag-slaapkamer'
        list mac '84:FC:E6:02:50:90'
        option ip '10.0.0.230'
        option instance 'main'
        option dns '1'

config host
        option name 'ag-kantoor'
        option dns '1'
        list mac '84:FC:E6:0C:0A:EC'
        option ip '10.0.0.231'
        option instance 'main'

config host
        option name 'ag-balkon'
        option dns '1'
        list mac '84:FC:E6:0D:4E:E8'
        option ip '10.0.0.232'
        option instance 'main'

config host
        option name 'triangle'
        option ip '10.0.0.11'
        list mac 'D0:11:E5:88:38:D7'
        option instance 'main'

config host
        option name 'hass'
        list mac '02:EC:E5:D9:DE:5E'
        option ip '10.0.0.15'
        option instance 'main'

Try to disable ethtool -K rth0 rx-gro-list off (on all interfaces)
It sometimes causes problems.

Applying this setting on the live system with the broken interface did not recover it. I assume this must be done after a reboot and before the interface breaks again.

ethtool --show-features lan1:

Features for lan1:
rx-checksumming: off [fixed]
tx-checksumming: on
        tx-checksum-ipv4: on [fixed]
        tx-checksum-ip-generic: off [fixed]
        tx-checksum-ipv6: off [fixed]
        tx-checksum-fcoe-crc: off [fixed]
        tx-checksum-sctp: off [fixed]
scatter-gather: on
        tx-scatter-gather: on [fixed]
        tx-scatter-gather-fraglist: off [fixed]
tcp-segmentation-offload: off
        tx-tcp-segmentation: off [fixed]
        tx-tcp-ecn-segmentation: off [fixed]
        tx-tcp-mangleid-segmentation: off [fixed]
        tx-tcp6-segmentation: off [fixed]
generic-segmentation-offload: on
generic-receive-offload: on
large-receive-offload: off [fixed]
rx-vlan-offload: off [fixed]
tx-vlan-offload: off [fixed]
ntuple-filters: off [fixed]
receive-hashing: off [fixed]
highdma: off [fixed]
rx-vlan-filter: off [fixed]
vlan-challenged: off [fixed]
tx-lockless: on [fixed]
netns-local: off [fixed]
tx-gso-robust: off [fixed]
tx-fcoe-segmentation: off [fixed]
tx-gre-segmentation: off [fixed]
tx-gre-csum-segmentation: off [fixed]
tx-ipxip4-segmentation: off [fixed]
tx-ipxip6-segmentation: off [fixed]
tx-udp_tnl-segmentation: off [fixed]
tx-udp_tnl-csum-segmentation: off [fixed]
tx-gso-partial: off [fixed]
tx-tunnel-remcsum-segmentation: off [fixed]
tx-sctp-segmentation: off [fixed]
tx-esp-segmentation: off [fixed]
tx-udp-segmentation: off [fixed]
tx-gso-list: off [fixed]
fcoe-mtu: off [fixed]
tx-nocache-copy: off
loopback: off [fixed]
rx-fcs: off [fixed]
rx-all: off [fixed]
tx-vlan-stag-hw-insert: off [fixed]
rx-vlan-stag-hw-parse: off [fixed]
rx-vlan-stag-filter: off [fixed]
l2-fwd-offload: off [fixed]
hw-tc-offload: off [fixed]
esp-hw-offload: off [fixed]
esp-tx-csum-hw-offload: off [fixed]
rx-udp_tunnel-port-offload: off [fixed]
tls-hw-tx-offload: off [fixed]
tls-hw-rx-offload: off [fixed]
rx-gro-hw: off [fixed]
tls-hw-record: off [fixed]
rx-gro-list: off
macsec-hw-offload: off [fixed]
rx-udp-gro-forwarding: off
hsr-tag-ins-offload: off [fixed]
hsr-tag-rm-offload: off [fixed]
hsr-fwd-offload: off [fixed]
hsr-dup-offload: off [fixed]

ethtool --driver lan1:

driver: octeon_ethernet
version: 6.6.119
firmware-version: 
expansion-rom-version: 
bus-info: Builtin
supports-statistics: no
supports-test: no
supports-eeprom-access: no
supports-register-dump: no
supports-priv-flags: no

ethtool lan1:

Settings for lan1:
        Supported ports: [ TP    MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Auto-negotiation: on
        master-slave cfg: preferred master
        master-slave status: slave
        Port: MII
        PHYAD: 6
        Transceiver: external
        Link detected: yes

rx-gro-list is alternative skb format default only on OpenWrt among all linuxes out there.

I added the following startup commands and rebooted the router:

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

/usr/sbin/ethtool -K lan0 rx-gro-list off
/usr/sbin/ethtool -K lan1 rx-gro-list off
/usr/sbin/ethtool -K lan2 rx-gro-list off
/usr/sbin/ethtool -K lan3 rx-gro-list off
/usr/sbin/ethtool -K lan4 rx-gro-list off
/usr/sbin/ethtool -K lan5 rx-gro-list off

exit 0

Unfortunately, it didn't help. One of the interfaces froze again after a 15 minute file transfer at > 600 Mbps.

This time I rebooted it, so the router is currently not in the failed state.

I upgraded to 25.12.0 and reverted all other changes. So far I haven't been able to replicate the issue on this version.

I was finally able to complete a 100 GB file upload at 1 Gbps without any interfaces locking up.

Current version:

ubus call system board:

{
        "kernel": "6.12.71",
        "hostname": "billy-rtr",
        "system": "UBNT_E300 (CN7030p1.2-1000-AAP)",
        "model": "Ubiquiti EdgeRouter 6P",
        "board_name": "ubnt,edgerouter-6p",
        "rootfs_type": "squashfs",
        "release": {
                "distribution": "OpenWrt",
                "version": "25.12.0",
                "firmware_url": "https://downloads.openwrt.org/",
                "revision": "r32713-f919e7899d",
                "target": "octeon/generic",
                "description": "OpenWrt 25.12.0 r32713-f919e7899d",
                "builddate": "1772496855"
        }
}

Fingers crossed, but so far it's looking good.

This topic was automatically closed 10 days after the last reply. New replies are no longer allowed.