Path: blob/master/tools/testing/selftests/drivers/net/netdevsim/ethtool-fec.sh
26299 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.0-only23source ethtool-common.sh45NSIM_NETDEV=$(make_netdev)6[ a$ETHTOOL == a ] && ETHTOOL=ethtool78set -o pipefail910# Since commit 2b3ddcb35357 ("ethtool: fec: Change the prompt ...")11# in ethtool CLI the Configured lines start with Supported/Configured.12configured=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2 | head -1 | cut -d' ' -f1)1314# netdevsim starts out with None/None15s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)16check $? "$s" "$configured FEC encodings: None17Active FEC encoding: None"1819# Test Auto20$ETHTOOL --set-fec $NSIM_NETDEV encoding auto21check $?22s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)23check $? "$s" "$configured FEC encodings: Auto24Active FEC encoding: Off"2526# Test case in-sensitivity27for o in off Off OFF; do28$ETHTOOL --set-fec $NSIM_NETDEV encoding $o29check $?30s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)31check $? "$s" "$configured FEC encodings: Off32Active FEC encoding: Off"33done3435for o in BaseR baser BAser; do36$ETHTOOL --set-fec $NSIM_NETDEV encoding $o37check $?38s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)39check $? "$s" "$configured FEC encodings: BaseR40Active FEC encoding: BaseR"41done4243for o in llrs rs; do44$ETHTOOL --set-fec $NSIM_NETDEV encoding $o45check $?46s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)47check $? "$s" "$configured FEC encodings: ${o^^}48Active FEC encoding: ${o^^}"49done5051# Test multiple bits52$ETHTOOL --set-fec $NSIM_NETDEV encoding rs llrs53check $?54s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)55check $? "$s" "$configured FEC encodings: RS LLRS56Active FEC encoding: LLRS"5758$ETHTOOL --set-fec $NSIM_NETDEV encoding rs off auto59check $?60s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)61check $? "$s" "$configured FEC encodings: Auto Off RS62Active FEC encoding: RS"6364# Make sure other link modes are rejected65$ETHTOOL --set-fec $NSIM_NETDEV encoding FIBRE 2>/dev/null66check $? '' '' 16768$ETHTOOL --set-fec $NSIM_NETDEV encoding bla-bla-bla 2>/dev/null69check $? '' '' 17071# Try JSON72$ETHTOOL --json --show-fec $NSIM_NETDEV | jq empty >>/dev/null 2>&173if [ $? -eq 0 ]; then74$ETHTOOL --set-fec $NSIM_NETDEV encoding auto75check $?7677s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')78check $? "$s" '"Auto"'79s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')80check $? "$s" '"Off"'8182$ETHTOOL --set-fec $NSIM_NETDEV encoding auto RS83check $?8485s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')86check $? "$s" '"Auto"87"RS"'88s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')89check $? "$s" '"RS"'90fi9192# Test error injection93echo 11 > $NSIM_DEV_DFS/ethtool/get_err9495$ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&196check $? '' '' 19798echo 0 > $NSIM_DEV_DFS/ethtool/get_err99echo 11 > $NSIM_DEV_DFS/ethtool/set_err100101$ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1102check $?103104$ETHTOOL --set-fec $NSIM_NETDEV encoding RS 2>/dev/null105check $? '' '' 1106107if [ $num_errors -eq 0 ]; then108echo "PASSED all $((num_passes)) checks"109exit 0110else111echo "FAILED $num_errors/$((num_errors+num_passes)) checks"112exit 1113fi114115116