[BPI-R4] bad switch performance in upload

my problem that i reported is fixed:

100mbit voip phone:

root@OpenWrt:~# ethtool lan2
Settings for lan2:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        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/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	Link partner advertised pause frame use: Symmetric Receive-only
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 2
	Transceiver: external
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: d
	Wake-on: d
	Link detected: yes

my rpi5 (htpc) on lan1:

Settings for lan1:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        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/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	                                     1000baseT/Half 1000baseT/Full 
	Link partner advertised pause frame use: Transmit-only
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 1
	Transceiver: external
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: d
	Wake-on: d
	Link detected: yes

dangowrt mentioned that some link partners might have problems, but i assume its something different then what i reported because i had problems on client side. guillo seems to have problems on all lan ports after using that 100mbit device?

Yes when a 100Mbits device is connected all the ports are limit to 100Mbits in upload (device to router)

@frank-w i’m on the latest snapshot

That would be bad and should probably be considered a bug. If you have one 100 Mbit device plugged into the switch, you’d normally expect other devices to still run a 1Gbit if they are capable.

who all have this issue can you please show ethtool like @oli did for the port having a 1G client while having 100M client on another port? just to nail this a bit down (advertisement issue should be fixed, but maybe it is another one)

@oli can you do 1G bidirectional traffic to the rpi5?

i dont know how, the rpi5 is running libreelec and i have no idea if they have an iper3 package. any idea how to verify that?

You can use also another device,just to make sure you can have ~940mbit/s bidirectional while havin the 100m device connected

i will see if i can plug in the laptop tomorrow. i have no other device - all are connected by wifi, only the rpi5 is connected with a cable.

Hello,

This is the data when 100M device is connected (on lan2):

Settings for lan2:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        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/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	Link partner advertised pause frame use: Symmetric
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 100Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 2
	Transceiver: external
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: d
	Wake-on: d
	Link detected: yes
Settings for lan3:
	Supported ports: [ TP MII ]
	Supported link modes:   10baseT/Half 10baseT/Full 
	                        100baseT/Half 100baseT/Full 
	                        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/Full 
	Advertised pause frame use: Symmetric Receive-only
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Link partner advertised link modes:  10baseT/Half 10baseT/Full 
	                                     100baseT/Half 100baseT/Full 
	                                     1000baseT/Half 1000baseT/Full 
	Link partner advertised pause frame use: Symmetric Receive-only
	Link partner advertised auto-negotiation: Yes
	Link partner advertised FEC modes: Not reported
	Speed: 1000Mb/s
	Duplex: Full
	Port: Twisted Pair
	PHYAD: 3
	Transceiver: external
	Auto-negotiation: on
	MDI-X: Unknown
	Supports Wake-on: d
	Wake-on: d
	Link detected: yes

And an iperf from lan3 (a rpi4) to the R4 when 100M is connected

Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.8 port 55098 connected to 192.168.1.1 port 5201
[  7] local 192.168.1.8 port 55106 connected to 192.168.1.1 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-1.00   sec  11.0 MBytes  92.0 Mbits/sec    0    263 KBytes       
[  7][RX-C]   0.00-1.00   sec  72.4 MBytes   607 Mbits/sec                  
[  5][TX-C]   1.00-2.00   sec  9.07 MBytes  76.1 Mbits/sec    0    310 KBytes       
[  7][RX-C]   1.00-2.00   sec   111 MBytes   932 Mbits/sec                  
[  5][TX-C]   2.00-3.00   sec  8.70 MBytes  73.0 Mbits/sec    0    310 KBytes       
[  7][RX-C]   2.00-3.00   sec   112 MBytes   940 Mbits/sec                  
[  5][TX-C]   3.00-4.00   sec  8.33 MBytes  69.9 Mbits/sec    0    310 KBytes       
[  7][RX-C]   3.00-4.00   sec   112 MBytes   940 Mbits/sec                  
[  5][TX-C]   4.00-5.00   sec  8.45 MBytes  70.9 Mbits/sec    0    310 KBytes       
[  7][RX-C]   4.00-5.00   sec   111 MBytes   933 Mbits/sec                  
[  5][TX-C]   5.00-6.00   sec  8.33 MBytes  69.8 Mbits/sec    0    310 KBytes       
[  7][RX-C]   5.00-6.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   6.00-7.00   sec  9.88 MBytes  82.9 Mbits/sec    0    331 KBytes       
[  7][RX-C]   6.00-7.00   sec   112 MBytes   940 Mbits/sec                  
[  5][TX-C]   7.00-8.00   sec  8.33 MBytes  69.9 Mbits/sec    0    331 KBytes       
[  7][RX-C]   7.00-8.00   sec   112 MBytes   940 Mbits/sec                  
[  5][TX-C]   8.00-9.00   sec  8.95 MBytes  75.1 Mbits/sec    0    331 KBytes       
[  7][RX-C]   8.00-9.00   sec   112 MBytes   938 Mbits/sec                  
[  5][TX-C]   9.00-10.00  sec  8.26 MBytes  69.3 Mbits/sec    0    331 KBytes       
[  7][RX-C]   9.00-10.00  sec   111 MBytes   931 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-10.00  sec  89.3 MBytes  74.9 Mbits/sec    0             sender
[  5][TX-C]   0.00-10.00  sec  87.8 MBytes  73.6 Mbits/sec                  receiver
[  7][RX-C]   0.00-10.00  sec  1.06 GBytes   907 Mbits/sec    0             sender
[  7][RX-C]   0.00-10.00  sec  1.05 GBytes   904 Mbits/sec                  receiver

