X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=resources%2Flibraries%2Fpython%2FInterfaceUtil.py;h=2368ee336207a4999a0c6414d91ee672d4fdc60e;hb=1fbfcbcb15bc51b7b689df44ae338a1c7db6269c;hp=6ac166ac4812de04fc26e2a4c054e549cde2c44b;hpb=5c51731ef45b84c2aab7b16d7daabc63ff2b21e2;p=csit.git diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 6ac166ac48..2368ee3362 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -1,4 +1,4 @@ -# Copyright (c) 2022 Cisco and/or its affiliates. +# Copyright (c) 2023 Cisco and/or its affiliates. # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at: @@ -294,6 +294,21 @@ class InterfaceUtil: cmd = f"ethtool --set-channels {pf_eth} {channel} {num_queues}" exec_cmd_no_error(node, cmd, sudo=True) + @staticmethod + def set_interface_xdp_off(node, pf_pcis): + """Detaches any currently attached XDP/BPF program from the specified + interfaces. + + :param node: Topology node. + :param pf_pcis: List of node's interfaces PCI addresses. + :type nodes: dict + :type pf_pcis: list + """ + for pf_pci in pf_pcis: + pf_eth = InterfaceUtil.pci_to_eth(node, pf_pci) + cmd = f"ip link set dev {pf_eth} xdp off" + exec_cmd_no_error(node, cmd, sudo=True) + @staticmethod def set_interface_flow_control(node, pf_pcis, rxf=u"off", txf=u"off"): """Set Ethernet flow control for specified interfaces. @@ -359,31 +374,6 @@ class InterfaceUtil: except AssertionError as err: logger.debug(f"Setting MTU failed.\n{err}") - @staticmethod - def vpp_set_interfaces_mtu_on_node(node, mtu=9200): - """Set Ethernet MTU on all interfaces. - - :param node: VPP node. - :param mtu: Ethernet MTU size in Bytes. Default: 9200. - :type node: dict - :type mtu: int - """ - for interface in node[u"interfaces"]: - InterfaceUtil.vpp_set_interface_mtu(node, interface, mtu) - - @staticmethod - def vpp_set_interfaces_mtu_on_all_duts(nodes, mtu=9200): - """Set Ethernet MTU on all interfaces on all DUTs. - - :param nodes: VPP nodes. - :param mtu: Ethernet MTU size in Bytes. Default: 9200. - :type nodes: dict - :type mtu: int - """ - for node in nodes.values(): - if node[u"type"] == NodeType.DUT: - InterfaceUtil.vpp_set_interfaces_mtu_on_node(node, mtu) - @staticmethod def vpp_node_interfaces_ready_wait(node, retries=15): """Wait until all interfaces with admin-up are in link-up state. @@ -907,7 +897,7 @@ class InterfaceUtil: err_msg = f"Failed to set VXLAN bypass on interface " \ f"on host {node[u'host']}" with PapiSocketExecutor(node) as papi_exec: - papi_exec.add(cmd, **args).get_replies(err_msg) + papi_exec.add(cmd, **args).get_reply(err_msg) @staticmethod def vxlan_dump(node, interface=None): @@ -1336,7 +1326,7 @@ class InterfaceUtil: node, u"set logging class af_xdp level debug" ) - cmd = u"af_xdp_create" + cmd = u"af_xdp_create_v2" pci_addr = Topology.get_interface_pci_addr(node, if_key) args = dict( name=InterfaceUtil.pci_to_eth(node, pci_addr),