Page MenuHomeVyOS Platform

Be able to disable 802.3az/EEE (energy efficient ethernet) for a particular interface
Known issue, NormalPublicFEATURE REQUEST

Description

When it comes to 802.3az/EEE aka "Green Ethernet" there are basically two flavours on how to reduce the powerconsumption of a network device (specially when more than a few interfaces are being used):

  • Powersaving of the PHY being used. Similar to how HLT-instructions are used on x86 CPU's to lower powerconsumption when there is nothing to do (or in the PHY case the time when there are no packets to be received or sent).
  • For RJ45 interfaces adjust powerlevel to the detected cablelength. A TP-cable that is 2 meter in length will need less power to push the signaling through compared to a TP-cable that is say 80 meter in length.

Its not uncommon that these settings (EEE) nowadays are enabled by default.

However they are known to from time to time cause issues.

For example wired apple products are known to have issues with network switches/routers who does EEE where the workaround is to disable this for the particular interface. And there are other vendors/models where EEE needs to be disabled for them to function properly.

This can be manually done using ethtool (example below) but it would be handy if this could be part of set interfaces ethernet ethX aswell.

sudo ethtool --set-eee <NIC> eee off

It might also work to disable this system wide by adding this to the grub.cfg (kernel cmdline):

EEE=0

HPE Comware use this as command on interface-level to enable EEE (by default disabled):

port auto-power-down

Details

Difficulty level
Normal (likely a few hours)
Version
1.4.0-rc1
Why the issue appeared?
Will be filled on close
Is it a breaking change?
Unspecified (possibly destroys the router)
Issue type
Feature (new functionality)

Event Timeline

Maintainers agreed that we will disable EEE by default - we are a router pushing packets.

Code will be added soon

I think its a bit odd to completely disable EEE where the solution would be to disable EEE by default but having the config option to adjust for EEE if wanted.

All routers I have played with lately supports EEE (even from enterprise brands) so that argument seems a bit stale ("disabled because we are a router pushing packets).

c-po changed the task status from Open to In progress.Dec 25 2023, 4:52 PM
c-po triaged this task as Normal priority.
c-po added a project: VyOS 1.4 Sagitta.
c-po changed Difficulty level from Unknown (require assessment) to Normal (likely a few hours).
c-po changed Version from - to 1.4.0-rc1.
c-po moved this task from Need Triage to Finished on the VyOS 1.5 Circinus board.
c-po moved this task from Need Triage to Finished on the VyOS 1.4 Sagitta board.

Using igb.EEE=0 or EEE=0 on the kernel commandline has no effect

To clearify:

By disabling/enabling EEE I meant per interface similar to how HPE Comware does it with port auto-power-down which enables EEE when needed (EEE is disabled by default on HPE Comware devices).

Reopened with status "Known issue" due to revert by PR 3177.

disabling it on a per interface basis will still crash the OS if the register read/write is implemented improperly.

Users can add custom post hooks to call ethtool to disable EEE if it's working on their hardware.
As VyOS is a generic OS it's very hard to test all hardware

Sure but if the function "port auto-power-down" is mapped to the ethtool function of disabling EEE then it should be safe?

I mean it would crash if you run ethtool manually anyway wouldnt it?

c-po removed c-po as the assignee of this task.Mar 26 2024, 6:15 AM