~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/testing/selftests/drivers/net/netdevsim/ethtool-ring.sh

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  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

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php