Skip to content

Commit af51d6b

Browse files
idoschdavem330
authored andcommitted
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: Ido Schimmel <[email protected]> Reviewed-by: Petr Machata <[email protected]> Signed-off-by: Petr Machata <[email protected]> Reviewed-by: Simon Horman <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 5e12d08 commit af51d6b

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
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

0 commit comments

Comments
 (0)