If you need something else you can ask me.

1 Like

Looks like it is a tx issue from client pov (dsa receive,tx to mac)

So it is not the same bug as before ?

i have indeed the same problem:

oli@DESKTOP-RA0V02P:~$ iperf3 -c 192.168.1.1 --bidir
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.225 port 56022 connected to 192.168.1.1 port 5201
[  7] local 192.168.1.225 port 56032 connected to 192.168.1.1 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-1.00   sec  12.9 MBytes   108 Mbits/sec    0    366 KBytes       
[  7][RX-C]   0.00-1.00   sec  66.4 MBytes   556 Mbits/sec                  
[  5][TX-C]   1.00-2.00   sec  11.1 MBytes  93.3 Mbits/sec    0    431 KBytes       
[  7][RX-C]   1.00-2.00   sec   111 MBytes   930 Mbits/sec                  
[  5][TX-C]   2.00-3.00   sec  11.8 MBytes  98.6 Mbits/sec    0    431 KBytes       
[  7][RX-C]   2.00-3.00   sec   111 MBytes   934 Mbits/sec                  
[  5][TX-C]   3.00-4.00   sec  10.8 MBytes  90.2 Mbits/sec    0    431 KBytes       
[  7][RX-C]   3.00-4.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   4.00-5.00   sec  10.8 MBytes  90.2 Mbits/sec    0    431 KBytes       
[  7][RX-C]   4.00-5.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   5.00-6.00   sec  10.9 MBytes  91.2 Mbits/sec    0    431 KBytes       
[  7][RX-C]   5.00-6.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   6.00-7.00   sec  11.6 MBytes  97.5 Mbits/sec    0    431 KBytes       
[  7][RX-C]   6.00-7.00   sec   112 MBytes   942 Mbits/sec                  
[  5][TX-C]   7.00-8.00   sec  11.0 MBytes  92.3 Mbits/sec    0    431 KBytes       
[  7][RX-C]   7.00-8.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    458 KBytes       
[  7][RX-C]   8.00-9.00   sec   112 MBytes   941 Mbits/sec                  
[  5][TX-C]   9.00-10.00  sec  10.5 MBytes  88.1 Mbits/sec    0    458 KBytes       
[  7][RX-C]   9.00-10.00  sec   112 MBytes   938 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-10.00  sec   112 MBytes  94.4 Mbits/sec    0             sender
[  5][TX-C]   0.00-10.02  sec   111 MBytes  92.8 Mbits/sec                  receiver
[  7][RX-C]   0.00-10.00  sec  1.05 GBytes   904 Mbits/sec    0             sender
[  7][RX-C]   0.00-10.02  sec  1.05 GBytes   898 Mbits/sec                  receiver

iperf Done.
oli@DESKTOP-RA0V02P:~$ iperf3 -c 192.168.1.1 
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.225 port 52952 connected to 192.168.1.1 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  12.4 MBytes   104 Mbits/sec    0    240 KBytes       
[  5]   1.00-2.00   sec  11.2 MBytes  94.4 Mbits/sec    0    240 KBytes       
[  5]   2.00-3.00   sec  11.1 MBytes  93.3 Mbits/sec    0    250 KBytes       
[  5]   3.00-4.00   sec  11.2 MBytes  94.4 Mbits/sec    0    250 KBytes       
[  5]   4.00-5.00   sec  11.2 MBytes  94.4 Mbits/sec    0    262 KBytes       
[  5]   5.00-6.00   sec  11.2 MBytes  94.4 Mbits/sec    0    264 KBytes       
[  5]   6.00-7.00   sec  11.4 MBytes  95.4 Mbits/sec    0    264 KBytes       
[  5]   7.00-8.00   sec  11.2 MBytes  94.4 Mbits/sec    0    264 KBytes       
[  5]   8.00-9.00   sec  11.2 MBytes  94.4 Mbits/sec    0    264 KBytes       
[  5]   9.00-10.00  sec  11.1 MBytes  93.3 Mbits/sec    0    264 KBytes       
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   114 MBytes  95.2 Mbits/sec    0             sender
[  5]   0.00-10.02  sec   112 MBytes  94.2 Mbits/sec                  receiver

iperf Done.

after ethtool -A wan autoneg off rx off tx off (i use wan as i plugged in my workstation in the first rj45 port) i get:

