selftests: mlxsw: RED: Test offload of trapping on RED qevents
Add a selftest for RED early_drop and mark qevents when a trap action is attached at the associated block. Signed-off-by: Petr Machata <petrm@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
54a9238589
commit
8fb6ac457d
@@ -568,17 +568,12 @@ do_drop_test()
|
|||||||
busywait 1100 until_counter_is ">= $((base + 1))" $fetch_counter >/dev/null
|
busywait 1100 until_counter_is ">= $((base + 1))" $fetch_counter >/dev/null
|
||||||
check_fail $? "Spurious packets observed without buffer pressure"
|
check_fail $? "Spurious packets observed without buffer pressure"
|
||||||
|
|
||||||
qevent_rule_uninstall_$subtest
|
|
||||||
|
|
||||||
# Push to the queue until it's at the limit. The configured limit is
|
# Push to the queue until it's at the limit. The configured limit is
|
||||||
# rounded by the qdisc and then by the driver, so this is the best we
|
# rounded by the qdisc and then by the driver, so this is the best we
|
||||||
# can do to get to the real limit of the system. Do this with the rules
|
# can do to get to the real limit of the system.
|
||||||
# uninstalled so that the inevitable drops don't get counted.
|
|
||||||
build_backlog $vlan $((3 * limit / 2)) udp >/dev/null
|
build_backlog $vlan $((3 * limit / 2)) udp >/dev/null
|
||||||
|
|
||||||
qevent_rule_install_$subtest
|
|
||||||
base=$($fetch_counter)
|
base=$($fetch_counter)
|
||||||
|
|
||||||
send_packets $vlan udp 11
|
send_packets $vlan udp 11
|
||||||
|
|
||||||
now=$(busywait 1100 until_counter_is ">= $((base + 10))" $fetch_counter)
|
now=$(busywait 1100 until_counter_is ">= $((base + 10))" $fetch_counter)
|
||||||
@@ -631,3 +626,31 @@ do_drop_mirror_test()
|
|||||||
|
|
||||||
tc filter del dev $h2 ingress pref 1 handle 101 flower
|
tc filter del dev $h2 ingress pref 1 handle 101 flower
|
||||||
}
|
}
|
||||||
|
|
||||||
|
qevent_rule_install_trap()
|
||||||
|
{
|
||||||
|
tc filter add block 10 pref 1234 handle 102 matchall skip_sw \
|
||||||
|
action trap hw_stats disabled
|
||||||
|
}
|
||||||
|
|
||||||
|
qevent_rule_uninstall_trap()
|
||||||
|
{
|
||||||
|
tc filter del block 10 pref 1234 handle 102 matchall
|
||||||
|
}
|
||||||
|
|
||||||
|
qevent_counter_fetch_trap()
|
||||||
|
{
|
||||||
|
local trap_name=$1; shift
|
||||||
|
|
||||||
|
devlink_trap_rx_packets_get "$trap_name"
|
||||||
|
}
|
||||||
|
|
||||||
|
do_drop_trap_test()
|
||||||
|
{
|
||||||
|
local vlan=$1; shift
|
||||||
|
local limit=$1; shift
|
||||||
|
local trap_name=$1; shift
|
||||||
|
|
||||||
|
do_drop_test "$vlan" "$limit" "$trap_name" trap \
|
||||||
|
"qevent_counter_fetch_trap $trap_name"
|
||||||
|
}
|
||||||
|
@@ -8,6 +8,7 @@ ALL_TESTS="
|
|||||||
red_test
|
red_test
|
||||||
mc_backlog_test
|
mc_backlog_test
|
||||||
red_mirror_test
|
red_mirror_test
|
||||||
|
red_trap_test
|
||||||
"
|
"
|
||||||
: ${QDISC:=ets}
|
: ${QDISC:=ets}
|
||||||
source sch_red_core.sh
|
source sch_red_core.sh
|
||||||
@@ -94,6 +95,16 @@ red_mirror_test()
|
|||||||
uninstall_qdisc
|
uninstall_qdisc
|
||||||
}
|
}
|
||||||
|
|
||||||
|
red_trap_test()
|
||||||
|
{
|
||||||
|
install_qdisc qevent early_drop block 10
|
||||||
|
|
||||||
|
do_drop_trap_test 10 $BACKLOG1 early_drop
|
||||||
|
do_drop_trap_test 11 $BACKLOG2 early_drop
|
||||||
|
|
||||||
|
uninstall_qdisc
|
||||||
|
}
|
||||||
|
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
setup_prepare
|
setup_prepare
|
||||||
|
Reference in New Issue
Block a user