Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0-only
0003 
0004 source ethtool-common.sh
0005 
0006 set -o pipefail
0007 
0008 n_children() {
0009     n=$(tc qdisc show dev $NDEV | grep '^qdisc' | wc -l)
0010     echo $((n - 1))
0011 }
0012 
0013 tcq() {
0014     tc qdisc $1 dev $NDEV ${@:2}
0015 }
0016 
0017 n_child_assert() {
0018     n=$(n_children)
0019     if [ $n -ne $1 ]; then
0020         echo "ERROR ($root): ${@:2}, expected $1 have $n"
0021         ((num_errors++))
0022     else
0023         ((num_passes++))
0024     fi
0025 }
0026 
0027 
0028 for root in mq mqprio; do
0029     NDEV=$(make_netdev 1 4)
0030 
0031     opts=
0032     [ $root == "mqprio" ] && opts='hw 0 num_tc 1 map 0 0 0 0  queues 1@0'
0033 
0034     tcq add root handle 100: $root $opts
0035     n_child_assert 4 'Init'
0036 
0037     # All defaults
0038 
0039     for n in 3 2 1 2 3 4 1 4; do
0040         ethtool -L $NDEV combined $n
0041         n_child_assert $n "Change queues to $n while down"
0042     done
0043 
0044     ip link set dev $NDEV up
0045 
0046     for n in 3 2 1 2 3 4 1 4; do
0047         ethtool -L $NDEV combined $n
0048         n_child_assert $n "Change queues to $n while up"
0049     done
0050 
0051     # One real one
0052     tcq replace parent 100:4 handle 204: pfifo_fast
0053     n_child_assert 4 "One real queue"
0054 
0055     ethtool -L $NDEV combined 1
0056     n_child_assert 2 "One real queue, one default"
0057 
0058     ethtool -L $NDEV combined 4
0059     n_child_assert 4 "One real queue, rest default"
0060 
0061     # Graft some
0062     tcq replace parent 100:1 handle 204:
0063     n_child_assert 3 "Grafted"
0064 
0065     ethtool -L $NDEV combined 1
0066     n_child_assert 1 "Grafted, one"
0067 
0068     cleanup_nsim
0069 done
0070 
0071 if [ $num_errors -eq 0 ]; then
0072     echo "PASSED all $((num_passes)) checks"
0073     exit 0
0074 else
0075     echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
0076     exit 1
0077 fi