selftests: forwarding: generalize bail_on_lldpad from mlxsw

mlxsw selftests often invoke a bail_on_lldpad() helper to make sure LLDPAD
is not running, to prevent conflicts between the QoS configuration applied
through TC or DCB command line tool, and the DCB configuration that LLDPAD
might apply. This helper might be useful to others. Move the function to
lib.sh, and parameterize to make reusable in other contexts.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Danielle Ratson <danieller@nvidia.com>
Signed-off-by: Vladimir Oltean <vladimir.oltean@nxp.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Petr Machata 2023-04-18 14:14:57 +03:00 committed by Jakub Kicinski
parent 54e906f163
commit 8fcac79270
11 changed files with 39 additions and 46 deletions

View File

@ -18,7 +18,6 @@ lib_dir=$(dirname $0)/../../../net/forwarding
NUM_NETIFS=0
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source qos_lib.sh
swp=$NETIF_NO_CABLE
@ -371,7 +370,7 @@ test_tc_int_buf()
tc qdisc delete dev $swp root
}
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
trap cleanup EXIT
setup_wait

View File

@ -54,31 +54,3 @@ measure_rate()
echo $ir $er
return $ret
}
bail_on_lldpad()
{
if systemctl is-active --quiet lldpad; then
cat >/dev/stderr <<-EOF
WARNING: lldpad is running
lldpad will likely configure DCB, and this test will
configure Qdiscs. mlxsw does not support both at the
same time, one of them is arbitrarily going to overwrite
the other. That will cause spurious failures (or,
unlikely, passes) of this test.
EOF
if [[ -z $ALLOW_LLDPAD ]]; then
cat >/dev/stderr <<-EOF
If you want to run the test anyway, please set
an environment variable ALLOW_LLDPAD to a
non-empty string.
EOF
exit 1
else
return
fi
fi
}

View File

@ -79,7 +79,6 @@ lib_dir=$(dirname $0)/../../../net/forwarding
NUM_NETIFS=6
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source qos_lib.sh
_1KB=1000
_100KB=$((100 * _1KB))
@ -393,7 +392,7 @@ test_qos_pfc()
log_test "PFC"
}
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
trap cleanup EXIT
setup_prepare

View File

@ -5,7 +5,6 @@
lib_dir=$(dirname $0)/../../../net/forwarding
source $lib_dir/sch_ets_core.sh
source $lib_dir/devlink_lib.sh
source qos_lib.sh
ALL_TESTS="
ping_ipv4
@ -78,5 +77,5 @@ collect_stats()
done
}
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
ets_run

View File

@ -74,7 +74,6 @@ lib_dir=$(dirname $0)/../../../net/forwarding
source $lib_dir/lib.sh
source $lib_dir/devlink_lib.sh
source mlxsw_lib.sh
source qos_lib.sh
ipaddr()
{

View File

@ -166,7 +166,7 @@ ecn_mirror_test()
uninstall_qdisc
}
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
trap cleanup EXIT
setup_prepare

View File

@ -73,7 +73,7 @@ red_mirror_test()
uninstall_qdisc
}
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
trap cleanup EXIT
setup_prepare

View File

@ -1,11 +1,9 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
source qos_lib.sh
sch_tbf_pre_hook()
{
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
}
lib_dir=$(dirname $0)/../../../net/forwarding

View File

@ -1,11 +1,9 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
source qos_lib.sh
sch_tbf_pre_hook()
{
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
}
lib_dir=$(dirname $0)/../../../net/forwarding

View File

@ -1,11 +1,9 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
source qos_lib.sh
sch_tbf_pre_hook()
{
bail_on_lldpad
bail_on_lldpad "configure DCB" "configure Qdiscs"
}
lib_dir=$(dirname $0)/../../../net/forwarding

View File

@ -1887,3 +1887,34 @@ mldv1_done_get()
payload_template_expand_checksum "$hbh$icmpv6" $checksum
}
bail_on_lldpad()
{
local reason1="$1"; shift
local reason2="$1"; shift
if systemctl is-active --quiet lldpad; then
cat >/dev/stderr <<-EOF
WARNING: lldpad is running
lldpad will likely $reason1, and this test will
$reason2. Both are not supported at the same time,
one of them is arbitrarily going to overwrite the
other. That will cause spurious failures (or, unlikely,
passes) of this test.
EOF
if [[ -z $ALLOW_LLDPAD ]]; then
cat >/dev/stderr <<-EOF
If you want to run the test anyway, please set
an environment variable ALLOW_LLDPAD to a
non-empty string.
EOF
exit 1
else
return
fi
fi
}