Link to turned off computer does not reduce speed (depending on which router it is connected to)

With my previous (non-OpenWRT based) router, when my desktop was off, the link speed would get reduced to 10 Mb/s (since I actively use Wake-On-Lan, I need the interface to be on).

With my new GL-MT6000 however the interface on the computer and the rotuer stays at 2500 Mb/s. I tried moving the computer to one of the 1000 Mb/s ports and it stayed at the top speed of that port there as well.

My previous router only had gbit ports, but since using the gbit ports on the GL-MT6000 made no difference, I suspect that is not the problem.

UPDATE: Seems the computer only reduces link speed while off and waiting for WoL with some routers. The issue is not specific to OpenWRT or GL-MT6000. Other computers that I own reduce link speed in the same situation to either 10 mbit/s or 100 mbit/s (depending on computer). It is just my desktop that is weird and has router-dependant behaviour.

I'm not sure how to even start debugging this. I don't even know what feature it is that limits the link speed when the computer is off, so I don't know what to google.

I have looked around in ethtool and it seems the interface should support reduced speed. Below is the output with the attached computer turned off:

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

And below is the ethtool output on the computer itself (when turned on, naturally). (Yes I run all Linux). According to lspci it uses a "Intel Corporation Ethernet Controller I225-V (rev 03)".

❯ ethtool enp7s0
Settings for enp7s0:
	Supported ports: [ TP ]
	Supported link modes:   10baseT/Half 10baseT/Full
	                       100baseT/Half 100baseT/Full
	                       1000baseT/Full
	                       2500baseT/Full
	Supported pause frame use: Symmetric
	Supports auto-negotiation: Yes
	Supported FEC modes: Not reported
	Advertised link modes:  10baseT/Half 10baseT/Full
	                       100baseT/Half 100baseT/Full
	                       1000baseT/Full
	                       2500baseT/Full
	Advertised pause frame use: Symmetric
	Advertised auto-negotiation: Yes
	Advertised FEC modes: Not reported
	Speed: 2500Mb/s
	Duplex: Full
	Auto-negotiation: on
	Port: Twisted Pair
	PHYAD: 0
	Transceiver: internal
	MDI-X: off (auto)
	Supports Wake-on: pumbg
	Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
	Link detected: yes
  • Router: GL.iNet GL-MT6000
  • OpenWrt version: OpenWrt 23.05.5 r24106-10cc5fcd00 / LuCI openwrt-23.05 branch git-24.346.66847-1bb28ba
  • Kernel Version: 5.15.167

I never tested this on the OEM firmware of the GL-MT6000, I just switched to OpenWRT the first thing I did when I got this router.

I'm not sure what other information is relevant for troubleshooting, if something is missing, please tell me.

The WoL speed is controlled by client in WoL sleep, not other link end. Also check ethtool --show-eee speeds, that may add another restriction.

2 Likes

Your router neither knows, nor cares, about your client hibernating, it just does the normal link training to establish a connection at the maximum speed supported by both ends.

3 Likes

So far I fail to see what is your actual problem...
What does not work?
Does WoL still work?

(something may be different than with the previous router, yes, but what is actually broken now? )

2 Likes

@hnyman WoL still works, but the with the old router when the computer is off the link speed is dropped to 10 mbit/s, while with the new router the link speed stays at 2500 mbit/s. The issue is that a higher link speed means a higher power state, which uses more power when idle.

@brada4 So this is interesting:

On the computer

❯ ethtool --show-eee enp7s0 
EEE settings for enp7s0:
	EEE status: disabled
	Tx LPI: disabled
	Supported EEE link modes:  100baseT/Full
	                          1000baseT/Full
	                          2500baseT/Full
	Advertised EEE link modes:  Not reported
	Link partner advertised EEE link modes:  100baseT/Full
	                                        1000baseT/Full

On the router:

root@OpenWrt:~# ethtool --show-eee lan1
EEE Settings for lan1:
	EEE status: enabled - inactive
	Tx LPI: 30 (us)
	Supported EEE link modes:  100baseT/Full 
	                          1000baseT/Full 
	Advertised EEE link modes:  100baseT/Full 
	                           1000baseT/Full 
	Link partner advertised EEE link modes:  Not reported

So there seem to be two strange things going on here:

  • It seems that 2500 mbit/s is not advertised as an EEE speed by the router (but is by the computer). Not sure if that is related.
  • EEE is off by default (when in Linux at least) on the computer.

I can turn EEE on with --set-eee, but it goes away when the computer is turned off. This does show up on the router:

root@OpenWrt:~# ethtool --show-eee lan1
EEE Settings for lan1:
	EEE status: enabled - active
	Tx LPI: 30 (us)
	Supported EEE link modes:  100baseT/Full 
	                          1000baseT/Full 
	Advertised EEE link modes:  100baseT/Full 
	                           1000baseT/Full 
	Link partner advertised EEE link modes:  100baseT/Full 
	                                        1000baseT/Full 

