diff options
author | Yulong Pei <yulong.pei@intel.com> | 2023-02-24 07:35:58 +0000 |
---|---|---|
committer | Peter Mikus <peter.mikus@protonmail.ch> | 2023-02-24 09:21:06 +0000 |
commit | 2817e84549775c66235f1621508331b38c8ff906 (patch) | |
tree | 4660669e45539ad09398954e0e5081c88581c126 | |
parent | 02cd11e7d5df2504d2cb0e4677b5ab7e105fcc2a (diff) |
Fix: detaches the attached XDP/BPF program before af_xdp test run
When call create af_xdp interface api, it will load default xdp program
(xsk_def_prog.o) on the NIC interface, the program will be unloaded
when call delete af_xdp interface api, but current csit config did not
call delete api for af_xdp test cases, that will cause af_xdp test case
fails to run on Intel E810 NIC when the interface already have xdp program
attached, so this patch is to fix this issue by to detach any attached
XDP/BPF program on the interface before af_xdp test case run.
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
Change-Id: I1a557b4c4a7e88c5715cec771a001df29ac4ae6f
Signed-off-by: Yulong Pei <yulong.pei@intel.com>
(cherry picked from commit 1fbfcbcb15bc51b7b689df44ae338a1c7db6269c)
-rw-r--r-- | resources/libraries/python/InterfaceUtil.py | 15 | ||||
-rw-r--r-- | resources/libraries/robot/shared/interfaces.robot | 2 |
2 files changed, 17 insertions, 0 deletions
diff --git a/resources/libraries/python/InterfaceUtil.py b/resources/libraries/python/InterfaceUtil.py index 03e0e69d42..2368ee3362 100644 --- a/resources/libraries/python/InterfaceUtil.py +++ b/resources/libraries/python/InterfaceUtil.py @@ -295,6 +295,21 @@ class InterfaceUtil: 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. diff --git a/resources/libraries/robot/shared/interfaces.robot b/resources/libraries/robot/shared/interfaces.robot index a2e46ef9c2..6279dd0bd2 100644 --- a/resources/libraries/robot/shared/interfaces.robot +++ b/resources/libraries/robot/shared/interfaces.robot @@ -169,6 +169,8 @@ | | FOR | ${dut} | IN | @{duts} | | | Set Interface State PCI | | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | state=up +| | | Set Interface XDP off +| | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | | | Set Interface Channels | | | ... | ${nodes['${dut}']} | ${${dut}_pf_pci} | num_queues=${rxq_count_int} | | | ... | channel=combined |