Skip to content

Commit

Permalink
selftests: forwarding: Add tests for ethtool extended state
Browse files Browse the repository at this point in the history
Add tests to check ethtool report about extended state.
The tests configure several states and verify that the correct extended
state is reported by ethtool.

Check extended state with substate (Autoneg) and extended state without
substate (No cable).

Signed-off-by: Amit Cohen <amitc@mellanox.com>
Reviewed-by: Petr Machata <petrm@mellanox.com>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
amitcohen1 authored and davem330 committed Jun 30, 2020
1 parent 0433045 commit 7d10bcc
Showing 1 changed file with 102 additions and 0 deletions.
102 changes: 102 additions & 0 deletions tools/testing/selftests/net/forwarding/ethtool_extended_state.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
#!/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

0 comments on commit 7d10bcc

Please sign in to comment.