Path: blob/master/tools/testing/selftests/drivers/net/netdevsim/ethtool-coalesce.sh
26299 views
#!/bin/bash1# SPDX-License-Identifier: GPL-2.0-only23source ethtool-common.sh45function get_value {6local query="${SETTINGS_MAP[$1]}"78echo $(ethtool -c $NSIM_NETDEV | \9awk -F':' -v pattern="$query:" '$0 ~ pattern {gsub(/[ \t]/, "", $2); print $2}')10}1112function update_current_settings {13for key in ${!SETTINGS_MAP[@]}; do14CURRENT_SETTINGS[$key]=$(get_value $key)15done16echo ${CURRENT_SETTINGS[@]}17}1819if ! ethtool -h | grep -q coalesce; then20echo "SKIP: No --coalesce support in ethtool"21exit 422fi2324NSIM_NETDEV=$(make_netdev)2526set -o pipefail2728declare -A SETTINGS_MAP=(29["rx-frames-low"]="rx-frame-low"30["tx-frames-low"]="tx-frame-low"31["rx-frames-high"]="rx-frame-high"32["tx-frames-high"]="tx-frame-high"33["rx-usecs"]="rx-usecs"34["rx-frames"]="rx-frames"35["rx-usecs-irq"]="rx-usecs-irq"36["rx-frames-irq"]="rx-frames-irq"37["tx-usecs"]="tx-usecs"38["tx-frames"]="tx-frames"39["tx-usecs-irq"]="tx-usecs-irq"40["tx-frames-irq"]="tx-frames-irq"41["stats-block-usecs"]="stats-block-usecs"42["pkt-rate-low"]="pkt-rate-low"43["rx-usecs-low"]="rx-usecs-low"44["tx-usecs-low"]="tx-usecs-low"45["pkt-rate-high"]="pkt-rate-high"46["rx-usecs-high"]="rx-usecs-high"47["tx-usecs-high"]="tx-usecs-high"48["sample-interval"]="sample-interval"49)5051declare -A CURRENT_SETTINGS=(52["rx-frames-low"]=""53["tx-frames-low"]=""54["rx-frames-high"]=""55["tx-frames-high"]=""56["rx-usecs"]=""57["rx-frames"]=""58["rx-usecs-irq"]=""59["rx-frames-irq"]=""60["tx-usecs"]=""61["tx-frames"]=""62["tx-usecs-irq"]=""63["tx-frames-irq"]=""64["stats-block-usecs"]=""65["pkt-rate-low"]=""66["rx-usecs-low"]=""67["tx-usecs-low"]=""68["pkt-rate-high"]=""69["rx-usecs-high"]=""70["tx-usecs-high"]=""71["sample-interval"]=""72)7374declare -A EXPECTED_SETTINGS=(75["rx-frames-low"]=""76["tx-frames-low"]=""77["rx-frames-high"]=""78["tx-frames-high"]=""79["rx-usecs"]=""80["rx-frames"]=""81["rx-usecs-irq"]=""82["rx-frames-irq"]=""83["tx-usecs"]=""84["tx-frames"]=""85["tx-usecs-irq"]=""86["tx-frames-irq"]=""87["stats-block-usecs"]=""88["pkt-rate-low"]=""89["rx-usecs-low"]=""90["tx-usecs-low"]=""91["pkt-rate-high"]=""92["rx-usecs-high"]=""93["tx-usecs-high"]=""94["sample-interval"]=""95)9697# populate the expected settings map98for key in ${!SETTINGS_MAP[@]}; do99EXPECTED_SETTINGS[$key]=$(get_value $key)100done101102# test103for key in ${!SETTINGS_MAP[@]}; do104value=$((RANDOM % $((2**32-1))))105106ethtool -C $NSIM_NETDEV "$key" "$value"107108EXPECTED_SETTINGS[$key]="$value"109expected=${EXPECTED_SETTINGS[@]}110current=$(update_current_settings)111112check $? "$current" "$expected"113set +x114done115116# bool settings which ethtool displays on the same line117ethtool -C $NSIM_NETDEV adaptive-rx on118s=$(ethtool -c $NSIM_NETDEV | grep -q "Adaptive RX: on TX: off")119check $? "$s" ""120121ethtool -C $NSIM_NETDEV adaptive-tx on122s=$(ethtool -c $NSIM_NETDEV | grep -q "Adaptive RX: on TX: on")123check $? "$s" ""124125if [ $num_errors -eq 0 ]; then126echo "PASSED all $((num_passes)) checks"127exit 0128else129echo "FAILED $num_errors/$((num_errors+num_passes)) checks"130exit 1131fi132133134