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_police_occ.sh (2120B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# Test that policers shared by different tc filters are correctly reference
      5# counted by observing policers' occupancy via devlink-resource.
      6
      7lib_dir=$(dirname $0)/../../../net/forwarding
      8
      9ALL_TESTS="
     10	tc_police_occ_test
     11"
     12NUM_NETIFS=2
     13source $lib_dir/lib.sh
     14source $lib_dir/devlink_lib.sh
     15
     16h1_create()
     17{
     18	simple_if_init $h1
     19}
     20
     21h1_destroy()
     22{
     23	simple_if_fini $h1
     24}
     25
     26switch_create()
     27{
     28	simple_if_init $swp1
     29	tc qdisc add dev $swp1 clsact
     30}
     31
     32switch_destroy()
     33{
     34	tc qdisc del dev $swp1 clsact
     35	simple_if_fini $swp1
     36}
     37
     38setup_prepare()
     39{
     40	h1=${NETIFS[p1]}
     41	swp1=${NETIFS[p2]}
     42
     43	vrf_prepare
     44
     45	h1_create
     46	switch_create
     47}
     48
     49cleanup()
     50{
     51	pre_cleanup
     52
     53	switch_destroy
     54	h1_destroy
     55
     56	vrf_cleanup
     57}
     58
     59tc_police_occ_get()
     60{
     61	devlink_resource_occ_get global_policers single_rate_policers
     62}
     63
     64tc_police_occ_test()
     65{
     66	RET=0
     67
     68	local occ=$(tc_police_occ_get)
     69
     70	tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \
     71		flower skip_sw \
     72		action police rate 100mbit burst 100k conform-exceed drop/ok
     73	(( occ + 1 == $(tc_police_occ_get) ))
     74	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
     75
     76	tc filter del dev $swp1 ingress pref 1 handle 101 flower
     77	(( occ == $(tc_police_occ_get) ))
     78	check_err $? "Got occupancy $(tc_police_occ_get), expected $occ"
     79
     80	tc filter add dev $swp1 ingress pref 1 handle 101 proto ip \
     81		flower skip_sw \
     82		action police rate 100mbit burst 100k conform-exceed drop/ok \
     83		index 10
     84	tc filter add dev $swp1 ingress pref 2 handle 102 proto ip \
     85		flower skip_sw action police index 10
     86
     87	(( occ + 1 == $(tc_police_occ_get) ))
     88	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
     89
     90	tc filter del dev $swp1 ingress pref 2 handle 102 flower
     91	(( occ + 1 == $(tc_police_occ_get) ))
     92	check_err $? "Got occupancy $(tc_police_occ_get), expected $((occ + 1))"
     93
     94	tc filter del dev $swp1 ingress pref 1 handle 101 flower
     95	(( occ == $(tc_police_occ_get) ))
     96	check_err $? "Got occupancy $(tc_police_occ_get), expected $occ"
     97
     98	log_test "tc police occupancy"
     99}
    100
    101trap cleanup EXIT
    102
    103setup_prepare
    104setup_wait
    105
    106tests_run
    107
    108exit $EXIT_STATUS