59 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03#4# Test that PCI reset works correctly by verifying that only the expected reset5# methods are supported and that after issuing the reset the ifindex of the6# port changes.7 8lib_dir=$(dirname $0)/../../../net/forwarding9 10ALL_TESTS="11 pci_reset_test12"13NUM_NETIFS=114source $lib_dir/lib.sh15source $lib_dir/devlink_lib.sh16 17pci_reset_test()18{19 RET=020 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" ]; then25 check_err 1 "devlink device is not a PCI device"26 log_test "pci reset"27 return28 fi29 30 if [ ! -f /sys/bus/pci/devices/$bdf/reset_method ]; then31 check_err 1 "reset is not supported"32 log_test "pci reset"33 return34 fi35 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/reset42 check_err $? "reset failed"43 44 # Wait for udev to rename newly created netdev.45 udevadm settle46 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 55swp1=${NETIFS[p1]}56tests_run57 58exit $EXIT_STATUS59