Skip to content

Commit

Permalink
selftests: mlxsw: Add PCI reset test
Browse files Browse the repository at this point in the history
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: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
idosch authored and davem330 committed Nov 18, 2023
1 parent 5e12d08 commit af51d6b
Showing 1 changed file with 58 additions and 0 deletions.
58 changes: 58 additions & 0 deletions tools/testing/selftests/drivers/net/mlxsw/pci_reset.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
#!/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

0 comments on commit af51d6b

Please sign in to comment.