Strangely enough the computer claims it is also advertising 2500mbit/s but that doesn't show up on the router in the "link partner" section?

This makes little sense to me, why would this work at all with the previous router then? I haven't done any UEFI updates on the computer since I switched router, so that can't be it (since the UEFI settings control WoL when the computer is off, I assume it would also control EEE settings?).

I should bring out the old router from the closet and see how the settings look on it (though I'm not sure if it has ethtool, it is an old Asus router running Merlin firmware, which is a modified stock firmware).[1]


  1. I could probably cross compile a version of ethtool to that ARM processor if need be, but hopefully it doesn't come to that. ↩ī¸Ž

No anomalies there.

1 Like

EEE is different than reducing link speed during sleep or hibernate. EEE reduces the signal voltage driven on the cable during normal operation, if the cable is shorter in length. The full signal voltage is only needed if the cable is near the maximum specified length of 100 meters.

1 Like

Eee not having high and low speeds means receiving side cannot blindly decode upper and lower rate lead-in yielding unnecessary up down

So I might have found a couple things. Apparently this controller has issues with EEE, so that is why it is probably off by default (maybe set by Linux, maybe by UEFI, I don't know).

However, that doesn't explain the difference in handling of the link speed while in WoL. I got out the old router again to double check, and I can confirm it goes into a lower link speed (10 mbit/s) while powered off, while it goes to the full link speed with the new GL.inet MT-6000.

EEE doesn't need to be on for this lowering of the link speed to happen.

I will try some more routers and switches I have around to see what the behaviour is.

1 Like

Try other network card, even older will do. The low speed WoL mode is programming netcard to receive just one special packet and shutting down main CPU. eee mode just illustrates one of reasons low speed link may fail, and seems intel drivers just avoid lowered speeds at all costs.

Try other network card, even older will do.

I'm not sure what you mean, this is the single ethernet port on this motherboard (Asus Strix B550-F Gaming Wifi). I don't have any PCI Express network cards unfortunately (I do believe I have a PCI 3Com card though, but this motherboard lacks PCI slots).

I could try a couple of laptops and turn on WoL in BIOS/UEFI and see how this work with different routers. I have never used WoL on those, so that will be interesting.

Give it a try, MT6000 claims to support all speeds on the wire, though lower speed not for eee, laptop with windows is certainly easy to operate test device.

I don't have anything with Windows on it. But this was interesting:

Desktop:

  • Desktop fails to enter low speed link with GL.inet MT-6000.
  • Desktop can enter low link speed with: Asus RT-AC68U, Netgear WNDR4300, an old TP-Link unmanaged switch. (10 mbit/s for all of them, according to the colour of the LED next to the jack on the motherboard).

Thinkpad R500 (a museum piece at this point, Core 2 Duo!):

  • Thinkpad R500 can enter low link speed with at least all the routers, including the GL.inet MT-6000. I can't tell with the switch since neither end changes colour for slow speeds.
    • However, with the GL.inet MT-6000 it only goes down to 100 mbit/s, not 10 mbit/s.

I also have a newer Thinkpad T480, but it is currently busy with a long running batch job that I don't want to abort. So I'll try it later (probably in a couple of days).

You can see link speed with ethtool or via luci gui.

I know, unfortunately not every router I have runs OpenWRT (or is even capable of it). And the unmanaged switch definitely isn't.

I could of course run ethtool on the computer side, except that we are looking at the link state when the computer is turned off, making this quite difficult.

I flashed OpenWRT (23.05) onto the Netgear WNDR4300. This made my desktop no longer go into low speed mode when turned off and connected to it. The old Thinkpad still goes into low speed link when off regardless of the firmware on that router.

Note: the Netgear WNDR4300 still uses swconfig, not DSA, so it seems I can't ethtool on it to see link speed, instead I had to use swconfig dev switch0 show.

That is all very interesting. So far it seems that issue is specifically between OpenWRT routers and my desktop UEFI and/or NIC. As to why that would be, I don't have a clue.

I'll try the modern Thinkpad as well, probably tomorrow (the long running batch job should be done then).

So I finally got around to trying the modern Thinkpad (T480) as well. And it appears the only computer with an issue is my desktop. And only together with specific routers.

I have no idea how to continue investigating it. So I'm probably just going let it be and let it run at full speed even while turned off and waiting for WoL, though if someone has an idea, please let me know.

So, nothing to do with OpenWRT or MT6000

Seems not, I'll update the title of the post. But it is strange that it depends on which router it is connected to.

You need to ask your netcard/mainboard mamufacturer. Not here.

1 Like