The previous commits allowed to change the carrier state via the sysfs carrier attribute and to get the carrier state via ethtool. Add selftest for it.
Signed-off-by: Íñigo Huguet <[email protected]> --- .../selftests/drivers/net/netdevsim/peer.sh | 59 +++++++++++++++---- 1 file changed, 48 insertions(+), 11 deletions(-) diff --git a/tools/testing/selftests/drivers/net/netdevsim/peer.sh b/tools/testing/selftests/drivers/net/netdevsim/peer.sh index f4721f7636dd..5e7b6c1d0bfb 100755 --- a/tools/testing/selftests/drivers/net/netdevsim/peer.sh +++ b/tools/testing/selftests/drivers/net/netdevsim/peer.sh @@ -52,21 +52,17 @@ cleanup_ns() ip netns del nssv } -is_carrier_up() -{ - local netns="$1" - local nsim_dev="$2" - - test "$(ip netns exec "$netns" \ - cat /sys/class/net/"$nsim_dev"/carrier 2>/dev/null)" -eq 1 -} - assert_carrier_up() { local netns="$1" local nsim_dev="$2" - if ! is_carrier_up "$netns" "$nsim_dev"; then + local sysfs_carrier="$(ip netns exec "$netns" \ + cat /sys/class/net/"$nsim_dev"/carrier 2>/dev/null)" + local ethtool_carrier="$(ip netns exec "$netns" \ + ethtool -j "$nsim_dev" | jq '.[0]["link-detected"]' 2>/dev/null)" + + if [ "$sysfs_carrier" -ne 1 -o "$ethtool_carrier" != "true" ]; then echo "$nsim_dev's carrier should be UP, but it isn't" cleanup_ns exit 1 @@ -78,13 +74,36 @@ assert_carrier_down() local netns="$1" local nsim_dev="$2" - if is_carrier_up "$netns" "$nsim_dev"; then + local sysfs_carrier="$(ip netns exec "$netns" \ + cat /sys/class/net/"$nsim_dev"/carrier 2>/dev/null)" + local ethtool_carrier="$(ip netns exec "$netns" \ + ethtool -j "$nsim_dev" | jq '.[0]["link-detected"]' 2>/dev/null)" + + if [ "$sysfs_carrier" -ne 0 -o "$ethtool_carrier" != "false" ]; then echo "$nsim_dev's carrier should be DOWN, but it isn't" cleanup_ns exit 1 fi } +set_carrier_up() +{ + local netns="$1" + local nsim_dev="$2" + + ip netns exec "$netns" \ + sh -c "echo 1 > /sys/class/net/$nsim_dev/carrier" 2>/dev/null +} + +set_carrier_down() +{ + local netns="$1" + local nsim_dev="$2" + + ip netns exec "$netns" \ + sh -c "echo 0 > /sys/class/net/$nsim_dev/carrier" 2>/dev/null +} + ### ### Code start ### @@ -161,6 +180,14 @@ ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up assert_carrier_down nssv "$NSIM_DEV_1_NAME" assert_carrier_down nscl "$NSIM_DEV_2_NAME" +set_carrier_up nssv "$NSIM_DEV_1_NAME" + +assert_carrier_up nssv "$NSIM_DEV_1_NAME" +assert_carrier_down nscl "$NSIM_DEV_2_NAME" + +set_carrier_down nssv "$NSIM_DEV_1_NAME" +assert_carrier_down nssv "$NSIM_DEV_1_NAME" + echo "$NSIM_DEV_1_FD:$NSIM_DEV_1_IFIDX $NSIM_DEV_2_FD:$NSIM_DEV_2_IFIDX" > $NSIM_DEV_SYS_LINK assert_carrier_up nssv "$NSIM_DEV_1_NAME" @@ -172,6 +199,16 @@ ip netns exec nssv ip link set dev "$NSIM_DEV_1_NAME" up assert_carrier_up nssv "$NSIM_DEV_1_NAME" assert_carrier_up nscl "$NSIM_DEV_2_NAME" +set_carrier_down nssv "$NSIM_DEV_1_NAME" + +assert_carrier_down nssv "$NSIM_DEV_1_NAME" +assert_carrier_down nscl "$NSIM_DEV_2_NAME" + +set_carrier_up nscl "$NSIM_DEV_2_NAME" + +assert_carrier_up nssv "$NSIM_DEV_1_NAME" +assert_carrier_up nscl "$NSIM_DEV_2_NAME" + # send/recv packets tmp_file=$(mktemp) -- 2.53.0

