[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20200309183503.173802-1-idosch@idosch.org>
Date: Mon, 9 Mar 2020 20:34:57 +0200
From: Ido Schimmel <idosch@...sch.org>
To: netdev@...r.kernel.org
Cc: davem@...emloft.net, jiri@...lanox.com, petrm@...lanox.com,
jhs@...atatu.com, xiyou.wangcong@...il.com, kuba@...nel.org,
mlxsw@...lanox.com, Ido Schimmel <idosch@...lanox.com>
Subject: [PATCH net-next 0/6] RED: Introduce an ECN tail-dropping mode
From: Ido Schimmel <idosch@...lanox.com>
Petr says:
When the RED Qdisc is currently configured to enable ECN, the RED algorithm
is used to decide whether a certain SKB should be marked. If that SKB is
not ECN-capable, it is early-dropped.
It is also possible to keep all traffic in the queue, and just mark the
ECN-capable subset of it, as appropriate under the RED algorithm. Some
switches support this mode, and some installations make use of it.
There is currently no way to put the RED qdiscs to this mode.
To that end, add a new RED flag, TC_RED_TAILDROP. When the Qdisc is
configured with this flag, non-ECT traffic is enqueued (and tail-dropped
when the queue size is exhausted) instead of being early-dropped.
- The patchset starts with adding in patch #1 a TDC testsuite that covers
the existing RED flags. This test is extended with the new flag later
in the patchset.
- Patches #2 and #3 add the taildrop support to the RED qdisc itself resp.
mlxsw.
- Patches #4 and #5 add tests to, respectively, the newly-introduced TDC
suite, and the mlxsw-specific RED selftests.
To test the qdisc itself (apart from offloading or configuration, which are
covered above), I took the mlxsw selftest and adapted it for SW datapath in
mostly obvious ways. The test is stable enough to verify that RED, ECN and
ECN taildrop actually work. However, I have no confidence in its
portability to other people's machines or mildly different configurations.
I therefore do not find it suitable for upstreaming.
Petr Machata (6):
selftests: qdiscs: Add TDC test for RED
net: sched: Add centralized RED flag checking
net: sched: RED: Introduce an ECN tail-dropping mode
mlxsw: spectrum_qdisc: Offload RED ECN tail-dropping mode
selftests: qdiscs: RED: Add taildrop tests
selftests: mlxsw: RED: Test RED ECN taildrop offload
.../ethernet/mellanox/mlxsw/spectrum_qdisc.c | 9 +-
include/net/pkt_cls.h | 1 +
include/net/red.h | 17 +++
include/uapi/linux/pkt_sched.h | 1 +
net/sched/sch_choke.c | 5 +
net/sched/sch_gred.c | 7 +-
net/sched/sch_red.c | 35 ++++-
net/sched/sch_sfq.c | 10 +-
.../drivers/net/mlxsw/sch_red_core.sh | 50 +++++-
.../drivers/net/mlxsw/sch_red_ets.sh | 11 ++
.../drivers/net/mlxsw/sch_red_root.sh | 8 +
.../tc-testing/tc-tests/qdiscs/red.json | 142 ++++++++++++++++++
12 files changed, 273 insertions(+), 23 deletions(-)
create mode 100644 tools/testing/selftests/tc-testing/tc-tests/qdiscs/red.json
--
2.24.1
Powered by blists - more mailing lists