1 #!/bin/bash 2 # SPDX-License-Identifier: GPL-2.0-only 3 4 source ethtool-common.sh 5 6 function get_value { 7 local query="${SETTINGS_MAP[$1]}" 8 9 echo $(ethtool -g $NSIM_NETDEV | \ 10 tail -n +$CURR_SETT_LINE | \ 11 awk -F':' -v pattern="$query:" '$0 ~ pattern {gsub(/[\t ]/, "", $2); print $2}') 12 } 13 14 function update_current_settings { 15 for key in ${!SETTINGS_MAP[@]}; do 16 CURRENT_SETTINGS[$key]=$(get_value $key) 17 done 18 echo ${CURRENT_SETTINGS[@]} 19 } 20 21 if ! ethtool -h | grep -q set-ring >/dev/null; then 22 echo "SKIP: No --set-ring support in ethtool" 23 exit 4 24 fi 25 26 NSIM_NETDEV=$(make_netdev) 27 28 set -o pipefail 29 30 declare -A SETTINGS_MAP=( 31 ["rx"]="RX" 32 ["rx-mini"]="RX Mini" 33 ["rx-jumbo"]="RX Jumbo" 34 ["tx"]="TX" 35 ) 36 37 declare -A EXPECTED_SETTINGS=( 38 ["rx"]="" 39 ["rx-mini"]="" 40 ["rx-jumbo"]="" 41 ["tx"]="" 42 ) 43 44 declare -A CURRENT_SETTINGS=( 45 ["rx"]="" 46 ["rx-mini"]="" 47 ["rx-jumbo"]="" 48 ["tx"]="" 49 ) 50 51 MAX_VALUE=$((RANDOM % $((2**32-1)))) 52 RING_MAX_LIST=$(ls $NSIM_DEV_DFS/ethtool/ring/) 53 54 for ring_max_entry in $RING_MAX_LIST; do 55 echo $MAX_VALUE > $NSIM_DEV_DFS/ethtool/ring/$ring_max_entry 56 done 57 58 CURR_SETT_LINE=$(ethtool -g $NSIM_NETDEV | grep -i -m1 -n 'Current hardware settings' | cut -f1 -d:) 59 60 # populate the expected settings map 61 for key in ${!SETTINGS_MAP[@]}; do 62 EXPECTED_SETTINGS[$key]=$(get_value $key) 63 done 64 65 # test 66 for key in ${!SETTINGS_MAP[@]}; do 67 value=$((RANDOM % $MAX_VALUE)) 68 69 ethtool -G $NSIM_NETDEV "$key" "$value" 70 71 EXPECTED_SETTINGS[$key]="$value" 72 expected=${EXPECTED_SETTINGS[@]} 73 current=$(update_current_settings) 74 75 check $? "$current" "$expected" 76 set +x 77 done 78 79 if [ $num_errors -eq 0 ]; then 80 echo "PASSED all $((num_passes)) checks" 81 exit 0 82 else 83 echo "FAILED $num_errors/$((num_errors+num_passes)) checks" 84 exit 1 85 fi
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.