#!/bin/bash # SPDX-License-Identifier: GPL-2.0 ALL_TESTS=" autoneg autoneg_force_mode no_cable " NUM_NETIFS=2 source lib.sh source ethtool_lib.sh setup_prepare() { swp1=${NETIFS[p1]} swp2=${NETIFS[p2]} swp3=$NETIF_NO_CABLE } ethtool_extended_state_check() { local dev=$1; shift local expected_ext_state=$1; shift local expected_ext_substate=${1:-""}; shift local ext_state=$(ethtool $dev | grep "Link detected" \ | cut -d "(" -f2 | cut -d ")" -f1) local ext_substate=$(echo $ext_state | cut -sd "," -f2 \ | sed -e 's/^[[:space:]]*//') ext_state=$(echo $ext_state | cut -d "," -f1) [[ $ext_state == $expected_ext_state ]] check_err $? "Expected \"$expected_ext_state\", got \"$ext_state\"" [[ $ext_substate == $expected_ext_substate ]] check_err $? "Expected \"$expected_ext_substate\", got \"$ext_substate\"" } autoneg() { RET=0 ip link set dev $swp1 up sleep 4 ethtool_extended_state_check $swp1 "Autoneg" "No partner detected" log_test "Autoneg, No partner detected" ip link set dev $swp1 down } autoneg_force_mode() { RET=0 ip link set dev $swp1 up ip link set dev $swp2 up local -a speeds_arr=($(different_speeds_get $swp1 $swp2 0 0)) local speed1=${speeds_arr[0]} local speed2=${speeds_arr[1]} ethtool_set $swp1 speed $speed1 autoneg off ethtool_set $swp2 speed $speed2 autoneg off sleep 4 ethtool_extended_state_check $swp1 "Autoneg" \ "No partner detected during force mode" ethtool_extended_state_check $swp2 "Autoneg" \ "No partner detected during force mode" log_test "Autoneg, No partner detected during force mode" ethtool -s $swp2 autoneg on ethtool -s $swp1 autoneg on ip link set dev $swp2 down ip link set dev $swp1 down } no_cable() { RET=0 ip link set dev $swp3 up sleep 1 ethtool_extended_state_check $swp3 "No cable" log_test "No cable" ip link set dev $swp3 down } setup_prepare tests_run exit $EXIT_STATUS