Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0-only
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 # netdevsim starts out with None/None
0012 s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
0013 check $? "$s" "Configured FEC encodings: None
0014 Active FEC encoding: None"
0015 
0016 # Test Auto
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 # Test case in-sensitivity
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 # Test mutliple bits
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 # Make sure other link modes are rejected
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 # Try JSON
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 # Test error injection
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