diff options
| author | Christian Breunig <christian@breunig.cc> | 2024-03-03 20:24:46 +0100 | 
|---|---|---|
| committer | Christian Breunig <christian@breunig.cc> | 2024-03-03 21:02:11 +0100 | 
| commit | 5ee89f46096626ca8aac37da9237635e3d17766a (patch) | |
| tree | 4f158f2e6f910f0ee136edc27b9762aeeb6e1449 /python | |
| parent | 63ccdc5125e19f8737bf1445938998bef803d1bd (diff) | |
| download | vyos-1x-5ee89f46096626ca8aac37da9237635e3d17766a.tar.gz vyos-1x-5ee89f46096626ca8aac37da9237635e3d17766a.zip | |
vyos.ethtool: T6083: use JSON input data for ethernet interface flow-control settings
Diffstat (limited to 'python')
| -rw-r--r-- | python/vyos/ethtool.py | 21 | 
1 files changed, 8 insertions, 13 deletions
| diff --git a/python/vyos/ethtool.py b/python/vyos/ethtool.py index ccbb97ad4..473c98d0c 100644 --- a/python/vyos/ethtool.py +++ b/python/vyos/ethtool.py @@ -62,8 +62,7 @@ class Ethtool:      _driver_name = None      _auto_negotiation = False      _auto_negotiation_supported = None -    _flow_control = False -    _flow_control_enabled = None +    _flow_control = None      _eee = False      _eee_enabled = None @@ -115,12 +114,9 @@ class Ethtool:          # Get current flow control settings, but this is not supported by          # all NICs (e.g. vmxnet3 does not support is) -        out, _ = popen(f'ethtool --show-pause {ifname}') -        if len(out.splitlines()) > 1: -            self._flow_control = True -            # read current flow control setting, this returns: -            # ['Autonegotiate:', 'on'] -            self._flow_control_enabled = out.splitlines()[1].split()[-1] +        out, err = popen(f'ethtool --json --show-pause {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) @@ -207,15 +203,14 @@ class Ethtool:      def check_flow_control(self):          """ Check if the NIC supports flow-control """ -        if self.get_driver_name() in _drivers_without_speed_duplex_flow: -            return False -        return self._flow_control +        return bool(self._flow_control)      def get_flow_control(self): -        if self._flow_control_enabled == None: +        if self._flow_control == None:              raise ValueError('Interface does not support changing '\                               'flow-control settings!') -        return self._flow_control_enabled + +        return 'on' if bool(self._flow_control[0]['autonegotiate']) else 'off'      def check_eee(self):          """ Check if the NIC supports eee """ | 
