Skip to content

Commit

Permalink
selftests: mlxsw: RED: Test offload of trapping on RED qevents
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Petr Machata authored and David S. Miller committed Aug 4, 2020
1 parent 54a9238 commit 8fb6ac4
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 6 deletions.
35 changes: 29 additions & 6 deletions tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh
Original file line number Diff line number Diff line change
Expand Up @@ -568,17 +568,12 @@ do_drop_test()
busywait 1100 until_counter_is ">= $((base + 1))" $fetch_counter >/dev/null
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
# 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
# uninstalled so that the inevitable drops don't get counted.
# can do to get to the real limit of the system.
build_backlog $vlan $((3 * limit / 2)) udp >/dev/null

qevent_rule_install_$subtest
base=$($fetch_counter)

send_packets $vlan udp 11

now=$(busywait 1100 until_counter_is ">= $((base + 10))" $fetch_counter)
Expand Down Expand Up @@ -631,3 +626,31 @@ do_drop_mirror_test()

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"
}
11 changes: 11 additions & 0 deletions tools/testing/selftests/drivers/net/mlxsw/sch_red_ets.sh
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ ALL_TESTS="
red_test
mc_backlog_test
red_mirror_test
red_trap_test
"
: ${QDISC:=ets}
source sch_red_core.sh
Expand Down Expand Up @@ -94,6 +95,16 @@ red_mirror_test()
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

setup_prepare
Expand Down

0 comments on commit 8fb6ac4

Please sign in to comment.