Dan Kenigsberg has uploaded a new change for review. Change subject: netconfig: set ETHTOOL_OPTS when a NIC goes up ......................................................................
netconfig: set ETHTOOL_OPTS when a NIC goes up There's broken hardware out there where lro needs to to be turned off explicitly. This patch lets an admin of a local node set ethtool_opts.eth0 = lro off to disable LRO on the interface named eth0. Change-Id: Ic8a5a933e1c93f80185d61f3cd43eee53c3a7c1a Signed-off-by: Dan Kenigsberg <[email protected]> Reviewed-on: http://gerrit.ovirt.org/23366 Reviewed-by: Douglas Schilling Landgraf <[email protected]> Reviewed-by: Antoni Segura Puimedon <[email protected]> (cherry picked from commit e963d155904a814db48ac1cfbf18ae82b1b33c36) --- M lib/vdsm/config.py.in M vdsm/netconf/__init__.py M vdsm/netconf/ifcfg.py M vdsm/netconf/iproute2.py 4 files changed, 34 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/61/23761/1 diff --git a/lib/vdsm/config.py.in b/lib/vdsm/config.py.in index e279c87..0f84f16 100644 --- a/lib/vdsm/config.py.in +++ b/lib/vdsm/config.py.in @@ -54,6 +54,12 @@ 'NetworkManager is disabled and device name persistence does ' 'not depend on HWADDR.'), + ('ethtool_opts', '', + 'Which special ethtool options should be applied to NICs after ' + 'they are taken up, e.g. "lro off" on buggy devices. ' + 'To apply options to a single interface, ' + 'set ethtool_opts.iface_name.'), + ('nic_model', 'rtl8139,pv', 'NIC model is rtl8139, ne2k_pci pv or any other valid device ' 'recognized by kvm/qemu if a coma separated list given then a ' diff --git a/vdsm/netconf/__init__.py b/vdsm/netconf/__init__.py index 7ab63da..6d8cbd8 100644 --- a/vdsm/netconf/__init__.py +++ b/vdsm/netconf/__init__.py @@ -17,6 +17,7 @@ # Refer to the README and COPYING files for full details of the license # +import ConfigParser import logging import libvirtCfg @@ -24,6 +25,7 @@ from sourceRoute import DynamicSourceRoute from sourceRoute import StaticSourceRoute from vdsm import netinfo +from vdsm.config import config from vdsm.netconfpersistence import RunningConfig @@ -145,3 +147,10 @@ self.configApplier.setBondingMtu(iface.name, maxMtu) else: self.configApplier.setIfaceMtu(iface.name, maxMtu) + + def getEthtoolOpts(self, name): + try: + opts = config.get('vars', 'ethtool_opts.' + name) + except ConfigParser.NoOptionError: + opts = config.get('vars', 'ethtool_opts') + return opts diff --git a/vdsm/netconf/ifcfg.py b/vdsm/netconf/ifcfg.py index c5e6074..1364d82 100644 --- a/vdsm/netconf/ifcfg.py +++ b/vdsm/netconf/ifcfg.py @@ -626,6 +626,10 @@ if nic.bond: conf += 'MASTER=%s\nSLAVE=yes\n' % pipes.quote(nic.bond.name) + ethtool_opts = self.getEthtoolOpts(nic.name) + if ethtool_opts: + conf += 'ETHTOOL_OPTS=%s\n' % pipes.quote(ethtool_opts) + ipconfig, mtu = self._getIfaceConfValues(nic, _netinfo) self._createConfFile(conf, nic.name, ipconfig, mtu, **opts) diff --git a/vdsm/netconf/iproute2.py b/vdsm/netconf/iproute2.py index 86727d3..e9ce7cc 100644 --- a/vdsm/netconf/iproute2.py +++ b/vdsm/netconf/iproute2.py @@ -32,7 +32,15 @@ from vdsm.ipwrapper import ruleAdd from vdsm.ipwrapper import ruleDel from vdsm.netconfpersistence import RunningConfig +from vdsm.utils import CommandPath from vdsm.utils import execCmd + +_ETHTOOL_BINARY = CommandPath( + 'ethtool', + '/usr/sbin/ethtool', # F19+ + '/sbin/ethtool', # EL6, ubuntu and Debian + '/usr/bin/ethtool', # Arch +) class Iproute2(Configurator): @@ -113,6 +121,13 @@ def configureNic(self, nic, **opts): self.configApplier.setIfaceConfigAndUp(nic) + ethtool_opts = self.getEthtoolOpts(nic.name) + if ethtool_opts: + # We ignore ethtool's return code to maintain initscripts' + # behaviour. + execCmd( + [_ETHTOOL_BINARY.cmd, '-K', nic.name] + ethtool_opts.split()) + def removeBridge(self, bridge): self.configApplier.ifdown(bridge) self.configApplier.removeBridge(bridge) -- To view, visit http://gerrit.ovirt.org/23761 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ic8a5a933e1c93f80185d61f3cd43eee53c3a7c1a Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: ovirt-3.4 Gerrit-Owner: Dan Kenigsberg <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