oli@DESKTOP-RA0V02P:~$ iperf3 -c 192.168.1.1 --bidir
Connecting to host 192.168.1.1, port 5201
[  5] local 192.168.1.225 port 38498 connected to 192.168.1.1 port 5201
[  7] local 192.168.1.225 port 38512 connected to 192.168.1.1 port 5201
[ ID][Role] Interval           Transfer     Bitrate         Retr  Cwnd
[  5][TX-C]   0.00-1.00   sec   115 MBytes   967 Mbits/sec    2    523 KBytes       
[  7][RX-C]   0.00-1.00   sec   109 MBytes   916 Mbits/sec                  
[  5][TX-C]   1.00-2.00   sec   112 MBytes   937 Mbits/sec    0    594 KBytes       
[  7][RX-C]   1.00-2.00   sec   112 MBytes   937 Mbits/sec                  
[  5][TX-C]   2.00-3.00   sec   112 MBytes   938 Mbits/sec    0    618 KBytes       
[  7][RX-C]   2.00-3.00   sec   112 MBytes   937 Mbits/sec                  
[  5][TX-C]   3.00-4.00   sec   112 MBytes   937 Mbits/sec    0    622 KBytes       
[  7][RX-C]   3.00-4.00   sec   112 MBytes   937 Mbits/sec                  
[  5][TX-C]   4.00-5.00   sec   112 MBytes   938 Mbits/sec    0    631 KBytes       
[  7][RX-C]   4.00-5.00   sec   112 MBytes   938 Mbits/sec                  
[  5][TX-C]   5.00-6.00   sec   112 MBytes   944 Mbits/sec    0    636 KBytes       
[  7][RX-C]   5.00-6.00   sec   112 MBytes   937 Mbits/sec                  
[  5][TX-C]   6.00-7.00   sec   112 MBytes   935 Mbits/sec    0    638 KBytes       
[  7][RX-C]   6.00-7.00   sec   112 MBytes   938 Mbits/sec                  
[  5][TX-C]   7.00-8.00   sec   112 MBytes   937 Mbits/sec    0    649 KBytes       
[  7][RX-C]   7.00-8.00   sec   111 MBytes   930 Mbits/sec                  
[  5][TX-C]   8.00-9.00   sec   113 MBytes   947 Mbits/sec    0    662 KBytes       
[  7][RX-C]   8.00-9.00   sec   111 MBytes   933 Mbits/sec                  
[  5][TX-C]   9.00-10.00  sec   112 MBytes   939 Mbits/sec    0    665 KBytes       
[  7][RX-C]   9.00-10.00  sec   112 MBytes   938 Mbits/sec                  
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID][Role] Interval           Transfer     Bitrate         Retr
[  5][TX-C]   0.00-10.00  sec  1.10 GBytes   942 Mbits/sec    2             sender
[  5][TX-C]   0.00-10.00  sec  1.09 GBytes   939 Mbits/sec                  receiver
[  7][RX-C]   0.00-10.00  sec  1.09 GBytes   936 Mbits/sec    0             sender
[  7][RX-C]   0.00-10.00  sec  1.09 GBytes   934 Mbits/sec                  receiver

iperf Done.

so seems like i was not having this problem anymore because i was using eth1 (sfp-rj45 adapter) to connect my workstation. so this bug is still open then

@guillomep @oli

Skimmed through the thread. If I read it correctly, when you have one client (A) physically limited to 100Mbps and connected to R4’s switch. A second client (B) capable of 1Gbps and connected to R4’s switch. The problem is client B will transmit at 100Mbps instead of 1Gbps.

If you have a third client (C, say Win PC) capable to 1Gbps. Could you test: set client C to limit by software to 100Mbps. Connect client C to R4’s switch in place of client A. Now for client B, does it still only able to transmit at 100Mbps ?

whats the purpose of this test? i dont want to mess around anymore with my ethernet cable (from/to my workstation) as its already so fcked that i often lose connection. so if you are a developer and need this for figuring out whats going on, i am willing to mess around with my cables or get the laptop from the basement with another cable. but if not, dont get me wrong, i dont want to test that. maybe guillomep want to give this a try. also, for me it makes no sense why it should behave any different when i set a client to 100mbit and plug it into an “old” 100mbit port.

The goal of my suggested experiment is to narrow down the scope of the problem.

I had old wifi AP running during my tests and tuning ac/x hostapd on R4. This old AP have only 100Mbps eth, and there was really all other RJ45 eth communication only on 100Mbps.

I realized that I had all LAN ports bridged together. Whenever I removed the 100Mbps LAN3 from the bridge and set a subnet on it and added routing, all other LAN ports communicated on 1Gbps as expected. I do not know if it is bug or not, but it looks like bridge is as fast as the port with lowest speed.

disable autonegotiation and see if that fixes it. if yes (what i assume), its a known bug.

Interesting detail that this issue only exists if lan-ports bridged.

Disabling autoneg is only a way to check if it is related,should be fixed if we know rootcause

The possible bug should be in mtk_eth_soc.c

I’m not familiar enough to make any guess. But if I were, I would look at when a cable is plugged into one port of the switch, what routines are triggered and speed set. Then check if something else is wrongly set in the possible ‘rogue’ function…