X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FInterfaceUtil.py;h=1245a3312a0d010171db9e8ee0f2aa3305cd751b;hb=a5a51a112a0d3475f2368a18b6b42f7712ec5b25;hp=bfc0ba7a0838fac889eb766f8d241d9507e3b7dd;hpb=1c1d5cbe67254f0457d8f27acb32882eded47b67;p=csit.git diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index bfc0ba7a08..1245a3312a 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -1546,6 +1546,25 @@ class InterfaceUtil: cmd = f"{ns_str} ip link set dev {interface} {spoof_str}" exec_cmd_no_error(node, cmd, sudo=True) + @staticmethod + def set_linux_interface_state( + node, interface, namespace=None, state=u"up"): + """Set operational state for interface in linux. + + :param node: Node where to execute command. + :param interface: Interface in namespace. + :param namespace: Execute command in namespace. Optional + :param state: Up/Down. + :type node: dict + :type interface: str + :type namespace: str + :type state: str + """ + ns_str = f"ip netns exec {namespace}" if namespace else u"" + + cmd = f"{ns_str} ip link set dev {interface} {state}" + exec_cmd_no_error(node, cmd, sudo=True) + @staticmethod def init_avf_interface(node, ifc_key, numvfs=1, osi_layer=u"L2"): """Init PCI device by creating VIFs and bind them to vfio-pci for AVF @@ -1569,9 +1588,9 @@ class InterfaceUtil: pf_mac_addr = Topology.get_interface_mac(node, ifc_key).split(":") uio_driver = Topology.get_uio_driver(node) kernel_driver = Topology.get_interface_driver(node, ifc_key) - if kernel_driver not in (u"i40e", u"i40evf"): + if kernel_driver not in (u"ice", u"iavf", u"i40e", u"i40evf"): raise RuntimeError( - f"AVF needs i40e-compatible driver, not {kernel_driver} " + f"AVF needs ice or i40e compatible driver, not {kernel_driver}" f"at node {node[u'host']} ifc {ifc_key}" ) current_driver = DUTSetup.get_pci_dev_driver( @@ -1610,6 +1629,9 @@ class InterfaceUtil: InterfaceUtil.set_linux_interface_mac( node, pf_dev, vf_mac_addr, vf_id=vf_id ) + InterfaceUtil.set_linux_interface_state( + node, pf_dev, state=u"up" + ) DUTSetup.pci_vf_driver_unbind(node, pf_pci_addr, vf_id) DUTSetup.pci_vf_driver_bind(node, pf_pci_addr, vf_id, uio_driver)