Commit 8fb6ac45 authored by Petr Machata's avatar Petr Machata Committed by David S. Miller

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: default avatarPetr Machata <petrm@mellanox.com>
Signed-off-by: default avatarIdo Schimmel <idosch@mellanox.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 54a92385
...@@ -568,17 +568,12 @@ do_drop_test() ...@@ -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() ...@@ -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=" ...@@ -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() ...@@ -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
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment