Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
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)) # ms
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