aboutsummaryrefslogtreecommitdiffstats
path: root/os_net_config
diff options
context:
space:
mode:
authorKarthik S <ksundara@redhat.com>2017-05-30 07:21:52 -0400
committerKarthik S <ksundara@redhat.com>2017-05-31 02:42:55 -0400
commitcc7ff987cae3452a28f85ca3cabef49a3a64a2ff (patch)
tree9b3f1799c54486ca81f1179010d71ef1cbb3891a /os_net_config
parente7e81ac01122dd1b7711116d583a69fb655e0bca (diff)
MTU setting for OVSDpdkBond
This patch allows the MTU setting for DPDK bonds. In case of DPDK bonds, the MTU setting needs to be done for each of the interfaces attached to the bond. Change-Id: Ida627313d14a674430b2aff3644fd62b2e0bcab7 Implements: blueprint ovs-2-6-features-dpdk Signed-off-by: Karthik S <ksundara@redhat.com>
Diffstat (limited to 'os_net_config')
-rw-r--r--os_net_config/impl_ifcfg.py6
-rw-r--r--os_net_config/tests/test_impl_ifcfg.py38
2 files changed, 44 insertions, 0 deletions
diff --git a/os_net_config/impl_ifcfg.py b/os_net_config/impl_ifcfg.py
index 6f35688..18de8fc 100644
--- a/os_net_config/impl_ifcfg.py
+++ b/os_net_config/impl_ifcfg.py
@@ -316,6 +316,12 @@ class IfcfgNetConfig(os_net_config.NetConfig):
if base_opt.members:
members = [member.name for member in base_opt.members]
data += ("BOND_IFACES=\"%s\"\n" % " ".join(members))
+ # MTU configuration given for the OvsDpdkbond shall be applied
+ # to each of the members of the OvsDpdkbond
+ if base_opt.mtu:
+ for member in base_opt.members:
+ ovs_extra.append("set Interface %s mtu_request=$MTU" %
+ member.name)
if base_opt.ovs_options:
data += "OVS_OPTIONS=\"%s\"\n" % base_opt.ovs_options
ovs_extra.extend(base_opt.ovs_extra)
diff --git a/os_net_config/tests/test_impl_ifcfg.py b/os_net_config/tests/test_impl_ifcfg.py
index 9ff2bd6..0e5eca2 100644
--- a/os_net_config/tests/test_impl_ifcfg.py
+++ b/os_net_config/tests/test_impl_ifcfg.py
@@ -956,6 +956,44 @@ BOND_IFACES="dpdk0 dpdk1"
self.assertEqual(dpdk_bond_config,
self.get_interface_config('dpdkbond0'))
+ def test_network_ovs_dpdk_bond_with_mtu(self):
+ nic_mapping = {'nic1': 'eth0', 'nic2': 'eth1', 'nic3': 'eth2'}
+ self.stubbed_mapped_nics = nic_mapping
+
+ iface0 = objects.Interface(name='nic2')
+ dpdk0 = objects.OvsDpdkPort(name='dpdk0', members=[iface0])
+ iface1 = objects.Interface(name='nic3')
+ dpdk1 = objects.OvsDpdkPort(name='dpdk1', members=[iface1])
+ bond = objects.OvsDpdkBond('dpdkbond0', mtu=9000,
+ members=[dpdk0, dpdk1])
+ bridge = objects.OvsUserBridge('br-link', members=[bond])
+
+ def test_bind_dpdk_interfaces(ifname, driver, noop):
+ self.assertIn(ifname, ['eth1', 'eth2'])
+ self.assertEqual(driver, 'vfio-pci')
+ self.stubs.Set(utils, 'bind_dpdk_interfaces',
+ test_bind_dpdk_interfaces)
+
+ self.provider.add_ovs_dpdk_bond(bond)
+ self.provider.add_ovs_user_bridge(bridge)
+
+ dpdk_bond_config = """# This file is autogenerated by os-net-config
+DEVICE=dpdkbond0
+ONBOOT=yes
+HOTPLUG=no
+NM_CONTROLLED=no
+PEERDNS=no
+DEVICETYPE=ovs
+TYPE=OVSDPDKBond
+OVS_BRIDGE=br-link
+BOND_IFACES="dpdk0 dpdk1"
+MTU=9000
+OVS_EXTRA="set Interface dpdk0 mtu_request=$MTU \
+-- set Interface dpdk1 mtu_request=$MTU"
+"""
+ self.assertEqual(dpdk_bond_config,
+ self.get_interface_config('dpdkbond0'))
+
class TestIfcfgNetConfigApply(base.TestCase):