#!/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