Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Revert "ethernet: T5566: disable energy efficient ethernet (EEE) for interfaces" (backport #3177) #3178

Merged
merged 1 commit into from
Mar 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 0 additions & 24 deletions python/vyos/ethtool.py
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
_drivers_without_speed_duplex_flow = ['vmxnet3', 'virtio_net', 'xen_netfront',
'iavf', 'ice', 'i40e', 'hv_netvsc', 'veth', 'ixgbevf',
'tun']
_drivers_without_eee = ['vmxnet3', 'virtio_net', 'xen_netfront', 'hv_netvsc']

class Ethtool:
"""
Expand Down Expand Up @@ -63,8 +62,6 @@ class Ethtool:
_auto_negotiation = False
_auto_negotiation_supported = None
_flow_control = None
_eee = False
_eee_enabled = None

def __init__(self, ifname):
# Get driver used for interface
Expand Down Expand Up @@ -118,15 +115,6 @@ def __init__(self, ifname):
if not bool(err):
self._flow_control = loads(out)

# Get current Energy Efficient Ethernet (EEE) settings, but this is
# not supported by all NICs (e.g. vmxnet3 does not support is)
out, _ = popen(f'ethtool --show-eee {ifname}')
if len(out.splitlines()) > 1:
self._eee = True
# read current EEE setting, this returns:
# EEE status: disabled || EEE status: enabled - inactive || EEE status: enabled - active
self._eee_enabled = bool('enabled' in out.splitlines()[1])

def check_auto_negotiation_supported(self):
""" Check if the NIC supports changing auto-negotiation """
return self._auto_negotiation_supported
Expand Down Expand Up @@ -211,15 +199,3 @@ def get_flow_control(self):
'flow-control settings!')

return 'on' if bool(self._flow_control[0]['autonegotiate']) else 'off'

def check_eee(self):
""" Check if the NIC supports eee """
if self.get_driver_name() in _drivers_without_eee:
return False
return self._eee

def get_eee(self):
if self._eee_enabled == None:
raise ValueError('Interface does not support changing '\
'EEE settings!')
return self._eee_enabled
31 changes: 0 additions & 31 deletions python/vyos/ifconfig/ethernet.py
Original file line number Diff line number Diff line change
Expand Up @@ -404,34 +404,6 @@ def set_ring_buffer(self, rx_tx, size):
print(f'could not set "{rx_tx}" ring-buffer for {ifname}')
return output

def set_eee(self, enable):
"""
Enable/Disable Energy Efficient Ethernet (EEE) settings

Example:
>>> from vyos.ifconfig import EthernetIf
>>> i = EthernetIf('eth0')
>>> i.set_eee(enable=False)
"""
if not isinstance(enable, bool):
raise ValueError('Value out of range')

if not self.ethtool.check_eee():
self._debug_msg(f'NIC driver does not support changing EEE settings!')
return False

current = self.ethtool.get_eee()
if current != enable:
# Assemble command executed on system. Unfortunately there is no way
# to change this setting via sysfs
cmd = f'ethtool --set-eee {self.ifname} eee '
cmd += 'on' if enable else 'off'
output, code = self._popen(cmd)
if code:
Warning(f'could not change "{self.ifname}" EEE setting!')
return output
return None

def update(self, config):
""" General helper function which works on a dictionary retrived by
get_config_dict(). It's main intention is to consolidate the scattered
Expand All @@ -442,9 +414,6 @@ def update(self, config):
value = 'off' if 'disable_flow_control' in config else 'on'
self.set_flow_control(value)

# Always disable Energy Efficient Ethernet
self.set_eee(False)

# GRO (generic receive offload)
self.set_gro(dict_search('offload.gro', config) != None)

Expand Down
Loading