A number of mlxsw-specific QoS tests use manual QoS DCB management. As such, they need to make sure lldpad is not running, because it would override the configuration the test has applied using other tools. To that end, these selftests invoke the bail_on_lldpad() helper, which terminates the selftest if th lldpad is running. Some of these tests however first install the bash exit trap, which invokes a cleanup() at the test exit. If bail_on_lldpad() has terminated the script even before the setup part was run, the cleanup part will be very confused. Therefore make sure bail_on_lldpad() is invoked before the cleanup is registered. While there are still edge cases where the user terminates the script before the setup was fully done, this takes care of a common situation where the cleanup would be invoked in an inconsistent state. Signed-off-by: Petr Machata <petrm@nvidia.com> Signed-off-by: Ido Schimmel <idosch@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
84 lines
1.2 KiB
Bash
Executable File
84 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
ALL_TESTS="
|
|
ping_ipv4
|
|
ecn_test
|
|
ecn_test_perband
|
|
ecn_nodrop_test
|
|
red_test
|
|
mc_backlog_test
|
|
red_mirror_test
|
|
"
|
|
source sch_red_core.sh
|
|
|
|
BACKLOG=300000
|
|
|
|
install_qdisc()
|
|
{
|
|
local -a args=("$@")
|
|
|
|
tc qdisc add dev $swp3 root handle 108: red \
|
|
limit 1000000 min $BACKLOG max $((BACKLOG + 1)) \
|
|
probability 1.0 avpkt 8000 burst 38 "${args[@]}"
|
|
sleep 1
|
|
}
|
|
|
|
uninstall_qdisc()
|
|
{
|
|
tc qdisc del dev $swp3 root
|
|
}
|
|
|
|
ecn_test()
|
|
{
|
|
install_qdisc ecn
|
|
do_ecn_test 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
ecn_test_perband()
|
|
{
|
|
install_qdisc ecn
|
|
do_ecn_test_perband 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
ecn_nodrop_test()
|
|
{
|
|
install_qdisc ecn nodrop
|
|
do_ecn_nodrop_test 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
red_test()
|
|
{
|
|
install_qdisc
|
|
do_red_test 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
mc_backlog_test()
|
|
{
|
|
install_qdisc
|
|
# Note that the backlog value here does not correspond to RED
|
|
# configuration, but is arbitrary.
|
|
do_mc_backlog_test 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
red_mirror_test()
|
|
{
|
|
install_qdisc qevent early_drop block 10
|
|
do_drop_mirror_test 10 $BACKLOG
|
|
uninstall_qdisc
|
|
}
|
|
|
|
bail_on_lldpad
|
|
|
|
trap cleanup EXIT
|
|
setup_prepare
|
|
setup_wait
|
|
tests_run
|
|
|
|
exit $EXIT_STATUS
|