| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- #!/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
- # Since commit 2b3ddcb35357 ("ethtool: fec: Change the prompt ...")
- # in ethtool CLI the Configured lines start with Supported/Configured.
- configured=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2 | head -1 | cut -d' ' -f1)
- # 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 multiple 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
|