Merge tag 'trace-printf-v6.13' of git://git.kernel.org/pub/scm/linux/kernel/git/trace...
[drm/drm-misc.git] / tools / testing / selftests / drivers / net / hw / ethtool_extended_state.sh
bloba7584448416ea64eaf60ee94b98d6422a0c21a62
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
4 ALL_TESTS="
5 autoneg
6 autoneg_force_mode
7 no_cable
10 NUM_NETIFS=2
11 lib_dir=$(dirname "$0")
12 source "$lib_dir"/../../../net/forwarding/lib.sh
13 source ethtool_lib.sh
15 TIMEOUT=$((WAIT_TIMEOUT * 1000)) # ms
17 setup_prepare()
19 swp1=${NETIFS[p1]}
20 swp2=${NETIFS[p2]}
21 swp3=$NETIF_NO_CABLE
24 ethtool_ext_state()
26 local dev=$1; shift
27 local expected_ext_state=$1; shift
28 local expected_ext_substate=${1:-""}; shift
30 local ext_state=$(ethtool $dev | grep "Link detected" \
31 | cut -d "(" -f2 | cut -d ")" -f1)
32 local ext_substate=$(echo $ext_state | cut -sd "," -f2 \
33 | sed -e 's/^[[:space:]]*//')
34 ext_state=$(echo $ext_state | cut -d "," -f1)
36 if [[ $ext_state != $expected_ext_state ]]; then
37 echo "Expected \"$expected_ext_state\", got \"$ext_state\""
38 return 1
40 if [[ $ext_substate != $expected_ext_substate ]]; then
41 echo "Expected \"$expected_ext_substate\", got \"$ext_substate\""
42 return 1
46 autoneg()
48 local msg
50 RET=0
52 ip link set dev $swp1 up
54 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
55 "Autoneg" "No partner detected")
56 check_err $? "$msg"
58 log_test "Autoneg, No partner detected"
60 ip link set dev $swp1 down
63 autoneg_force_mode()
65 local msg
67 RET=0
69 ip link set dev $swp1 up
70 ip link set dev $swp2 up
72 local -a speeds_arr=($(different_speeds_get $swp1 $swp2 0 0))
73 local speed1=${speeds_arr[0]}
74 local speed2=${speeds_arr[1]}
76 ethtool_set $swp1 speed $speed1 autoneg off
77 ethtool_set $swp2 speed $speed2 autoneg off
79 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
80 "Autoneg" "No partner detected during force mode")
81 check_err $? "$msg"
83 msg=$(busywait $TIMEOUT ethtool_ext_state $swp2 \
84 "Autoneg" "No partner detected during force mode")
85 check_err $? "$msg"
87 log_test "Autoneg, No partner detected during force mode"
89 ethtool -s $swp2 autoneg on
90 ethtool -s $swp1 autoneg on
92 ip link set dev $swp2 down
93 ip link set dev $swp1 down
96 no_cable()
98 local msg
100 RET=0
102 ip link set dev $swp3 up
104 msg=$(busywait $TIMEOUT ethtool_ext_state $swp3 "No cable")
105 check_err $? "$msg"
107 log_test "No cable"
109 ip link set dev $swp3 down
112 setup_prepare
114 tests_run
116 exit $EXIT_STATUS