mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 17:13:52 +02:00
selftests: net: add test for passive TFO socket NAPI ID
Add a test that checks that the NAPI ID of a passive TFO socket is valid i.e. not zero. Signed-off-by: David Wei <dw@davidwei.uk> Link: https://patch.msgid.link/20250617212102.175711-4-dw@davidwei.uk Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
c65b5bb232
commit
137e7b5cce
|
|
@ -111,6 +111,7 @@ TEST_PROGS += lwt_dst_cache_ref_loop.sh
|
|||
TEST_PROGS += skf_net_off.sh
|
||||
TEST_GEN_FILES += skf_net_off
|
||||
TEST_GEN_FILES += tfo
|
||||
TEST_PROGS += tfo_passive.sh
|
||||
|
||||
# YNL files, must be before "include ..lib.mk"
|
||||
YNL_GEN_FILES := busy_poller netlink-dumps
|
||||
|
|
|
|||
112
tools/testing/selftests/net/tfo_passive.sh
Executable file
112
tools/testing/selftests/net/tfo_passive.sh
Executable file
|
|
@ -0,0 +1,112 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
source lib.sh
|
||||
|
||||
NSIM_SV_ID=$((256 + RANDOM % 256))
|
||||
NSIM_SV_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_SV_ID
|
||||
NSIM_CL_ID=$((512 + RANDOM % 256))
|
||||
NSIM_CL_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_CL_ID
|
||||
|
||||
NSIM_DEV_SYS_NEW=/sys/bus/netdevsim/new_device
|
||||
NSIM_DEV_SYS_DEL=/sys/bus/netdevsim/del_device
|
||||
NSIM_DEV_SYS_LINK=/sys/bus/netdevsim/link_device
|
||||
NSIM_DEV_SYS_UNLINK=/sys/bus/netdevsim/unlink_device
|
||||
|
||||
SERVER_IP=192.168.1.1
|
||||
CLIENT_IP=192.168.1.2
|
||||
SERVER_PORT=48675
|
||||
|
||||
setup_ns()
|
||||
{
|
||||
set -e
|
||||
ip netns add nssv
|
||||
ip netns add nscl
|
||||
|
||||
NSIM_SV_NAME=$(find $NSIM_SV_SYS/net -maxdepth 1 -type d ! \
|
||||
-path $NSIM_SV_SYS/net -exec basename {} \;)
|
||||
NSIM_CL_NAME=$(find $NSIM_CL_SYS/net -maxdepth 1 -type d ! \
|
||||
-path $NSIM_CL_SYS/net -exec basename {} \;)
|
||||
|
||||
ip link set $NSIM_SV_NAME netns nssv
|
||||
ip link set $NSIM_CL_NAME netns nscl
|
||||
|
||||
ip netns exec nssv ip addr add "${SERVER_IP}/24" dev $NSIM_SV_NAME
|
||||
ip netns exec nscl ip addr add "${CLIENT_IP}/24" dev $NSIM_CL_NAME
|
||||
|
||||
ip netns exec nssv ip link set dev $NSIM_SV_NAME up
|
||||
ip netns exec nscl ip link set dev $NSIM_CL_NAME up
|
||||
|
||||
# Enable passive TFO
|
||||
ip netns exec nssv sysctl -w net.ipv4.tcp_fastopen=519 > /dev/null
|
||||
|
||||
set +e
|
||||
}
|
||||
|
||||
cleanup_ns()
|
||||
{
|
||||
ip netns del nscl
|
||||
ip netns del nssv
|
||||
}
|
||||
|
||||
###
|
||||
### Code start
|
||||
###
|
||||
|
||||
modprobe netdevsim
|
||||
|
||||
# linking
|
||||
|
||||
echo $NSIM_SV_ID > $NSIM_DEV_SYS_NEW
|
||||
echo $NSIM_CL_ID > $NSIM_DEV_SYS_NEW
|
||||
udevadm settle
|
||||
|
||||
setup_ns
|
||||
|
||||
NSIM_SV_FD=$((256 + RANDOM % 256))
|
||||
exec {NSIM_SV_FD}</var/run/netns/nssv
|
||||
NSIM_SV_IFIDX=$(ip netns exec nssv cat /sys/class/net/$NSIM_SV_NAME/ifindex)
|
||||
|
||||
NSIM_CL_FD=$((256 + RANDOM % 256))
|
||||
exec {NSIM_CL_FD}</var/run/netns/nscl
|
||||
NSIM_CL_IFIDX=$(ip netns exec nscl cat /sys/class/net/$NSIM_CL_NAME/ifindex)
|
||||
|
||||
echo "$NSIM_SV_FD:$NSIM_SV_IFIDX $NSIM_CL_FD:$NSIM_CL_IFIDX" > \
|
||||
$NSIM_DEV_SYS_LINK
|
||||
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "linking netdevsim1 with netdevsim2 should succeed"
|
||||
cleanup_ns
|
||||
exit 1
|
||||
fi
|
||||
|
||||
out_file=$(mktemp)
|
||||
|
||||
timeout -k 1s 30s ip netns exec nssv ./tfo \
|
||||
-s \
|
||||
-p ${SERVER_PORT} \
|
||||
-o ${out_file}&
|
||||
|
||||
wait_local_port_listen nssv ${SERVER_PORT} tcp
|
||||
|
||||
ip netns exec nscl ./tfo -c -h ${SERVER_IP} -p ${SERVER_PORT}
|
||||
|
||||
wait
|
||||
|
||||
res=$(cat $out_file)
|
||||
rm $out_file
|
||||
|
||||
if [ $res -eq 0 ]; then
|
||||
echo "got invalid NAPI ID from passive TFO socket"
|
||||
cleanup_ns
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "$NSIM_SV_FD:$NSIM_SV_IFIDX" > $NSIM_DEV_SYS_UNLINK
|
||||
|
||||
echo $NSIM_CL_ID > $NSIM_DEV_SYS_DEL
|
||||
|
||||
cleanup_ns
|
||||
|
||||
modprobe -r netdevsim
|
||||
|
||||
exit 0
|
||||
Loading…
Reference in New Issue
Block a user