[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20181119232150.13038-1-jakub.kicinski@netronome.com>
Date: Mon, 19 Nov 2018 15:21:36 -0800
From: Jakub Kicinski <jakub.kicinski@...ronome.com>
To: davem@...emloft.net
Cc: oss-drivers@...ronome.com, netdev@...r.kernel.org,
Jakub Kicinski <jakub.kicinski@...ronome.com>
Subject: [PATCH net-next 00/14] gred: add offload support
Hi!
This series adds support for GRED offload in the nfp driver. So
far we have only supported the RED Qdisc offload, but we need a
way to differentiate traffic types e.g. based on DSCP marking.
It may seem like PRIO+RED is a good match for this job, however,
(a) we don't need strict priority behaviour of PRIO, and (b) PRIO
uses the legacy way of mapping ToS fields to bands, which is quite
awkward and limitting.
The less commonly used GRED Qdisc is a better much for the scenario,
it allows multiple sets of RED parameters and queue lengths to be
maintained with a single FIFO queue. This is exactly how nfp offload
behaves. We use a trivial u32 classifier to assign packets to virtual
queues.
There is also the minor advantage that GRED can't have its child
changed, therefore limitting ways in which the configuration of SW
path can diverge from HW offload.
Last patch of the series adds support for (G)RED in non-ECN mode,
where packets are dropped instead of marked.
Jakub Kicinski (14):
nfp: abm: map per-band symbols
nfp: abm: pass band parameter to functions
nfp: abm: size threshold table to account for bands
nfp: abm: switch to extended stats for reading packet/byte counts
nfp: abm: add up bands for sto/non-sto stats
net: sched: gred: add basic Qdisc offload
net: sched: gred: support reporting stats from offloads
nfp: abm: wrap RED parameters in bands
nfp: abm: add GRED offload
net: sched: cls_u32: add res to offload information
nfp: abm: calculate PRIO map len and check mailbox size
nfp: abm: add functions to update DSCP -> virtual queue map
nfp: abm: add cls_u32 offload for simple band classification
nfp: abm: add support for more threshold actions
drivers/net/ethernet/netronome/nfp/Makefile | 1 +
drivers/net/ethernet/netronome/nfp/abm/cls.c | 283 +++++++++++++++++
drivers/net/ethernet/netronome/nfp/abm/ctrl.c | 287 +++++++++++++++---
drivers/net/ethernet/netronome/nfp/abm/main.c | 48 ++-
drivers/net/ethernet/netronome/nfp/abm/main.h | 113 ++++++-
.../net/ethernet/netronome/nfp/abm/qdisc.c | 279 ++++++++++++++---
drivers/net/ethernet/netronome/nfp/nfp_net.h | 1 +
.../ethernet/netronome/nfp/nfp_net_common.c | 2 +-
.../net/ethernet/netronome/nfp/nfp_net_ctrl.h | 2 +
include/linux/netdevice.h | 1 +
include/net/pkt_cls.h | 45 +++
net/sched/cls_u32.c | 2 +
net/sched/sch_gred.c | 94 ++++++
13 files changed, 1042 insertions(+), 116 deletions(-)
create mode 100644 drivers/net/ethernet/netronome/nfp/abm/cls.c
--
2.17.1
Powered by blists - more mailing lists