diff options
author | Christian Poessinger <christian@poessinger.com> | 2019-11-10 22:44:32 +0100 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2019-11-10 22:44:49 +0100 |
commit | 9e49477700647a390bebc18c02e6ce735d740e0c (patch) | |
tree | 64b75f36d06fe52fafa81ae0620e2f0967032f7a | |
parent | a1611eb01dd117d9dce6571cb27bac94481fa753 (diff) | |
download | vyos-1x-9e49477700647a390bebc18c02e6ce735d740e0c.tar.gz vyos-1x-9e49477700647a390bebc18c02e6ce735d740e0c.zip |
ifconfig: T1793: add delta check on set_speed_duplex()
The speend and duplex settings should only be changed when they need to.
Always configuring this setting will make the kernel disable and re-enable the
physical interface. This will not only let the switchport flap but it will also
reset e.g. BGP sessions.
This is the first part of this fix for speed/duplex auto settings.
In addition - this also reduces the config commit time.
-rw-r--r-- | python/vyos/ifconfig.py | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/python/vyos/ifconfig.py b/python/vyos/ifconfig.py index cc63482de..24a718e73 100644 --- a/python/vyos/ifconfig.py +++ b/python/vyos/ifconfig.py @@ -1139,6 +1139,14 @@ class EthernetIf(VLANIf): .format(self.get_driver_name())) return + # Get current speed and duplex settings: + cmd = '/sbin/ethtool {0}'.format(self._ifname) + tmp = self._cmd(cmd) + + if re.search("\tAuto-negotiation: on", tmp): + if speed == 'auto' or duplex == 'auto': + # bail out early as nothing is to change + return cmd = '/sbin/ethtool -s {}'.format(self._ifname) if speed == 'auto' or duplex == 'auto': |