111 lines
2.9 KiB
Bash
111 lines
2.9 KiB
Bash
|
#!/bin/bash
|
||
|
# SPDX-License-Identifier: GPL-2.0-only
|
||
|
|
||
|
source ethtool-common.sh
|
||
|
|
||
|
NSIM_NETDEV=$(make_netdev)
|
||
|
[ a$ETHTOOL == a ] && ETHTOOL=ethtool
|
||
|
|
||
|
set -o pipefail
|
||
|
|
||
|
# netdevsim starts out with None/None
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: None
|
||
|
Active FEC encoding: None"
|
||
|
|
||
|
# Test Auto
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding auto
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: Auto
|
||
|
Active FEC encoding: Off"
|
||
|
|
||
|
# Test case in-sensitivity
|
||
|
for o in off Off OFF; do
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding $o
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: Off
|
||
|
Active FEC encoding: Off"
|
||
|
done
|
||
|
|
||
|
for o in BaseR baser BAser; do
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding $o
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: BaseR
|
||
|
Active FEC encoding: BaseR"
|
||
|
done
|
||
|
|
||
|
for o in llrs rs; do
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding $o
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: ${o^^}
|
||
|
Active FEC encoding: ${o^^}"
|
||
|
done
|
||
|
|
||
|
# Test mutliple bits
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding rs llrs
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: RS LLRS
|
||
|
Active FEC encoding: LLRS"
|
||
|
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding rs off auto
|
||
|
check $?
|
||
|
s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
|
||
|
check $? "$s" "Configured FEC encodings: Auto Off RS
|
||
|
Active FEC encoding: RS"
|
||
|
|
||
|
# Make sure other link modes are rejected
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding FIBRE 2>/dev/null
|
||
|
check $? '' '' 1
|
||
|
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding bla-bla-bla 2>/dev/null
|
||
|
check $? '' '' 1
|
||
|
|
||
|
# Try JSON
|
||
|
$ETHTOOL --json --show-fec $NSIM_NETDEV | jq empty >>/dev/null 2>&1
|
||
|
if [ $? -eq 0 ]; then
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding auto
|
||
|
check $?
|
||
|
|
||
|
s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
|
||
|
check $? "$s" '"Auto"'
|
||
|
s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
|
||
|
check $? "$s" '"Off"'
|
||
|
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding auto RS
|
||
|
check $?
|
||
|
|
||
|
s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
|
||
|
check $? "$s" '"Auto"
|
||
|
"RS"'
|
||
|
s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
|
||
|
check $? "$s" '"RS"'
|
||
|
fi
|
||
|
|
||
|
# Test error injection
|
||
|
echo 11 > $NSIM_DEV_DFS/ethtool/get_err
|
||
|
|
||
|
$ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1
|
||
|
check $? '' '' 1
|
||
|
|
||
|
echo 0 > $NSIM_DEV_DFS/ethtool/get_err
|
||
|
echo 11 > $NSIM_DEV_DFS/ethtool/set_err
|
||
|
|
||
|
$ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1
|
||
|
check $?
|
||
|
|
||
|
$ETHTOOL --set-fec $NSIM_NETDEV encoding RS 2>/dev/null
|
||
|
check $? '' '' 1
|
||
|
|
||
|
if [ $num_errors -eq 0 ]; then
|
||
|
echo "PASSED all $((num_passes)) checks"
|
||
|
exit 0
|
||
|
else
|
||
|
echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
|
||
|
exit 1
|
||
|
fi
|