Dumb AP: plugging in a 100Base eth device limits wifi to 100Mbps internet speed

1 Like

What cat lan cable do you use for connection between router?
If you are using below cat 5e, then you will only get 100Mbps speed.

Make sure you're using minumum cat 5e or use Cat 6 for all LAN cable.

The test I did between routers directly gives me over 500Mbps. The negotiated speed between them at the ethernet level is 1000Mbps.

OK, I figured out something that can lead to the solution.

On the wifi AP, there is also a ooma device connected to one of the ethernet ports. The ooma device is a 100Mbps ethernet connection as reported by openwrt. As soon as I disconnected the Ooma, I was able to get consistently between 300-400Mbps to the internet in the wifi devices.

So, in summary, it seems like if the 100Mbps in the Ooma device was forcing the openwrt bridge to 100Mbps traffic, but only affecting traffic with IPs that were not in the same subnet (towards the Internet). Traffic within the same subnet, crossing the wifi ap into the main router to wired computers was giving a good throughput > 300Mbps.

I don't understand why such behavior.

This is the output of ip link. I wonder if it has to do with the queuing discipline setup.

ip link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether da:89:ff:08:10:d2 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 16:23:82:9d:7e:44 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
5: lan1@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
6: lan2@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
7: lan3@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
8: lan4@eth2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue master br-lan state LOWERLAYERDOWN qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
9: wan@eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br-lan state UP qlen 1000
    link/ether 78:d2:94:0e:04:c2 brd ff:ff:ff:ff:ff:ff
10: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-lan state UP qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff
11: wlan1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-lan state UP qlen 1000
    link/ether 78:d2:94:0e:04:c0 brd ff:ff:ff:ff:ff:ff
12: wlan2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br-lan state UP qlen 1000
    link/ether 78:d2:94:0e:04:bf brd ff:ff:ff:ff:ff:ff
15: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 78:d2:94:0e:04:c1 brd ff:ff:ff:ff:ff:ff

This is the ip link output of my main router:

ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 64:62:66:21:cb:eb brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP qlen 1000
    link/ether 64:62:66:21:cb:ec brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP qlen 1000
    link/ether 64:62:66:21:cb:ed brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br-lan state UP qlen 1000
    link/ether 64:62:66:21:cb:ee brd ff:ff:ff:ff:ff:ff
6: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
    link/ether 64:62:66:21:cb:ec brd ff:ff:ff:ff:ff:ff

All ethX devices have a qdisc set, and it is mq.

However, in the wifi ap, the lan1-4 do not have any qdisc, but eth2 has one.

You can check LAN speed on br-lan interface

Or go to Network -> Switch

Thank you @alphamatic for the feedback, but that’s not the problem. Please see my previous posts.
I have updated the title of this thread to clarify the issue I am seeing at this point.

1 Like

I'm starting to think there is a bug in the switch driver. This should not be happening. That 100BASE device shouldn't be downgrading the entire bridge speed to 100Mbps even for the wifi devices.

cat /etc/config/wireless
cat /etc/config/network
  • Is Packet Steering enabled?

Are you saying local tests where >300 Mbps, and tests via the Internet were 100 Mbps?

I notice you never tell us the links speed of ports:

cat /sys/class/net/eth0/speed 
cat /sys/class/net/eth1/speed 
cat /sys/class/net/eth2/speed 
cat /sys/class/net/lan1/speed 
cat /sys/class/net/lan2/speed 
cat /sys/class/net/lan3/speed 
cat /sys/class/net/lan4/speed 
cat /sys/class/net/wan/speed 
cat /sys/class/net/br_lan/speed

I don't see any steering option setup in the wireless file, but I do see it in the network file:

config globals 'globals'
	option packet_steering '1'
	option ula_prefix 'fdc6:15c1:ebac::/48'

That is correct. The br-lan has the switch (lan1-4) and also had the wan port. The wan port was the one connected to the main router until last night. Last night I removed wan from the bridge and connected lan4 to the main router to see if it would do anything new, but I'm still seeing the same weird behavior: local testing crossing the wifi ap gives me 300-400Mbps, ... wifi device internet speed testing, 100Mbps, all wired computers 940Mpbs. I remove the ooma, and the wifi device internet speed testing goes back to 300-400Mbps (or even 500Mbps if I'm right beside the wifi ap).

