tcp: add missing family to tcp_set_ca_state() tracepoint
[platform/kernel/linux-rpi.git] / tools / testing / selftests / net / forwarding / ethtool_extended_state.sh
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0
3
4 ALL_TESTS="
5         autoneg
6         autoneg_force_mode
7         no_cable
8 "
9
10 NUM_NETIFS=2
11 source lib.sh
12 source ethtool_lib.sh
13
14 TIMEOUT=$((WAIT_TIMEOUT * 1000)) # ms
15
16 setup_prepare()
17 {
18         swp1=${NETIFS[p1]}
19         swp2=${NETIFS[p2]}
20         swp3=$NETIF_NO_CABLE
21 }
22
23 ethtool_ext_state()
24 {
25         local dev=$1; shift
26         local expected_ext_state=$1; shift
27         local expected_ext_substate=${1:-""}; shift
28
29         local ext_state=$(ethtool $dev | grep "Link detected" \
30                 | cut -d "(" -f2 | cut -d ")" -f1)
31         local ext_substate=$(echo $ext_state | cut -sd "," -f2 \
32                 | sed -e 's/^[[:space:]]*//')
33         ext_state=$(echo $ext_state | cut -d "," -f1)
34
35         if [[ $ext_state != $expected_ext_state ]]; then
36                 echo "Expected \"$expected_ext_state\", got \"$ext_state\""
37                 return 1
38         fi
39         if [[ $ext_substate != $expected_ext_substate ]]; then
40                 echo "Expected \"$expected_ext_substate\", got \"$ext_substate\""
41                 return 1
42         fi
43 }
44
45 autoneg()
46 {
47         local msg
48
49         RET=0
50
51         ip link set dev $swp1 up
52
53         msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
54                         "Autoneg" "No partner detected")
55         check_err $? "$msg"
56
57         log_test "Autoneg, No partner detected"
58
59         ip link set dev $swp1 down
60 }
61
62 autoneg_force_mode()
63 {
64         local msg
65
66         RET=0
67
68         ip link set dev $swp1 up
69         ip link set dev $swp2 up
70
71         local -a speeds_arr=($(different_speeds_get $swp1 $swp2 0 0))
72         local speed1=${speeds_arr[0]}
73         local speed2=${speeds_arr[1]}
74
75         ethtool_set $swp1 speed $speed1 autoneg off
76         ethtool_set $swp2 speed $speed2 autoneg off
77
78         msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
79                         "Autoneg" "No partner detected during force mode")
80         check_err $? "$msg"
81
82         msg=$(busywait $TIMEOUT ethtool_ext_state $swp2 \
83                         "Autoneg" "No partner detected during force mode")
84         check_err $? "$msg"
85
86         log_test "Autoneg, No partner detected during force mode"
87
88         ethtool -s $swp2 autoneg on
89         ethtool -s $swp1 autoneg on
90
91         ip link set dev $swp2 down
92         ip link set dev $swp1 down
93 }
94
95 no_cable()
96 {
97         local msg
98
99         RET=0
100
101         ip link set dev $swp3 up
102
103         msg=$(busywait $TIMEOUT ethtool_ext_state $swp3 "No cable")
104         check_err $? "$msg"
105
106         log_test "No cable"
107
108         ip link set dev $swp3 down
109 }
110
111 setup_prepare
112
113 tests_run
114
115 exit $EXIT_STATUS