0001
0002
0003
0004 ALL_TESTS="
0005 autoneg
0006 autoneg_force_mode
0007 no_cable
0008 "
0009
0010 NUM_NETIFS=2
0011 source lib.sh
0012 source ethtool_lib.sh
0013
0014 TIMEOUT=$((WAIT_TIMEOUT * 1000))
0015
0016 setup_prepare()
0017 {
0018 swp1=${NETIFS[p1]}
0019 swp2=${NETIFS[p2]}
0020 swp3=$NETIF_NO_CABLE
0021 }
0022
0023 ethtool_ext_state()
0024 {
0025 local dev=$1; shift
0026 local expected_ext_state=$1; shift
0027 local expected_ext_substate=${1:-""}; shift
0028
0029 local ext_state=$(ethtool $dev | grep "Link detected" \
0030 | cut -d "(" -f2 | cut -d ")" -f1)
0031 local ext_substate=$(echo $ext_state | cut -sd "," -f2 \
0032 | sed -e 's/^[[:space:]]*//')
0033 ext_state=$(echo $ext_state | cut -d "," -f1)
0034
0035 if [[ $ext_state != $expected_ext_state ]]; then
0036 echo "Expected \"$expected_ext_state\", got \"$ext_state\""
0037 return 1
0038 fi
0039 if [[ $ext_substate != $expected_ext_substate ]]; then
0040 echo "Expected \"$expected_ext_substate\", got \"$ext_substate\""
0041 return 1
0042 fi
0043 }
0044
0045 autoneg()
0046 {
0047 local msg
0048
0049 RET=0
0050
0051 ip link set dev $swp1 up
0052
0053 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
0054 "Autoneg" "No partner detected")
0055 check_err $? "$msg"
0056
0057 log_test "Autoneg, No partner detected"
0058
0059 ip link set dev $swp1 down
0060 }
0061
0062 autoneg_force_mode()
0063 {
0064 local msg
0065
0066 RET=0
0067
0068 ip link set dev $swp1 up
0069 ip link set dev $swp2 up
0070
0071 local -a speeds_arr=($(different_speeds_get $swp1 $swp2 0 0))
0072 local speed1=${speeds_arr[0]}
0073 local speed2=${speeds_arr[1]}
0074
0075 ethtool_set $swp1 speed $speed1 autoneg off
0076 ethtool_set $swp2 speed $speed2 autoneg off
0077
0078 msg=$(busywait $TIMEOUT ethtool_ext_state $swp1 \
0079 "Autoneg" "No partner detected during force mode")
0080 check_err $? "$msg"
0081
0082 msg=$(busywait $TIMEOUT ethtool_ext_state $swp2 \
0083 "Autoneg" "No partner detected during force mode")
0084 check_err $? "$msg"
0085
0086 log_test "Autoneg, No partner detected during force mode"
0087
0088 ethtool -s $swp2 autoneg on
0089 ethtool -s $swp1 autoneg on
0090
0091 ip link set dev $swp2 down
0092 ip link set dev $swp1 down
0093 }
0094
0095 no_cable()
0096 {
0097 local msg
0098
0099 RET=0
0100
0101 ip link set dev $swp3 up
0102
0103 msg=$(busywait $TIMEOUT ethtool_ext_state $swp3 "No cable")
0104 check_err $? "$msg"
0105
0106 log_test "No cable"
0107
0108 ip link set dev $swp3 down
0109 }
0110
0111 setup_prepare
0112
0113 tests_run
0114
0115 exit $EXIT_STATUS