Commit 2d6a5899 authored by Jakub Kicinski's avatar Jakub Kicinski Committed by David S. Miller
Browse files

selftests: net: test ethtool -L vs mq



Add a selftest for checking mq children are visible after ethtool -L.

Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2e367522
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -50,7 +50,7 @@ function make_netdev {
	modprobe netdevsim
    fi

    echo $NSIM_ID > /sys/bus/netdevsim/new_device
    echo $NSIM_ID $@ > /sys/bus/netdevsim/new_device
    # get new device name
    ls /sys/bus/netdevsim/devices/netdevsim${NSIM_ID}/net/
}
+77 −0
Original line number Diff line number Diff line
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0-only

source ethtool-common.sh

set -o pipefail

n_children() {
    n=$(tc qdisc show dev $NDEV | grep '^qdisc' | wc -l)
    echo $((n - 1))
}

tcq() {
    tc qdisc $1 dev $NDEV ${@:2}
}

n_child_assert() {
    n=$(n_children)
    if [ $n -ne $1 ]; then
	echo "ERROR ($root): ${@:2}, expected $1 have $n"
	((num_errors++))
    else
	((num_passes++))
    fi
}


for root in mq mqprio; do
    NDEV=$(make_netdev 1 4)

    opts=
    [ $root == "mqprio" ] && opts='hw 0 num_tc 1 map 0 0 0 0  queues 1@0'

    tcq add root handle 100: $root $opts
    n_child_assert 4 'Init'

    # All defaults

    for n in 3 2 1 2 3 4 1 4; do
	ethtool -L $NDEV combined $n
	n_child_assert $n "Change queues to $n while down"
    done

    ip link set dev $NDEV up

    for n in 3 2 1 2 3 4 1 4; do
	ethtool -L $NDEV combined $n
	n_child_assert $n "Change queues to $n while up"
    done

    # One real one
    tcq replace parent 100:4 handle 204: pfifo_fast
    n_child_assert 4 "One real queue"

    ethtool -L $NDEV combined 1
    n_child_assert 2 "One real queue, one default"

    ethtool -L $NDEV combined 4
    n_child_assert 4 "One real queue, rest default"

    # Graft some
    tcq replace parent 100:1 handle 204:
    n_child_assert 3 "Grafted"

    ethtool -L $NDEV combined 1
    n_child_assert 1 "Grafted, one"

    cleanup_nsim
done

if [ $num_errors -eq 0 ]; then
    echo "PASSED all $((num_passes)) checks"
    exit 0
else
    echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
    exit 1
fi