I noticed the same on my Archer C7 v2, top speeds at around 300Mbps. I tried using the old ar71 snapshots as a workaround but it appears that rpcd is broken on those so luci does not work. (But offloading works, so for anyone not in need of luci this might be a temporary solution)
As i kind of like luci for the ease of use i also switched to an ath79 4.14 image. This also gave me an excuse to try and build my own image
Should i create a flyspray account to add to the bug so it is clear that this is not an isolated problem for just one user?
root@router:~# for IFACE in $(ip -br link show | awk '{ print $1 }' | grep -v lo); do ethtool $IFACE; done
Settings for eth0:
Supported ports: [ ]
Supported link modes: 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: No
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: No
Advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
Settings for eth1:
Supported ports: [ TP AUI BNC MII FIBRE ]
Supported link modes: 1000baseT/Half 1000baseT/Full
Supported pause frame use: Symmetric Receive-only
Supports auto-negotiation: Yes
Supported FEC modes: Not reported
Advertised link modes: 1000baseT/Half 1000baseT/Full
Advertised pause frame use: No
Advertised auto-negotiation: Yes
Advertised FEC modes: Not reported
Link partner advertised link modes: 1000baseT/Full
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Link partner advertised FEC modes: Not reported
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Current message level: 0x000000ff (255)
drv probe link timer ifdown ifup rx_err tx_err
Link detected: yes
Settings for br-lan:
Link detected: yes
Settings for eth1.1@eth1:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
Settings for eth0.2@eth0:
Cannot get device settings: No such device
Cannot get wake-on-lan settings: No such device
Cannot get message level: No such device
Cannot get link status: No such device
No data available
Settings for wlan0:
Link detected: yes
I've been looking at the commit here: https://lkml.org/lkml/2019/2/12/1545 and wonder whether ft->iifidx and ft->oifidx got accidentally swapped.
Before the change, ft->iifidx was route->tuple[dir].ifindex, after the change, it is other_dst->dev->ifindex where other_dst corresponds to route->tuple[!dir].dst.
So instead of route->tuple[dir] before the change, it is now route->tuple[!dir] - the reverse direction. Vice versa for ft->oifidx.
Maybe someone can test a build with these two swapped (swap dst with other_dst) and see if it restores functionality. Cannot test myself due to lack of hardware at hand.
had the same thing in my mind, however swapping dst with other_dst did not work, or there were more places to do the change than the places i swapped those.
however, simple swap of ft->iifidx with ft->oifidx and vice versa restores flow offload to a working state
i've made a simple patch based on this and opened PR https://github.com/openwrt/openwrt/pull/2266 but, as expected, they claim their approach is correct and we should adjust openwrt offload patches...
i wonder which other devices use flow offloading feature besides openwrt routers, and if it is possible to reproduce regression on these as well