0001
0002
0003
0004 source ethtool-common.sh
0005
0006 NSIM_NETDEV=$(make_netdev)
0007 [ a$ETHTOOL == a ] && ETHTOOL=ethtool
0008
0009 set -o pipefail
0010
0011
0012 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0013 check $? "$s" "Configured FEC encodings: None
0014 Active FEC encoding: None"
0015
0016
0017 $ETHTOOL --set-fec $NSIM_NETDEV encoding auto
0018 check $?
0019 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0020 check $? "$s" "Configured FEC encodings: Auto
0021 Active FEC encoding: Off"
0022
0023
0024 for o in off Off OFF; do
0025 $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
0026 check $?
0027 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0028 check $? "$s" "Configured FEC encodings: Off
0029 Active FEC encoding: Off"
0030 done
0031
0032 for o in BaseR baser BAser; do
0033 $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
0034 check $?
0035 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0036 check $? "$s" "Configured FEC encodings: BaseR
0037 Active FEC encoding: BaseR"
0038 done
0039
0040 for o in llrs rs; do
0041 $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
0042 check $?
0043 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0044 check $? "$s" "Configured FEC encodings: ${o^^}
0045 Active FEC encoding: ${o^^}"
0046 done
0047
0048
0049 $ETHTOOL --set-fec $NSIM_NETDEV encoding rs llrs
0050 check $?
0051 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0052 check $? "$s" "Configured FEC encodings: RS LLRS
0053 Active FEC encoding: LLRS"
0054
0055 $ETHTOOL --set-fec $NSIM_NETDEV encoding rs off auto
0056 check $?
0057 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0058 check $? "$s" "Configured FEC encodings: Auto Off RS
0059 Active FEC encoding: RS"
0060
0061
0062 $ETHTOOL --set-fec $NSIM_NETDEV encoding FIBRE 2>/dev/null
0063 check $? '' '' 1
0064
0065 $ETHTOOL --set-fec $NSIM_NETDEV encoding bla-bla-bla 2>/dev/null
0066 check $? '' '' 1
0067
0068
0069 $ETHTOOL --json --show-fec $NSIM_NETDEV | jq empty >>/dev/null 2>&1
0070 if [ $? -eq 0 ]; then
0071 $ETHTOOL --set-fec $NSIM_NETDEV encoding auto
0072 check $?
0073
0074 s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
0075 check $? "$s" '"Auto"'
0076 s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
0077 check $? "$s" '"Off"'
0078
0079 $ETHTOOL --set-fec $NSIM_NETDEV encoding auto RS
0080 check $?
0081
0082 s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
0083 check $? "$s" '"Auto"
0084 "RS"'
0085 s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
0086 check $? "$s" '"RS"'
0087 fi
0088
0089
0090 echo 11 > $NSIM_DEV_DFS/ethtool/get_err
0091
0092 $ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1
0093 check $? '' '' 1
0094
0095 echo 0 > $NSIM_DEV_DFS/ethtool/get_err
0096 echo 11 > $NSIM_DEV_DFS/ethtool/set_err
0097
0098 $ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1
0099 check $?
0100
0101 $ETHTOOL --set-fec $NSIM_NETDEV encoding RS 2>/dev/null
0102 check $? '' '' 1
0103
0104 if [ $num_errors -eq 0 ]; then
0105 echo "PASSED all $((num_passes)) checks"
0106 exit 0
0107 else
0108 echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
0109 exit 1
0110 fi