# cat /sys/class/net/eth0/speed 
cat: read error: Invalid argument
# cat /sys/class/net/eth1/speed 
cat: read error: Invalid argument
# cat /sys/class/net/eth2/speed 
1000
# cat /sys/class/net/lan1/speed 
100
# cat /sys/class/net/lan2/speed 
-1
# cat /sys/class/net/lan3/speed 
-1
# cat /sys/class/net/lan4/speed 
1000
# cat /sys/class/net/wan/speed 
cat: read error: Invalid argument
# cat /sys/class/net/br-lan/speed
1000

lan1-4 are pointing to the eth2 device. lan1 has the 100BASE ooma device, and lan4 is connected to the main router.

Not sure if relevant but the flow control in lan1 where the ooma is, is off, so the speed is negotiated. The lan4 where the main router is, flow control is on.

# ethtool -a lan1
Pause parameters for lan1:
Autonegotiate:	on
RX:		off
TX:		off
RX negotiated:	off
TX negotiated:	off

Thank you @lleachii for looking into this.

Logs when plugging in the ooma eth device:

Tue Aug  1 14:06:57 2023 kern.info kernel: [71473.208891] b53-srab-switch 18007000.ethernet-switch lan1: Link is Up - 100Mbps/Full - flow control off
Tue Aug  1 14:06:57 2023 kern.info kernel: [71473.218367] br-lan: port 1(lan1) entered blocking state
Tue Aug  1 14:06:57 2023 kern.info kernel: [71473.223612] br-lan: port 1(lan1) entered forwarding state
Tue Aug  1 14:06:57 2023 daemon.notice netifd: Network device 'lan1' link is up
Tue Aug  1 14:21:25 2023 kern.info kernel: [72341.594383] b53-srab-switch 18007000.ethernet-switch lan1: Link is Down
Tue Aug  1 14:21:25 2023 kern.info kernel: [72341.601091] br-lan: port 1(lan1) entered disabled state
Tue Aug  1 14:21:25 2023 daemon.notice netifd: Network device 'lan1' link is down
Tue Aug  1 14:50:18 2023 kern.info kernel: [74074.206545] b53-srab-switch 18007000.ethernet-switch lan1: Link is Up - 100Mbps/Full - flow control off
Tue Aug  1 14:50:18 2023 kern.info kernel: [74074.216031] br-lan: port 1(lan1) entered blocking state
Tue Aug  1 14:50:18 2023 kern.info kernel: [74074.221279] br-lan: port 1(lan1) entered forwarding state
Tue Aug  1 14:50:18 2023 daemon.notice netifd: Network device 'lan1' link is up

I did also a sar -n EDEV,DEV 1 while testing an nothing suspicious:

Average:        IFACE   rxpck/s   txpck/s    rxkB/s    txkB/s   rxcmp/s   txcmp/s  rxmcst/s   %ifutil
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth2   3573.75   5198.88   3143.62   5496.17      0.00      0.00      0.00      4.50
Average:         lan1      0.06      0.00      0.02      0.00      0.00      0.00      0.00      0.00
Average:         lan2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan4   3573.69   5198.88   3080.78   5475.71      0.00      0.00      0.00      4.49
Average:          wan      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        wlan0      0.12      1.06      0.01      0.16      0.00      0.00      0.00      0.00
Average:        wlan1      0.00      0.97      0.00      0.16      0.00      0.00      0.00      0.00
Average:        wlan2   5175.94   3553.63   5394.00   3128.35      0.00      0.00      0.00      0.00
Average:        teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:       br-lan     21.00     20.47      1.17     10.79      0.00      0.00      0.91      0.00

Average:        IFACE   rxerr/s   txerr/s    coll/s  rxdrop/s  txdrop/s  txcarr/s  rxfram/s  rxfifo/s  txfifo/s
Average:           lo      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         eth2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan3      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:         lan4      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:          wan      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        wlan0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        wlan1      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        wlan2      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:        teql0      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00
Average:       br-lan      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00      0.00

Routing with in the AP:

# ip route show
default via 192.168.210.1 dev br-lan 
192.168.210.0/24 dev br-lan scope link  src 192.168.210.2 

