#!/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
#!/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=0
source $lib_dir/lib.sh
BUS_ADDR=10
PORT_COUNT=4
DEV_NAME=netdevsim$BUS_ADDR
SYSFS_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