Commit 67971c38 authored by Jakub Kicinski's avatar Jakub Kicinski
Browse files

Merge branch 'selftests-mlxsw-convert-to-iproute2-dcb'

Petr Machata says:

====================
selftests: mlxsw: Convert to iproute2 dcb

There is a dedicated tool for configuration of DCB in iproute2. Use it
in the selftests instead of lldpad.

Patches #1-#3 convert three tests. Patch #4 drops the now-unnecessary
lldpad helpers.
====================

Link: https://lore.kernel.org/r/cover.1675096231.git.petrm@nvidia.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parents 88b49402 bd32ff68
Loading
Loading
Loading
Loading
+16 −52
Original line number Diff line number Diff line
@@ -5,18 +5,18 @@
# prioritized according to the default priority specified at the port.
# rx_octets_prio_* counters are used to verify the prioritization.
#
# +-----------------------+
# +----------------------------------+
# | H1                               |
# |    + $h1                         |
# |    | 192.0.2.1/28                |
# +----|------------------+
# +----|-----------------------------+
#      |
# +----|------------------+
# +----|-----------------------------+
# | SW |                             |
# |    + $swp1                       |
# |      192.0.2.2/28                |
# |      APP=<prio>,1,0   |
# +-----------------------+
# |      dcb app default-prio <prio> |
# +----------------------------------+

ALL_TESTS="
	ping_ipv4
@@ -29,42 +29,6 @@ NUM_NETIFS=2
: ${HIT_TIMEOUT:=1000} # ms
source $lib_dir/lib.sh

declare -a APP

defprio_install()
{
	local dev=$1; shift
	local prio=$1; shift
	local app="app=$prio,1,0"

	lldptool -T -i $dev -V APP $app >/dev/null
	lldpad_app_wait_set $dev
	APP[$prio]=$app
}

defprio_uninstall()
{
	local dev=$1; shift
	local prio=$1; shift
	local app=${APP[$prio]}

	lldptool -T -i $dev -V APP -d $app >/dev/null
	lldpad_app_wait_del
	unset APP[$prio]
}

