brada4
November 2, 2025, 7:35pm
22
Well, in your initial post you were correct..... Remove those and attach eth0 to the switch, for time of testing add high-traffic device there.
1 Like
wired
November 2, 2025, 7:37pm
23
Got it. Sorry for the miscommunication and the back and forth. And thank you for your help
1 Like
You really need to test and measure if there is any difference between eth0 and the other ports before endeavoring to modify the dts.
The ER-X is slow and outdated by modern standards, but should be more than adequate for simple switching at line speed.
I highly doubt any modification will result in a perceptible difference.
I think the author of the topic wants all ports to be on the switch. Currently, eth0 for the er-x is connected to the CPU, which means that for example, a dumb AP with a simple switch, packets pass through the CPU. Then, instead of the CPU being at 99% idle (as is the case for the other ports), it's at about 77% idle, meaning the CPU is at 23%. This isn't just a problem with the er-x, but with the entire MT7621 family since the patch was introduced. There was a request to try creating an option in LuCI to choose whether the router should work with the patch and the switch without it. Then the CPU would be at 99% idle for all ports. This topic has been dormant for a while now. It's a shame.
Patch:
master ← arinc9:mt7621-dts-work
opened 03:29PM - 10 Jul 22 UTC
Hi, I maintain MT7621 SoC and Ralink Pinctrl driver on upstream Linux.
https://… github.com/torvalds/linux/blob/4e23eeebb2e57f5a28b36221aa776b5a1122dde5/MAINTAINERS#L17040
---
This patch series brings thorough refactoring to the devicetrees of the mt7621 SoC and fix GB-PC1 and GB-PC2 devicetrees while at it.
It is possible to achieve 2 Gbps routing in total on devices with MT7621 SoCs.
Currently you can only get a maximum of 500/500 Mbps (download/upload) bandwidth on routing between networks.
With the last patch in the series, 1000/1000 Mbps routing or 2 Gbps total bandwidth to the CPU is possible.
## Speed Test
Here are the results for iperf3 bidirectional speed test with hardware offloading.
Routing and NAT performance is identical.
**Without the patch**
```
[ 5][RX-S] 0.00-20.00 sec 353 MBytes 148 Mbits/sec receiver
[ 8][TX-S] 0.00-20.00 sec 1.79 GBytes 769 Mbits/sec 0 sender
```
**With the patch**
```
[ 5][RX-S] 0.00-20.00 sec 2.16 GBytes 926 Mbits/sec receiver
[ 8][TX-S] 0.00-20.00 sec 1.80 GBytes 775 Mbits/sec 0 sender
```
# Devices That Benefit 2 Gbps CPU Bandwidth
There's a lot to make a list. Check the changelog for the last patch.
# The Patch Series Was Tested On
* Unielec U7621-06 16M by me and OpenWrt forum user user31894691
* TP-Link RE650 v1 by me
* Ubiquiti EdgeRouter X SFP by me
* D-Link DIR-882 rev. A1 by OpenWrt forum user Warlock
* D-Link DIR-878 rev. A1 by OpenWrt forum user Warlock
* MTS WG430223 by @csharper2005
* Xiaomi Mi Router 3 Pro by OpenWrt forum user SopaDeMacaco-UmaDeli
* Beeline Smartbox Giga by OpenWrt forum user SopaDeMacaco-UmaDeli
* Netgear WAC124 by OpenWrt forum user piaddic7ed
* Beeline Smartbox Flash by OpenWrt forum user SopaDeMacaco-UmaDeli
* Xiaomi Mi Router 4A Gigabit Edition by @ulp1an, @ubatuhan and @dkey21
* Xiaomi Redmi AC2100 by @Stkrx
* Ubiquiti EdgeRouter X by OpenWrt forum user d687r02j8g
* ZyXEL NWA50AX by @ThxAndBye
* Unielec U7621-01 by OpenWrt forum user Toomoch
* Xiaomi Router 3G by @jokubasver and @eduardo010174
* D-Team Newifi D2 by @csharper2005
* H3C TX1801 Plus by @DragonBluep
* Xiaomi Mi Router CR660x by @infiWang
* Cudy X6 by OpenWrt forum user jedboy
* Cudy 2100 by OpenWrt forum user jedboy
* TP-Link Archer C6U v1 by @dreamer7
* GnuBee GB-PC2 by Petr Louda
* YouHua WR1200JS by @ayyyuki1
* D-Link DIR-1960 by OpenWrt forum user adiastra
* Netgear WAX202 by @looi
* ipTIME T5004 by @odkrys
* TOTOLINK X5000R by OpenWrt forum user Agent
* Beeline SmartBox TURBO by @csharper2005
* YunCore AX820 by @f00b4r0
Forum link for more information:
https://forum.openwrt.org/t/users-needed-to-test-2-gbps-wan-lan-nat-routing-on-ramips-mt7621-devices/131478
opened 05:55AM - 06 Oct 23 UTC
closed 06:33AM - 18 Oct 23 UTC
bug
### Describe the bug
Ubiquiti EdgeRouter X has increaced cpu load and reduced… network speed on eth0 when using it as an all ports Switch compared to 22.03.5.
The same issue is identified on 23.05.0-rc3.
### OpenWrt version
23.05.0-rc4
### OpenWrt target/subtarget
ramips/mt7621
### Device
Ubiquiti EdgeRouter X
### Image kind
Official downloaded image
### Steps to reproduce
Identical configuration in both 22.03.5 and 23.05.0-rc4, as Switch on all ports:
- interface lan assigned to device br-lan and green firewall zone lan
- device br-lan bridging all five ports eth0 through eth4
iperf2 (windows):
- Server: iperf-win-isoch-fix -s
- Client: iperf-win-isoch-fix -c [server ip] -t 20 -d
1. Test max network speed on traffic between eth0 and eth2. Also observe CPU utilization.
2. Repeat 1, but replace eth0 with eth1, no cable in eth0.
### Actual behaviour
**23.05.0-rc4**
eth0<->eth2
cpu ~20% idle
[ 2] 0.00-20.04 sec 1.24 GBytes 531 Mbits/sec
[ 1] 0.00-20.11 sec 1.42 GBytes 608 Mbits/sec
531+608 = 1139 Mbits/sec
eth1<->eth2
cpu 99% idle
[ 1] 0.00-20.06 sec 2.19 GBytes 936 Mbits/sec
[ 2] 0.00-20.03 sec 2.17 GBytes 931 Mbits/sec
936+931 = 1867 Mbits/sec
**22.03.5**
eth0<->eth2
cpu 99% idle
[ 2] 0.00-20.01 sec 2.16 GBytes 927 Mbits/sec
[ 1] 0.00-20.05 sec 2.18 GBytes 935 Mbits/sec
927+935 = 1862 Mbits/sec
eth1<->eth2
cpu 99% idle
[ 2] 0.00-20.03 sec 2.17 GBytes 932 Mbits/sec
[ 1] 0.00-20.05 sec 2.18 GBytes 934 Mbits/sec
932+934 = 1866 Mbits/sec
99-20 = **79% increased cpu load**
1867-1139 = 728
728/1867*100 = **~39% performance loss**
### Expected behaviour
- Same high gigabit speed on eth0 <-> eth2 traffic as on eth1 <-> eth2 traffic.
- Same low cpu utilization on eth0 <-> eth2 traffic as on eth1 <-> eth2 traffic.
- No performance degradation from 22.03.5 to 23.05.0-rc4
### Additional info
_No response_
### Diffconfig
_No response_
### Terms
- [X] I am reporting an issue for OpenWrt, not an unsupported fork.
2 Likes
I understand the issue; I just don't think it is relevant outside of some highly artificial benchmarks.
1 Like
wired
November 2, 2025, 9:13pm
27
You are right, in practice I can just put a device on eth0 that sees very little traffic, e.g. a printer.
But I was also interested in learning how it all works and whether there are any easy config changes that can be made, without building a custom image. TIL bridger could be a useful package.
Confirming bridger works to reduce CPU usage.
Test system: ER-X configured as switch with eth0 through eth4 bridged to br-lan. Hardware flow offloading enabled.
When I do a file copy between between any of the ports eth1-4, there is no CPU usage when monitored by Realtime Graphs. On the other hand, a file copy involving eth0 results in significant CPU usage.
After installing bridger, a file copy involving eth0 also has no CPU usage.
Now my contention is who cares that there is a big CPU load when you saturate eth0. Most non-Openwrt switches, you can't easily monitor CPU usage, and you don't care.
Nonetheless, bridger clearly improves CPU efficiency for eth0 and it is worthwhile to install it, even if the real world benefits are rather minimal.
3 Likes
brada4
November 11, 2025, 1:45pm
29
Does it do wifi roaming between ports? (I dont know the answer)
wired
November 11, 2025, 5:29pm
30
There is no wifi on the ER-X, it’s a wired only router.
wired
November 11, 2025, 5:31pm
31
And if you are a bit careful and put a low traffic device on eth0, it doesn’t matter at all in practice.
brada4
November 11, 2025, 5:33pm
32
Whatever way you manage to move MAC address from one brodge port to another.
nftables has problems thete.
wired
November 11, 2025, 6:10pm
33
I do not understand what this means. Is nftables involved in what bridger does?
brada4
November 11, 2025, 7:12pm
34
It uses same "PPE" interface to copy packets from a to b...