Skip to content

Commit 03d77f1

Browse files
spikehNipaLocal
authored andcommitted
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 <[email protected]> Signed-off-by: NipaLocal <nipa@local>
1 parent 0bf53c3 commit 03d77f1

File tree

2 files changed

+113
-0
lines changed

2 files changed

+113
-0
lines changed

tools/testing/selftests/net/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ TEST_PROGS += lwt_dst_cache_ref_loop.sh
112112
TEST_PROGS += skf_net_off.sh
113113
TEST_GEN_FILES += skf_net_off
114114
TEST_GEN_FILES += tfo
115+
TEST_PROGS += tfo_passive.sh
115116

116117
# YNL files, must be before "include ..lib.mk"
117118
YNL_GEN_FILES := busy_poller netlink-dumps
Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
#!/bin/bash
2+
# SPDX-License-Identifier: GPL-2.0
3+
source lib.sh
4+
5+
NSIM_SV_ID=$((256 + RANDOM % 256))
6+
NSIM_SV_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_SV_ID
7+
NSIM_CL_ID=$((512 + RANDOM % 256))
8+
NSIM_CL_SYS=/sys/bus/netdevsim/devices/netdevsim$NSIM_CL_ID
9+
10+
NSIM_DEV_SYS_NEW=/sys/bus/netdevsim/new_device
11+
NSIM_DEV_SYS_DEL=/sys/bus/netdevsim/del_device
12+
NSIM_DEV_SYS_LINK=/sys/bus/netdevsim/link_device
13+
NSIM_DEV_SYS_UNLINK=/sys/bus/netdevsim/unlink_device
14+
15+
SERVER_IP=192.168.1.1
16+
CLIENT_IP=192.168.1.2
17+
SERVER_PORT=48675
18+
19+
setup_ns()
20+
{
21+
set -e
22+
ip netns add nssv
23+
ip netns add nscl
24+
25+
NSIM_SV_NAME=$(find $NSIM_SV_SYS/net -maxdepth 1 -type d ! \
26+
-path $NSIM_SV_SYS/net -exec basename {} \;)
27+
NSIM_CL_NAME=$(find $NSIM_CL_SYS/net -maxdepth 1 -type d ! \
28+
-path $NSIM_CL_SYS/net -exec basename {} \;)
29+
30+
ip link set $NSIM_SV_NAME netns nssv
31+
ip link set $NSIM_CL_NAME netns nscl
32+
33+
ip netns exec nssv ip addr add "${SERVER_IP}/24" dev $NSIM_SV_NAME
34+
ip netns exec nscl ip addr add "${CLIENT_IP}/24" dev $NSIM_CL_NAME
35+
36+
ip netns exec nssv ip link set dev $NSIM_SV_NAME up
37+
ip netns exec nscl ip link set dev $NSIM_CL_NAME up
38+
39+
# Enable passive TFO
40+
ip netns exec nssv sysctl -w net.ipv4.tcp_fastopen=519 > /dev/null
41+
42+
set +e
43+
}
44+
45+
cleanup_ns()
46+
{
47+
ip netns del nscl
48+
ip netns del nssv
49+
}
50+
51+
###
52+
### Code start
53+
###
54+
55+
modprobe netdevsim
56+
57+
# linking
58+
59+
echo $NSIM_SV_ID > $NSIM_DEV_SYS_NEW
60+
echo $NSIM_CL_ID > $NSIM_DEV_SYS_NEW
61+
udevadm settle
62+
63+
setup_ns
64+
65+
NSIM_SV_FD=$((256 + RANDOM % 256))
66+
exec {NSIM_SV_FD}</var/run/netns/nssv
67+
NSIM_SV_IFIDX=$(ip netns exec nssv cat /sys/class/net/$NSIM_SV_NAME/ifindex)
68+
69+
NSIM_CL_FD=$((256 + RANDOM % 256))
70+
exec {NSIM_CL_FD}</var/run/netns/nscl
71+
NSIM_CL_IFIDX=$(ip netns exec nscl cat /sys/class/net/$NSIM_CL_NAME/ifindex)
72+
73+
echo "$NSIM_SV_FD:$NSIM_SV_IFIDX $NSIM_CL_FD:$NSIM_CL_IFIDX" > \
74+
$NSIM_DEV_SYS_LINK
75+
76+
if [ $? -ne 0 ]; then
77+
echo "linking netdevsim1 with netdevsim2 should succeed"
78+
cleanup_ns
79+
exit 1
80+
fi
81+
82+
out_file=$(mktemp)
83+
84+
timeout -k 1s 30s ip netns exec nssv ./tfo \
85+
-s \
86+
-p ${SERVER_PORT} \
87+
-o ${out_file}&
88+
89+
wait_local_port_listen nssv ${SERVER_PORT} tcp
90+
91+
ip netns exec nscl ./tfo -c -h ${SERVER_IP} -p ${SERVER_PORT}
92+
93+
wait
94+
95+
res=$(cat $out_file)
96+
rm $out_file
97+
98+
if [ $res -eq 0 ]; then
99+
echo "got invalid NAPI ID from passive TFO socket"
100+
cleanup_ns
101+
exit 1
102+
fi
103+
104+
echo "$NSIM_SV_FD:$NSIM_SV_IFIDX" > $NSIM_DEV_SYS_UNLINK
105+
106+
echo $NSIM_CL_ID > $NSIM_DEV_SYS_DEL
107+
108+
cleanup_ns
109+
110+
modprobe -r netdevsim
111+
112+
exit 0

0 commit comments

Comments
 (0)