1e814c58dSPetr Machata#!/bin/bash
2e814c58dSPetr Machata# SPDX-License-Identifier: GPL-2.0
3e814c58dSPetr Machata
4e814c58dSPetr MachataALL_TESTS="
5e814c58dSPetr Machata	ping_ipv4
6e814c58dSPetr Machata	tbf_test
72b11e24eSPetr Machata	tbf_root_test
8e814c58dSPetr Machata"
9e814c58dSPetr Machatasource $lib_dir/sch_tbf_core.sh
10e814c58dSPetr Machata
112b11e24eSPetr MachataQDISC_TYPE=${QDISC% *}
122b11e24eSPetr Machata
13e814c58dSPetr Machatatbf_test_one()
14e814c58dSPetr Machata{
15e814c58dSPetr Machata	local bs=$1; shift
16e814c58dSPetr Machata
17e814c58dSPetr Machata	tc qdisc replace dev $swp2 parent 10:3 handle 103: tbf \
18e814c58dSPetr Machata	   rate 400Mbit burst $bs limit 1M
19e814c58dSPetr Machata	tc qdisc replace dev $swp2 parent 10:2 handle 102: tbf \
20e814c58dSPetr Machata	   rate 800Mbit burst $bs limit 1M
21e814c58dSPetr Machata
22e814c58dSPetr Machata	do_tbf_test 10 400 $bs
23e814c58dSPetr Machata	do_tbf_test 11 800 $bs
24e814c58dSPetr Machata}
25e814c58dSPetr Machata
26e814c58dSPetr Machatatbf_test()
27e814c58dSPetr Machata{
282b11e24eSPetr Machata	log_info "Testing root-$QDISC_TYPE-tbf"
292b11e24eSPetr Machata
30e814c58dSPetr Machata	# This test is used for both ETS and PRIO. Even though we only need two
31e814c58dSPetr Machata	# bands, PRIO demands a minimum of three.
32e814c58dSPetr Machata	tc qdisc add dev $swp2 root handle 10: $QDISC 3 priomap 2 1 0
33e814c58dSPetr Machata	tbf_test_one 128K
34e814c58dSPetr Machata	tc qdisc del dev $swp2 root
35e814c58dSPetr Machata}
36e814c58dSPetr Machata
372b11e24eSPetr Machatatbf_root_test()
382b11e24eSPetr Machata{
392b11e24eSPetr Machata	local bs=128K
402b11e24eSPetr Machata
412b11e24eSPetr Machata	log_info "Testing root-tbf-$QDISC_TYPE"
422b11e24eSPetr Machata
432b11e24eSPetr Machata	tc qdisc replace dev $swp2 root handle 1: \
442b11e24eSPetr Machata		tbf rate 400Mbit burst $bs limit 1M
452b11e24eSPetr Machata	tc qdisc replace dev $swp2 parent 1:1 handle 10: \
462b11e24eSPetr Machata		$QDISC 3 priomap 2 1 0
472b11e24eSPetr Machata	tc qdisc replace dev $swp2 parent 10:3 handle 103: \
482b11e24eSPetr Machata		bfifo limit 1M
492b11e24eSPetr Machata	tc qdisc replace dev $swp2 parent 10:2 handle 102: \
502b11e24eSPetr Machata		bfifo limit 1M
512b11e24eSPetr Machata	tc qdisc replace dev $swp2 parent 10:1 handle 101: \
522b11e24eSPetr Machata		bfifo limit 1M
532b11e24eSPetr Machata
542b11e24eSPetr Machata	do_tbf_test 10 400 $bs
552b11e24eSPetr Machata	do_tbf_test 11 400 $bs
562b11e24eSPetr Machata
572b11e24eSPetr Machata	tc qdisc del dev $swp2 root
582b11e24eSPetr Machata}
592b11e24eSPetr Machata
60*54e906f1SPetr Machataif type -t sch_tbf_pre_hook >/dev/null; then
61*54e906f1SPetr Machata	sch_tbf_pre_hook
62*54e906f1SPetr Machatafi
63*54e906f1SPetr Machata
64e814c58dSPetr Machatatrap cleanup EXIT
65e814c58dSPetr Machata
66e814c58dSPetr Machatasetup_prepare
67e814c58dSPetr Machatasetup_wait
68e814c58dSPetr Machata
69e814c58dSPetr Machatatests_run
70e814c58dSPetr Machata
71e814c58dSPetr Machataexit $EXIT_STATUS
72