Looking for any tracing tools to trace the network stack. ftrace doesn't seem to be available.

I wonder if I'm also looking in the wrong place, and I should be looking into the main router. However, I see nothing in the main router that could be affected by connecting a 100BASE device to the wifi ap.

OK, this is new info. lan4 is the interface on the eth2 device, which is where the main router is connected to.

When I do the internet speed test with the 100BASE device plugged in, the TX pauses counter increases:

# ethtool -S lan4 | grep Pause
     TxPausePkts: 93690
     RxPausePkts: 2544
# ethtool -S lan4 | grep Pause
     TxPausePkts: 98907
     RxPausePkts: 2544
# ethtool -S lan4 | grep Pause
     TxPausePkts: 101225
     RxPausePkts: 2544
# ethtool -S lan4 | grep Pause
     TxPausePkts: 103507
     RxPausePkts: 2544
# ethtool -S lan4 | grep Pause
     TxPausePkts: 105751
     RxPausePkts: 2544
# ethtool -S lan4 | grep Pause
     TxPausePkts: 106400
     RxPausePkts: 2544

When I unplug the 100BASE device and run the same internet test, there are no pauses at all.

So the throttling seems to be happening with pause frame?

The same is observed on the main router, the flow control counters go up when the 100BASE device is plugged into the wifi AP, but doesn't move when it is unplugged.

# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 178635
     rx_flow_control_xoff: 178635
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 178635
     rx_flow_control_xoff: 178635
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 179772
     rx_flow_control_xoff: 179773
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 180536
     rx_flow_control_xoff: 180537
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 181245
     rx_flow_control_xoff: 181246
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 181859
     rx_flow_control_xoff: 181860
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 182544
     rx_flow_control_xoff: 182544
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 183478
     rx_flow_control_xoff: 183479
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 184356
     rx_flow_control_xoff: 184357
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 184933
     rx_flow_control_xoff: 184934
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
# ethtool -S eth2 | grep flow_control
     rx_flow_control_xon: 185148
     rx_flow_control_xoff: 185148
     tx_flow_control_xon: 3046
     tx_flow_control_xoff: 3044
1 Like

You are not using one of the devices where the switch acts as hub, thereby sending the wrong packets to ports?

Good question. The “switch” I am referring to is just the hardware inside the R8000, and from the openwrt standpoint appears like a switch.
I have no switch in between the wifi ap and the main router, or in between the ooma 100BASE device and the wifi ap.

Im not sure if you read about it, but I read somewhere on this forum that there were some devices where the switch acted as hub in the 22.03 branch. Maybe look into that?

Like this one?

The fix is in kernel 5.15 according to that thread. 22.03.5 still has 5.10.

1 Like

If this is a switch issue, why it only affect wifi connection not affecting the lan port?

If it's because the kernel issue, you might try to upgrade it to 23.05-rc2 or a snapshot version to check if it still appear.

What is this ooma device function? It is possible to login to device and set the port configuration on ooma? It has a built in wifi on that device? Have you try to connect ooma device direct to ONT and see the issue?

Exactly, it is a very weird bug. However, since it is a software bug, it is possible that it acts like a hub when some condition is true, but not on every situation.

What I'm planning to do is to simply get a separate switch to connect the Ooma and another 100BASE device I have to connect directly to the main router (got no ports left there :smiley: ), and not use any of the lan port of the netgear router. The other 100BASE device I have is currently connected directly to the main router, ... no issues there.

Ooma is a home phone device for VoIP that goes over ethernet. I don't think I can get inside to do anything with it.

Thank you for looking into this @alphamatic.

You can try separate it with another device such as GE/FE switch/hub. To add more ports.

Another try is to use lan port on the modem fiber (ONT) from your ISP, you can try to put ooma there on the modem lan port and see if the issue still appear.

23.05-rc2 and snapshot is using 5.15 kernel, you can try to upgrade if you have time to do in your spare time. Fallback to current firmware at anytime if you feel not ok.

1 Like

Yup, I will be doing that :slight_smile:

The ooma is an ethernet device. The devices with low internet speed over wifi were my smartphone and my laptop. The ooma per-se doesn't have any issue to the internet. For now, I'm just keeping the ooma disconnected to allow my wifi devices have full internet speed.

Thank you!

1 Like