Path: blob/master/tools/testing/selftests/drivers/net/netdevsim/ethtool-ring.sh
26299 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.0-only23source ethtool-common.sh45function get_value {6local query="${SETTINGS_MAP[$1]}"78echo $(ethtool -g $NSIM_NETDEV | \9tail -n +$CURR_SETT_LINE | \10awk -F':' -v pattern="$query:" '$0 ~ pattern {gsub(/[\t ]/, "", $2); print $2}')11}1213function update_current_settings {14for key in ${!SETTINGS_MAP[@]}; do15CURRENT_SETTINGS[$key]=$(get_value $key)16done17echo ${CURRENT_SETTINGS[@]}18}1920if ! ethtool -h | grep -q set-ring >/dev/null; then21echo "SKIP: No --set-ring support in ethtool"22exit 423fi2425NSIM_NETDEV=$(make_netdev)2627set -o pipefail2829declare -A SETTINGS_MAP=(30["rx"]="RX"31["rx-mini"]="RX Mini"32["rx-jumbo"]="RX Jumbo"33["tx"]="TX"34)3536declare -A EXPECTED_SETTINGS=(37["rx"]=""38["rx-mini"]=""39["rx-jumbo"]=""40["tx"]=""41)4243declare -A CURRENT_SETTINGS=(44["rx"]=""45["rx-mini"]=""46["rx-jumbo"]=""47["tx"]=""48)4950MAX_VALUE=$((RANDOM % $((2**32-1))))51RING_MAX_LIST=$(ls $NSIM_DEV_DFS/ethtool/ring/)5253for ring_max_entry in $RING_MAX_LIST; do54echo $MAX_VALUE > $NSIM_DEV_DFS/ethtool/ring/$ring_max_entry55done5657CURR_SETT_LINE=$(ethtool -g $NSIM_NETDEV | grep -i -m1 -n 'Current hardware settings' | cut -f1 -d:)5859# populate the expected settings map60for key in ${!SETTINGS_MAP[@]}; do61EXPECTED_SETTINGS[$key]=$(get_value $key)62done6364# test65for key in ${!SETTINGS_MAP[@]}; do66value=$((RANDOM % $MAX_VALUE))6768ethtool -G $NSIM_NETDEV "$key" "$value"6970EXPECTED_SETTINGS[$key]="$value"71expected=${EXPECTED_SETTINGS[@]}72current=$(update_current_settings)7374check $? "$current" "$expected"75set +x76done7778if [ $num_errors -eq 0 ]; then79echo "PASSED all $((num_passes)) checks"80exit 081else82echo "FAILED $num_errors/$((num_errors+num_passes)) checks"83exit 184fi858687