mirror of
https://github.com/torvalds/linux.git
synced 2026-04-30 04:22:32 -04:00
selftests: virtio_net: add initial tests
Introduce initial tests for virtio_net driver. Focus on feature testing leveraging previously introduced debugfs feature filtering infrastructure. Add very basic ping and F_MAC feature tests. To run this, do: $ make -C tools/testing/selftests/ TARGETS=drivers/net/virtio_net/ run_tests Run it on a system with 2 virtio_net devices connected back-to-back on the hypervisor. Signed-off-by: Jiri Pirko <jiri@nvidia.com> Reviewed-by: Petr Machata <petrm@nvidia.com> Tested-by: Benjamin Poirier <bpoirier@nvidia.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
131
tools/testing/selftests/drivers/net/virtio_net/basic_features.sh
Executable file
131
tools/testing/selftests/drivers/net/virtio_net/basic_features.sh
Executable file
@@ -0,0 +1,131 @@
|
||||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
# See virtio_net_common.sh comments for more details about assumed setup
|
||||
|
||||
ALL_TESTS="
|
||||
initial_ping_test
|
||||
f_mac_test
|
||||
"
|
||||
|
||||
source virtio_net_common.sh
|
||||
|
||||
lib_dir=$(dirname "$0")
|
||||
source "$lib_dir"/../../../net/forwarding/lib.sh
|
||||
|
||||
h1=${NETIFS[p1]}
|
||||
h2=${NETIFS[p2]}
|
||||
|
||||
h1_create()
|
||||
{
|
||||
simple_if_init $h1 $H1_IPV4/24 $H1_IPV6/64
|
||||
}
|
||||
|
||||
h1_destroy()
|
||||
{
|
||||
simple_if_fini $h1 $H1_IPV4/24 $H1_IPV6/64
|
||||
}
|
||||
|
||||
h2_create()
|
||||
{
|
||||
simple_if_init $h2 $H2_IPV4/24 $H2_IPV6/64
|
||||
}
|
||||
|
||||
h2_destroy()
|
||||
{
|
||||
simple_if_fini $h2 $H2_IPV4/24 $H2_IPV6/64
|
||||
}
|
||||
|
||||
initial_ping_test()
|
||||
{
|
||||
setup_cleanup
|
||||
setup_prepare
|
||||
ping_test $h1 $H2_IPV4 " simple"
|
||||
}
|
||||
|
||||
f_mac_test()
|
||||
{
|
||||
RET=0
|
||||
local test_name="mac feature filtered"
|
||||
|
||||
virtio_feature_present $h1 $VIRTIO_NET_F_MAC
|
||||
if [ $? -ne 0 ]; then
|
||||
log_test_skip "$test_name" "Device $h1 is missing feature $VIRTIO_NET_F_MAC."
|
||||
return 0
|
||||
fi
|
||||
virtio_feature_present $h1 $VIRTIO_NET_F_MAC
|
||||
if [ $? -ne 0 ]; then
|
||||
log_test_skip "$test_name" "Device $h2 is missing feature $VIRTIO_NET_F_MAC."
|
||||
return 0
|
||||
fi
|
||||
|
||||
setup_cleanup
|
||||
setup_prepare
|
||||
|
||||
grep -q 0 /sys/class/net/$h1/addr_assign_type
|
||||
check_err $? "Permanent address assign type for $h1 is not set"
|
||||
grep -q 0 /sys/class/net/$h2/addr_assign_type
|
||||
check_err $? "Permanent address assign type for $h2 is not set"
|
||||
|
||||
setup_cleanup
|
||||
virtio_filter_feature_add $h1 $VIRTIO_NET_F_MAC
|
||||
virtio_filter_feature_add $h2 $VIRTIO_NET_F_MAC
|
||||
setup_prepare
|
||||
|
||||
grep -q 0 /sys/class/net/$h1/addr_assign_type
|
||||
check_fail $? "Permanent address assign type for $h1 is set when F_MAC feature is filtered"
|
||||
grep -q 0 /sys/class/net/$h2/addr_assign_type
|
||||
check_fail $? "Permanent address assign type for $h2 is set when F_MAC feature is filtered"
|
||||
|
||||
ping_do $h1 $H2_IPV4
|
||||
check_err $? "Ping failed"
|
||||
|
||||
log_test "$test_name"
|
||||
}
|
||||
|
||||
setup_prepare()
|
||||
{
|
||||
virtio_device_rebind $h1
|
||||
virtio_device_rebind $h2
|
||||
wait_for_dev $h1
|
||||
wait_for_dev $h2
|
||||
|
||||
vrf_prepare
|
||||
|
||||
h1_create
|
||||
h2_create
|
||||
}
|
||||
|
||||
setup_cleanup()
|
||||
{
|
||||
h2_destroy
|
||||
h1_destroy
|
||||
|
||||
vrf_cleanup
|
||||
|
||||
virtio_filter_features_clear $h1
|
||||
virtio_filter_features_clear $h2
|
||||
virtio_device_rebind $h1
|
||||
virtio_device_rebind $h2
|
||||
wait_for_dev $h1
|
||||
wait_for_dev $h2
|
||||
}
|
||||
|
||||
cleanup()
|
||||
{
|
||||
pre_cleanup
|
||||
setup_cleanup
|
||||
}
|
||||
|
||||
check_driver $h1 "virtio_net"
|
||||
check_driver $h2 "virtio_net"
|
||||
check_virtio_debugfs $h1
|
||||
check_virtio_debugfs $h2
|
||||
|
||||
trap cleanup EXIT
|
||||
|
||||
setup_prepare
|
||||
|
||||
tests_run
|
||||
|
||||
exit "$EXIT_STATUS"
|
||||
Reference in New Issue
Block a user