cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

ethtool-fec.sh (2941B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0-only
      3
      4source ethtool-common.sh
      5
      6NSIM_NETDEV=$(make_netdev)
      7[ a$ETHTOOL == a ] && ETHTOOL=ethtool
      8
      9set -o pipefail
     10
     11# netdevsim starts out with None/None
     12s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     13check $? "$s" "Configured FEC encodings: None
     14Active FEC encoding: None"
     15
     16# Test Auto
     17$ETHTOOL --set-fec $NSIM_NETDEV encoding auto
     18check $?
     19s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     20check $? "$s" "Configured FEC encodings: Auto
     21Active FEC encoding: Off"
     22
     23# Test case in-sensitivity
     24for o in off Off OFF; do
     25    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
     26    check $?
     27    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     28    check $? "$s" "Configured FEC encodings: Off
     29Active FEC encoding: Off"
     30done
     31
     32for o in BaseR baser BAser; do
     33    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
     34    check $?
     35    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     36    check $? "$s" "Configured FEC encodings: BaseR
     37Active FEC encoding: BaseR"
     38done
     39
     40for o in llrs rs; do
     41    $ETHTOOL --set-fec $NSIM_NETDEV encoding $o
     42    check $?
     43    s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     44    check $? "$s" "Configured FEC encodings: ${o^^}
     45Active FEC encoding: ${o^^}"
     46done
     47
     48# Test mutliple bits
     49$ETHTOOL --set-fec $NSIM_NETDEV encoding rs llrs
     50check $?
     51s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     52check $? "$s" "Configured FEC encodings: RS LLRS
     53Active FEC encoding: LLRS"
     54
     55$ETHTOOL --set-fec $NSIM_NETDEV encoding rs off auto
     56check $?
     57s=$($ETHTOOL --show-fec $NSIM_NETDEV | tail -2)
     58check $? "$s" "Configured FEC encodings: Auto Off RS
     59Active FEC encoding: RS"
     60
     61# Make sure other link modes are rejected
     62$ETHTOOL --set-fec $NSIM_NETDEV encoding FIBRE 2>/dev/null
     63check $? '' '' 1
     64
     65$ETHTOOL --set-fec $NSIM_NETDEV encoding bla-bla-bla 2>/dev/null
     66check $? '' '' 1
     67
     68# Try JSON
     69$ETHTOOL --json --show-fec $NSIM_NETDEV | jq empty >>/dev/null 2>&1
     70if [ $? -eq 0 ]; then
     71    $ETHTOOL --set-fec $NSIM_NETDEV encoding auto
     72    check $?
     73
     74    s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
     75    check $? "$s" '"Auto"'
     76    s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
     77    check $? "$s" '"Off"'
     78
     79    $ETHTOOL --set-fec $NSIM_NETDEV encoding auto RS
     80    check $?
     81
     82    s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].config[]')
     83    check $? "$s" '"Auto"
     84"RS"'
     85    s=$($ETHTOOL --json --show-fec $NSIM_NETDEV | jq '.[].active[]')
     86    check $? "$s" '"RS"'
     87fi
     88
     89# Test error injection
     90echo 11 > $NSIM_DEV_DFS/ethtool/get_err
     91
     92$ETHTOOL --show-fec $NSIM_NETDEV >>/dev/null 2>&1
     93check $? '' '' 1
     94
     95echo 0 > $NSIM_DEV_DFS/ethtool/get_err
     96echo 11 > $NSIM_DEV_DFS/ethtool/set_err
     97
     98$ETHTOOL --show-fec $NSIM_NETDEV  >>/dev/null 2>&1
     99check $?
    100
    101$ETHTOOL --set-fec $NSIM_NETDEV encoding RS 2>/dev/null
    102check $? '' '' 1
    103
    104if [ $num_errors -eq 0 ]; then
    105    echo "PASSED all $((num_passes)) checks"
    106    exit 0
    107else
    108    echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
    109    exit 1
    110fi