]> www.infradead.org Git - users/dwmw2/linux.git/commit
selftests: mlxsw: sch_red_core: Sleep before querying queue depth
authorPetr Machata <petrm@nvidia.com>
Mon, 7 Oct 2024 16:26:07 +0000 (18:26 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 8 Oct 2024 22:37:24 +0000 (15:37 -0700)
commit787f148cec340114dc22c49d8b045ff3ff0adad6
tree76b19e292e0713b91c89cd1b975a6306ef2e3491
parent8fb5b60734564473c72ca85d617cd685738948f0
selftests: mlxsw: sch_red_core: Sleep before querying queue depth

The qdisc stats are taken from the port's periodic HW stats, which are
updated once a second. We try to accommodate the latency by using busywait
in build_backlog().

The issue in that seems to be that when do_mark_test() builds the backlog,
it makes the decision whether to send more packets based on the first
instance of the queue depth stat exceeding the current value, when in fact
more traffic is on the way and the queue depth would increase further. This
leads to failures in TC 1 of mark-mirror test, where we see the following
failure:

TEST: TC 0: marked packets mirror'd                                 [ OK ]
TEST: TC 1: marked packets mirror'd                                 [FAIL]
        Spurious packets (1680 -> 2290) observed without buffer pressure

Fix by waiting for the full second before reading the queue depth for the
first time, to make sure it reflects all in-flight traffic.

Signed-off-by: Petr Machata <petrm@nvidia.com>
Reviewed-by: Amit Cohen <amcohen@nvidia.com>
Link: https://patch.msgid.link/321dcf8b3e9a1f0766429c8cf3e3f1746f1bc375.1728316370.git.petrm@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/drivers/net/mlxsw/sch_red_core.sh