117 lines · bash
1#!/bin/bash2# SPDX-License-Identifier: GPL-2.03 4ALL_TESTS="5 autoneg6 autoneg_force_mode7 no_cable8"9 10NUM_NETIFS=211lib_dir=$(dirname "$0")12source "$lib_dir"/../../../net/forwarding/lib.sh13source ethtool_lib.sh14 15TIMEOUT=$((WAIT_TIMEOUT * 1000)) # ms16 17setup_prepare()18{19 swp1=${NETIFS[p1]}20 swp2=${NETIFS[p2]}21 swp3=$NETIF_NO_CABLE22}23 24ethtool_ext_state()25{26 local dev=$1; shift27 local expected_ext_state=$1; shift28 local expected_ext_substate=${1:-""}; shift29 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)35 36 if [[ $ext_state != $expected_ext_state ]]; then37 echo "Expected \"$expected_ext_state\", got \"$ext_state\""38 return 139 fi40 if [[ $ext_substate != $expected_ext_substate ]]; then41 echo "Expected \"$expected_ext_substate\", got \"$ext_substate\""42 return 143 fi44}45 46autoneg()47{48 local msg49 50 RET=051 52 ip link set dev $swp1 up53 54 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \55 "Autoneg" "No partner detected")56 check_err $? "$msg"57 58 log_test "Autoneg, No partner detected"59 60 ip link set dev $swp1 down61}62 63autoneg_force_mode()64{65 local msg66 67 RET=068 69 ip link set dev $swp1 up70 ip link set dev $swp2 up71 72 local -a speeds_arr=($(different_speeds_get $swp1 $swp2 0 0))73 local speed1=${speeds_arr[0]}74 local speed2=${speeds_arr[1]}75 76 ethtool_set $swp1 speed $speed1 autoneg off77 ethtool_set $swp2 speed $speed2 autoneg off78 79 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \80 "Autoneg" "No partner detected during force mode")81 check_err $? "$msg"82 83 msg=$(busywait $TIMEOUT ethtool_ext_state $swp2 \84 "Autoneg" "No partner detected during force mode")85 check_err $? "$msg"86 87 log_test "Autoneg, No partner detected during force mode"88 89 ethtool -s $swp2 autoneg on90 ethtool -s $swp1 autoneg on91 92 ip link set dev $swp2 down93 ip link set dev $swp1 down94}95 96no_cable()97{98 local msg99 100 RET=0101 102 ip link set dev $swp3 up103 104 msg=$(busywait $TIMEOUT ethtool_ext_state $swp3 "No cable")105 check_err $? "$msg"106 107 log_test "No cable"108 109 ip link set dev $swp3 down110}111 112setup_prepare113 114tests_run115 116exit $EXIT_STATUS117