Commit af51d6bd authored by Ido Schimmel's avatar Ido Schimmel Committed by David S. Miller
Browse files

selftests: mlxsw: Add PCI reset test



Test that PCI reset works correctly by verifying that only the expected
reset methods are supported and that after issuing the reset the ifindex
of the port changes.

Signed-off-by: default avatarIdo Schimmel <idosch@nvidia.com>
Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
Signed-off-by: default avatarPetr Machata <petrm@nvidia.com>
Reviewed-by: default avatarSimon Horman <horms@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 5e12d089
Loading
Loading
Loading
Loading
+58 −0
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Test that PCI reset works correctly by verifying that only the expected reset
# methods are supported and that after issuing the reset the ifindex of the
# port changes.

lib_dir=$(dirname $0)/../../../net/forwarding

ALL_TESTS="
	pci_reset_test
"
NUM_NETIFS=1
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh

pci_reset_test()
{
	RET=0

	local bus=$(echo $DEVLINK_DEV | cut -d '/' -f 1)
	local bdf=$(echo $DEVLINK_DEV | cut -d '/' -f 2)

	if [ $bus != "pci" ]; then
		check_err 1 "devlink device is not a PCI device"
		log_test "pci reset"
		return
	fi

	if [ ! -f /sys/bus/pci/devices/$bdf/reset_method ]; then
		check_err 1 "reset is not supported"
		log_test "pci reset"
		return
	fi

	[[ $(cat /sys/bus/pci/devices/$bdf/reset_method) == "bus" ]]
	check_err $? "only \"bus\" reset method should be supported"

	local ifindex_pre=$(ip -j link show dev $swp1 | jq '.[]["ifindex"]')

	echo 1 > /sys/bus/pci/devices/$bdf/reset
	check_err $? "reset failed"

	# Wait for udev to rename newly created netdev.
	udevadm settle

	local ifindex_post=$(ip -j link show dev $swp1 | jq '.[]["ifindex"]')

	[[ $ifindex_pre != $ifindex_post ]]
	check_err $? "reset not performed"

	log_test "pci reset"
}

swp1=${NETIFS[p1]}
tests_run

exit $EXIT_STATUS