selftests/xsk: reset NIC settings to default after running test suite
authorMaciej Fijalkowski <maciej.fijalkowski@intel.com>
Wed, 19 Jul 2023 13:24:21 +0000 (15:24 +0200)
committerAlexei Starovoitov <ast@kernel.org>
Wed, 19 Jul 2023 16:56:51 +0000 (09:56 -0700)
Currently, when running ZC test suite, after finishing first run of test
suite and then switching to busy-poll tests within xskxceiver, such
errors are observed:

libbpf: Kernel error message: ice: MTU is too large for linear frames and XDP prog does not support frags
1..26
libbpf: Kernel error message: Native and generic XDP can't be active at the same time
Error attaching XDP program
not ok 1 [xskxceiver.c:xsk_reattach_xdp:1568]: ERROR: 17/"File exists"

this is because test suite ends with 9k MTU and native xdp program being
loaded. Busy-poll tests start non-multi-buffer tests for generic mode.
To fix this, let us introduce bash function that will reset NIC settings
to default (e.g. 1500 MTU and no xdp progs loaded) so that test suite
can continue without interrupts. It also means that after busy-poll
tests NIC will have those default settings, whereas right now it is left
with 9k MTU and xdp prog loaded in native mode.

Signed-off-by: Maciej Fijalkowski <maciej.fijalkowski@intel.com>
Link: https://lore.kernel.org/r/20230719132421.584801-25-maciej.fijalkowski@intel.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
tools/testing/selftests/bpf/test_xsk.sh
tools/testing/selftests/bpf/xsk_prereqs.sh

index c2ad50f..2aa5a34 100755 (executable)
@@ -171,7 +171,10 @@ exec_xskxceiver
 
 if [ -z $ETH ]; then
        cleanup_exit ${VETH0} ${VETH1}
+else
+       cleanup_iface ${ETH} ${MTU}
 fi
+
 TEST_NAME="XSK_SELFTESTS_${VETH0}_BUSY_POLL"
 busy_poll=1
 
@@ -184,6 +187,8 @@ exec_xskxceiver
 
 if [ -z $ETH ]; then
        cleanup_exit ${VETH0} ${VETH1}
+else
+       cleanup_iface ${ETH} ${MTU}
 fi
 
 failures=0
index ae697a1..2917568 100755 (executable)
@@ -53,6 +53,13 @@ test_exit()
        exit 1
 }
 
+cleanup_iface()
+{
+       ip link set $1 mtu $2
+       ip link set $1 xdp off
+       ip link set $1 xdpgeneric off
+}
+
 clear_configs()
 {
        [ $(ip link show $1 &>/dev/null; echo $?;) == 0 ] &&