diff options
author | Christian Poessinger <christian@poessinger.com> | 2022-07-10 23:01:09 +0200 |
---|---|---|
committer | Christian Poessinger <christian@poessinger.com> | 2022-07-10 23:11:00 +0200 |
commit | 4315c8fa5bb090e2b7edd6bda205041623e2511d (patch) | |
tree | 172d8740f71220bec4a971790dc6c34e0601abc7 | |
parent | 8d1bb953b784d03e02ba26e78da5488a79aaf20d (diff) | |
download | vyos-1x-4315c8fa5bb090e2b7edd6bda205041623e2511d.tar.gz vyos-1x-4315c8fa5bb090e2b7edd6bda205041623e2511d.zip |
bond: T4522: add ability to specify mii monitor interval via CLI
Linux Kernel supports to specify the MII link monitoring frequency in
milliseconds. This determines how often the link state of each slave is
inspected for link failures. A value of zero disables MII link monitoring.
A value of 100 is a good starting point.
The default value is 100.
set interfaces bonding bond0 mii-mon-interval <n>
-rw-r--r-- | interface-definitions/interfaces-bonding.xml.in | 17 | ||||
-rw-r--r-- | python/vyos/ifconfig/bond.py | 3 | ||||
-rwxr-xr-x | smoketest/scripts/cli/test_interfaces_bonding.py | 23 |
3 files changed, 42 insertions, 1 deletions
diff --git a/interface-definitions/interfaces-bonding.xml.in b/interface-definitions/interfaces-bonding.xml.in index 96dede723..8b6c6ef62 100644 --- a/interface-definitions/interfaces-bonding.xml.in +++ b/interface-definitions/interfaces-bonding.xml.in @@ -94,6 +94,23 @@ #include <include/interface/ipv4-options.xml.i> #include <include/interface/ipv6-options.xml.i> #include <include/interface/mac.xml.i> + <leafNode name="mii-mon-interval"> + <properties> + <help>Specifies the MII link monitoring frequency in milliseconds</help> + <valueHelp> + <format>u32:0</format> + <description>Disable MII link monitoring</description> + </valueHelp> + <valueHelp> + <format>u32:50-1000</format> + <description>MII link monitoring frequency in milliseconds</description> + </valueHelp> + <constraint> + <validator name="numeric" argument="--range 0-0 --range 50-1000"/> + </constraint> + </properties> + <defaultValue>100</defaultValue> + </leafNode> <leafNode name="min-links"> <properties> <help>Minimum number of member interfaces required up before enabling bond</help> diff --git a/python/vyos/ifconfig/bond.py b/python/vyos/ifconfig/bond.py index 33745ceb3..98bf6162b 100644 --- a/python/vyos/ifconfig/bond.py +++ b/python/vyos/ifconfig/bond.py @@ -388,7 +388,8 @@ class BondIf(Interface): self.set_admin_state('down') # Specifies the MII link monitoring frequency in milliseconds - self.set_miimon_interval('250') + value = config.get('mii_mon_interval') + self.set_miimon_interval(value) # Bonding transmit hash policy value = config.get('hash_policy') diff --git a/smoketest/scripts/cli/test_interfaces_bonding.py b/smoketest/scripts/cli/test_interfaces_bonding.py index 3cbe119a5..cd3995ed9 100755 --- a/smoketest/scripts/cli/test_interfaces_bonding.py +++ b/smoketest/scripts/cli/test_interfaces_bonding.py @@ -151,6 +151,29 @@ class BondingInterfaceTest(BasicInterfaceTest.TestCase): defined_policy = read_file(f'/sys/class/net/{interface}/bonding/xmit_hash_policy').split() self.assertEqual(defined_policy[0], hash_policy) + def test_bonding_mii_monitoring_interval(self): + for interface in self._interfaces: + for option in self._options.get(interface, []): + self.cli_set(self._base_path + [interface] + option.split()) + + self.cli_commit() + + # verify default + for interface in self._interfaces: + tmp = read_file(f'/sys/class/net/{interface}/bonding/miimon').split() + self.assertIn('100', tmp) + + mii_mon = '250' + for interface in self._interfaces: + self.cli_set(self._base_path + [interface, 'mii-mon-interval', mii_mon]) + + self.cli_commit() + + # verify new CLI value + for interface in self._interfaces: + tmp = read_file(f'/sys/class/net/{interface}/bonding/miimon').split() + self.assertIn(mii_mon, tmp) + def test_bonding_multi_use_member(self): # Define available bonding hash policies for interface in ['bond10', 'bond20']: |