5 # see license for license details
7 import vstf.common.utils as utils
9 __all__ = ["autoneg_on", "autoneg_off", "autoneg_query"]
12 "Autonegotiate": ("-A", "-a", "autoneg"),
13 "RX": ("-A", "-a", "rx"),
14 "TX": ("-A", "-a", "tx"),
18 def autoneg_on(iface, nspace=None):
19 return _set(nspace, iface, Autonegotiate="on", RX="on", TX="on")
22 def autoneg_off(iface, nspace=None):
23 return _set(nspace, iface, Autonegotiate="off", RX="off", TX="off")
26 def autoneg_query(iface, nspace=None):
27 return _query(nspace, iface, "-a")
30 def _set(nspace, iface, **kwargs):
32 for item, value in kwargs.items():
33 opt, _, key = _para_map[item]
34 cmds.setdefault(opt, [])
36 cmds[opt].append(value)
38 for key, value in cmds.items():
39 cmd = _namespace(nspace)
40 cmd += ["ethtool", key, iface] + value
46 def _query(nspace, iface, item):
47 cmd = _namespace(nspace)
48 cmd += ["ethtool", item, iface]
49 return utils.check_output(cmd)
52 def _namespace(nspace):
55 result = "ip netns exec %(namespace)s " % {"namespace": nspace}