defprio_flush()
{
	local dev=$1; shift
	local prio

	if ((${#APP[@]})); then
		lldptool -T -i $dev -V APP -d ${APP[@]} >/dev/null
	fi
	lldpad_app_wait_del
	APP=()
}

h1_create()
{
	simple_if_init $h1 192.0.2.1/28
@@ -83,7 +47,7 @@ switch_create()

switch_destroy()
{
	defprio_flush $swp1
	dcb app flush dev $swp1 default-prio
	ip addr del dev $swp1 192.0.2.2/28
	ip link set dev $swp1 down
}
@@ -124,7 +88,7 @@ __test_defprio()

	RET=0

	defprio_install $swp1 $prio_install
	dcb app add dev $swp1 default-prio $prio_install

	local t0=$(ethtool_stats_get $swp1 rx_frames_prio_$prio_observe)
	mausezahn -q $h1 -d 100m -c 10 -t arp reply
@@ -134,7 +98,7 @@ __test_defprio()
	check_err $? "Default priority $prio_install/$prio_observe: Expected to capture 10 packets, got $((t1 - t0))."
	log_test "Default priority $prio_install/$prio_observe"

	defprio_uninstall $swp1 $prio_install
	dcb app del dev $swp1 default-prio $prio_install
}

test_defprio()
@@ -145,7 +109,7 @@ test_defprio()
		__test_defprio $prio $prio
	done

	defprio_install $swp1 3
	dcb app add dev $swp1 default-prio 3
	__test_defprio 0 3
	__test_defprio 1 3
	__test_defprio 2 3
@@ -153,7 +117,7 @@ test_defprio()
	__test_defprio 5 5
	__test_defprio 6 6
	__test_defprio 7 7
	defprio_uninstall $swp1 3
	dcb app del dev $swp1 default-prio 3
}

trap cleanup EXIT
+5 −18
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@
# | SW |                                                                |     |
# |  +-|----------------------------------------------------------------|-+   |
# |  | + $swp1                       BR                           $swp2 + |   |
# |  |   APP=0,5,10 .. 7,5,17                      APP=0,5,20 .. 7,5,27   |   |
# |  |   dcb dscp-prio 10:0...17:7            dcb dscp-prio 20:0...27:7   |   |
# |  +--------------------------------------------------------------------+   |
# +---------------------------------------------------------------------------+

@@ -62,16 +62,6 @@ h2_destroy()
	simple_if_fini $h2 192.0.2.2/28
}

dscp_map()
{
	local base=$1; shift
	local prio

	for prio in {0..7}; do
		echo app=$prio,5,$((base + prio))
	done
}

switch_create()
{
	ip link add name br1 type bridge vlan_filtering 1
@@ -81,17 +71,14 @@ switch_create()
	ip link set dev $swp2 master br1
	ip link set dev $swp2 up

	lldptool -T -i $swp1 -V APP $(dscp_map 10) >/dev/null
	lldptool -T -i $swp2 -V APP $(dscp_map 20) >/dev/null
	lldpad_app_wait_set $swp1
	lldpad_app_wait_set $swp2
	dcb app add dev $swp1 dscp-prio 10:0 11:1 12:2 13:3 14:4 15:5 16:6 17:7
	dcb app add dev $swp2 dscp-prio 20:0 21:1 22:2 23:3 24:4 25:5 26:6 27:7
}

switch_destroy()
{
	lldptool -T -i $swp2 -V APP -d $(dscp_map 20) >/dev/null
	lldptool -T -i $swp1 -V APP -d $(dscp_map 10) >/dev/null
	lldpad_app_wait_del
	dcb app del dev $swp2 dscp-prio 20:0 21:1 22:2 23:3 24:4 25:5 26:6 27:7
	dcb app del dev $swp1 dscp-prio 10:0 11:1 12:2 13:3 14:4 15:5 16:6 17:7

	ip link set dev $swp2 down
	ip link set dev $swp2 nomaster
+6 −21
Original line number Diff line number Diff line
@@ -94,16 +94,6 @@ h2_destroy()
	simple_if_fini $h2 192.0.2.18/28
}

dscp_map()
{
	local base=$1; shift
	local prio

	for prio in {0..7}; do
		echo app=$prio,5,$((base + prio))
	done
}

switch_create()
{
	simple_if_init $swp1 192.0.2.2/28
@@ -112,17 +102,14 @@ switch_create()
	tc qdisc add dev $swp1 clsact
	tc qdisc add dev $swp2 clsact

	lldptool -T -i $swp1 -V APP $(dscp_map 0) >/dev/null
	lldptool -T -i $swp2 -V APP $(dscp_map 0) >/dev/null
	lldpad_app_wait_set $swp1
	lldpad_app_wait_set $swp2
	dcb app add dev $swp1 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
	dcb app add dev $swp2 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
}

switch_destroy()
{
	lldptool -T -i $swp2 -V APP -d $(dscp_map 0) >/dev/null
	lldptool -T -i $swp1 -V APP -d $(dscp_map 0) >/dev/null
	lldpad_app_wait_del
	dcb app del dev $swp2 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
	dcb app del dev $swp1 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7

	tc qdisc del dev $swp2 clsact
	tc qdisc del dev $swp1 clsact
@@ -265,13 +252,11 @@ test_dscp_leftover()
{
	echo "Test that last removed DSCP rule is deconfigured correctly"

	lldptool -T -i $swp2 -V APP -d $(dscp_map 0) >/dev/null
	lldpad_app_wait_del
	dcb app del dev $swp2 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7

	__test_update 0 zero

	lldptool -T -i $swp2 -V APP $(dscp_map 0) >/dev/null
	lldpad_app_wait_set $swp2
	dcb app add dev $swp2 dscp-prio 0:0 1:1 2:2 3:3 4:4 5:5 6:6 7:7
}

trap cleanup EXIT
+0 −21
Original line number Diff line number Diff line
@@ -524,27 +524,6 @@ cmd_jq()
	[ ! -z "$output" ]
}

lldpad_app_wait_set()
{
	local dev=$1; shift

	while lldptool -t -i $dev -V APP -c app | grep -Eq "pending|unknown"; do
		echo "$dev: waiting for lldpad to push pending APP updates"
		sleep 5
	done
}

lldpad_app_wait_del()
{
	# Give lldpad a chance to push down the changes. If the device is downed
	# too soon, the updates will be left pending. However, they will have
	# been struck off the lldpad's DB already, so we won't be able to tell
	# they are pending. Then on next test iteration this would cause
	# weirdness as newly-added APP rules conflict with the old ones,
	# sometimes getting stuck in an "unknown" state.
	sleep 5
}

pre_cleanup()
{
	if [ "${PAUSE_ON_CLEANUP}" = "yes" ]; then