Skip to content

Commit 75df712

Browse files
y-kojkuba-moo
authored andcommitted
selftests: netdevsim: add carrier state consistency test
This commit adds a test case for netdevsim carrier state consistency. Specifically, the added test verifies the carrier state during the following operations: 1. Unlink two netdevsims 2. ifdown one netdevsim, then ifup again 3. Link the netdevsims again 4. ifdown one netdevsim, then ifup again These steps verifies that the carrier is UP iff two netdevsims are linked and ifuped. Signed-off-by: Yohei Kojima <yk@y-koj.net> Link: https://patch.msgid.link/481e2729e53b6074ebfc0ad85764d8feb244de8c.1767624906.git.yk@y-koj.net Signed-off-by: Jakub Kicinski <kuba@kernel.org>
1 parent d83dddf commit 75df712

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

  • tools/testing/selftests/drivers/net/netdevsim

tools/testing/selftests/drivers/net/netdevsim/peer.sh

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,39 @@ cleanup_ns()
5252
ip netns del nssv
5353
}
5454

55+
is_carrier_up()
56+
{
57+
local netns="$1"
58+
local nsim_dev="$2"
59+
60+
test "$(ip netns exec "$netns" \
61+
cat /sys/class/net/"$nsim_dev"/carrier 2>/dev/null)" -eq 1
62+
}
63+
64+
assert_carrier_up()
65+
{
66+
local netns="$1"
67+
local nsim_dev="$2"
68+
69+
if ! is_carrier_up "$netns" "$nsim_dev"; then
70+
echo "$nsim_dev's carrier should be UP, but it isn't"
71+
cleanup_ns
72+
exit 1
73+
fi
74+
}
75+
76+
assert_carrier_down()
77+
{
78+
local netns="$1"
79+
local nsim_dev="$2"
80+
81+
if is_carrier_up "$netns" "$nsim_dev"; then
82+
echo "$nsim_dev's carrier should be DOWN, but it isn't"
83+
cleanup_ns
84+
exit 1
85+
fi
86+
}
87+
5588
###
5689
### Code start
5790
###
@@ -113,6 +146,32 @@ if [ $? -eq 0 ]; then
113146
exit 1
114147
fi
115148

149+
# netdevsim carrier state consistency checking
150+
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
151+
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
152+
153+
echo "$NSIM_DEV_1_FD:$NSIM_DEV_1_IFIDX" > "$NSIM_DEV_SYS_UNLINK"
154+
155+
assert_carrier_down nssv "$NSIM_DEV_1_NAME"
156+
assert_carrier_down nscl "$NSIM_DEV_2_NAME"
157+
158+
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" down
159+
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up
160+
161+
assert_carrier_down nssv "$NSIM_DEV_1_NAME"
162+
assert_carrier_down nscl "$NSIM_DEV_2_NAME"
163+
164+
echo "$NSIM_DEV_1_FD:$NSIM_DEV_1_IFIDX $NSIM_DEV_2_FD:$NSIM_DEV_2_IFIDX" > $NSIM_DEV_SYS_LINK
165+
166+
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
167+
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
168+
169+
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" down
170+
ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up
171+
172+
assert_carrier_up nssv "$NSIM_DEV_1_NAME"
173+
assert_carrier_up nscl "$NSIM_DEV_2_NAME"
174+
116175
# send/recv packets
117176

118177
tmp_file=$(mktemp)

0 commit comments

Comments
 (0)