cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

tc-mq-visibility.sh (1547B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0-only
      3
      4source ethtool-common.sh
      5
      6set -o pipefail
      7
      8n_children() {
      9    n=$(tc qdisc show dev $NDEV | grep '^qdisc' | wc -l)
     10    echo $((n - 1))
     11}
     12
     13tcq() {
     14    tc qdisc $1 dev $NDEV ${@:2}
     15}
     16
     17n_child_assert() {
     18    n=$(n_children)
     19    if [ $n -ne $1 ]; then
     20	echo "ERROR ($root): ${@:2}, expected $1 have $n"
     21	((num_errors++))
     22    else
     23	((num_passes++))
     24    fi
     25}
     26
     27
     28for root in mq mqprio; do
     29    NDEV=$(make_netdev 1 4)
     30
     31    opts=
     32    [ $root == "mqprio" ] && opts='hw 0 num_tc 1 map 0 0 0 0  queues 1@0'
     33
     34    tcq add root handle 100: $root $opts
     35    n_child_assert 4 'Init'
     36
     37    # All defaults
     38
     39    for n in 3 2 1 2 3 4 1 4; do
     40	ethtool -L $NDEV combined $n
     41	n_child_assert $n "Change queues to $n while down"
     42    done
     43
     44    ip link set dev $NDEV up
     45
     46    for n in 3 2 1 2 3 4 1 4; do
     47	ethtool -L $NDEV combined $n
     48	n_child_assert $n "Change queues to $n while up"
     49    done
     50
     51    # One real one
     52    tcq replace parent 100:4 handle 204: pfifo_fast
     53    n_child_assert 4 "One real queue"
     54
     55    ethtool -L $NDEV combined 1
     56    n_child_assert 2 "One real queue, one default"
     57
     58    ethtool -L $NDEV combined 4
     59    n_child_assert 4 "One real queue, rest default"
     60
     61    # Graft some
     62    tcq replace parent 100:1 handle 204:
     63    n_child_assert 3 "Grafted"
     64
     65    ethtool -L $NDEV combined 1
     66    n_child_assert 1 "Grafted, one"
     67
     68    cleanup_nsim
     69done
     70
     71if [ $num_errors -eq 0 ]; then
     72    echo "PASSED all $((num_passes)) checks"
     73    exit 0
     74else
     75    echo "FAILED $num_errors/$((num_errors+num_passes)) checks"
     76    exit 1
     77fi