165 lines · 3.5 KB · Shell
RawDownload
#!/bin/bash# SPDX-License-Identifier: GPL-2.0 lib_dir=$(dirname $0)/../../../net/forwarding ALL_TESTS="fw_flash_test params_test regions_test"NUM_NETIFS=0source $lib_dir/lib.sh BUS_ADDR=10PORT_COUNT=4DEV_NAME=netdevsim$BUS_ADDRSYSFS_NET_DIR=/sys/bus/netdevsim/devices/$DEV_NAME/net/DEBUGFS_DIR=/sys/kernel/debug/netdevsim/$DEV_NAME/DL_HANDLE=netdevsim/$DEV_NAME fw_flash_test(){	RET=0 	devlink dev flash $DL_HANDLE file dummy	check_err $? "Failed to flash with status updates on" 	echo "n"> $DEBUGFS_DIR/fw_update_status	check_err $? "Failed to disable status updates" 	devlink dev flash $DL_HANDLE file dummy	check_err $? "Failed to flash with status updates off" 	log_test "fw flash test"} param_get(){	local name=$1 	cmd_jq "devlink dev param show $DL_HANDLE name $name -j" \	       '.[][][].values[] | select(.cmode == "driverinit").value'} param_set(){	local name=$1	local value=$2 	devlink dev param set $DL_HANDLE name $name cmode driverinit value $value} check_value(){	local name=$1	local phase_name=$2	local expected_param_value=$3	local expected_debugfs_value=$4	local value 	value=$(param_get $name)	check_err $? "Failed to get $name param value"	[ "$value" == "$expected_param_value" ]	check_err $? "Unexpected $phase_name $name param value"	value=$(<$DEBUGFS_DIR/$name)	check_err $? "Failed to get $name debugfs value"	[ "$value" == "$expected_debugfs_value" ]	check_err $? "Unexpected $phase_name $name debugfs value"} params_test(){	RET=0 	local max_macs	local test1 	check_value max_macs initial 32 32	check_value test1 initial true Y 	param_set max_macs 16	check_err $? "Failed to set max_macs param value"	param_set test1 false	check_err $? "Failed to set test1 param value" 	check_value max_macs post-set 16 32	check_value test1 post-set false Y 	devlink dev reload $DL_HANDLE 	check_value max_macs post-reload 16 16	check_value test1 post-reload false N 	log_test "params test"} check_region_size(){	local name=$1	local size 	size=$(devlink region show $DL_HANDLE/$name -j | jq -e -r '.[][].size')	check_err $? "Failed to get $name region size"	[ $size -eq 32768 ]	check_err $? "Invalid $name region size"} check_region_snapshot_count(){	local name=$1	local phase_name=$2	local expected_count=$3	local count 	count=$(devlink region show $DL_HANDLE/$name -j | jq -e -r '.[][].snapshot | length')	[ $count -eq $expected_count ]	check_err $? "Unexpected $phase_name snapshot count"} regions_test(){	RET=0 	local count 	check_region_size dummy	check_region_snapshot_count dummy initial 0 	echo ""> $DEBUGFS_DIR/take_snapshot	check_err $? "Failed to take first dummy region snapshot"	check_region_snapshot_count dummy post-first-snapshot 1 	echo ""> $DEBUGFS_DIR/take_snapshot	check_err $? "Failed to take second dummy region snapshot"	check_region_snapshot_count dummy post-second-snapshot 2 	echo ""> $DEBUGFS_DIR/take_snapshot	check_err $? "Failed to take third dummy region snapshot"	check_region_snapshot_count dummy post-third-snapshot 3 	devlink region del $DL_HANDLE/dummy snapshot 1	check_err $? "Failed to delete first dummy region snapshot" 	check_region_snapshot_count dummy post-first-delete 2 	log_test "regions test"} setup_prepare(){	modprobe netdevsim	echo "$BUS_ADDR $PORT_COUNT" > /sys/bus/netdevsim/new_device	while [ ! -d $SYSFS_NET_DIR ] ; do :; done} cleanup(){	pre_cleanup	echo "$BUS_ADDR" > /sys/bus/netdevsim/del_device	modprobe -r netdevsim} trap cleanup EXIT setup_prepare tests_run exit $EXIT_STATUS