1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0 3 # 4 # Test that PCI reset works correctly by verifying that only the expected reset 5 # methods are supported and that after issuing the reset the ifindex of the 6 # port changes. 7 8 lib_dir=$(dirname $0)/../../../net/forwarding 9 10 ALL_TESTS=" 11 pci_reset_test 12 " 13 NUM_NETIFS=1 14 source $lib_dir/lib.sh 15 source $lib_dir/devlink_lib.sh 16 17 pci_reset_test() 18 { 19 RET=0 20 21 local bus=$(echo $DEVLINK_DEV | cut -d '/' -f 1) 22 local bdf=$(echo $DEVLINK_DEV | cut -d '/' -f 2) 23 24 if [ $bus != "pci" ]; then 25 check_err 1 "devlink device is not a PCI device" 26 log_test "pci reset" 27 return 28 fi 29 30 if [ ! -f /sys/bus/pci/devices/$bdf/reset_method ]; then 31 check_err 1 "reset is not supported" 32 log_test "pci reset" 33 return 34 fi 35 36 [[ $(cat /sys/bus/pci/devices/$bdf/reset_method) == "bus" ]] 37 check_err $? "only \"bus\" reset method should be supported" 38 39 local ifindex_pre=$(ip -j link show dev $swp1 | jq '.[]["ifindex"]') 40 41 echo 1 > /sys/bus/pci/devices/$bdf/reset 42 check_err $? "reset failed" 43 44 # Wait for udev to rename newly created netdev. 45 udevadm settle 46 47 local ifindex_post=$(ip -j link show dev $swp1 | jq '.[]["ifindex"]') 48 49 [[ $ifindex_pre != $ifindex_post ]] 50 check_err $? "reset not performed" 51 52 log_test "pci reset" 53 } 54 55 swp1=${NETIFS[p1]} 56 tests_run 57 58 exit $EXIT_STATUS
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.