[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-Id: <20181112225819.29823-1-jakub.kicinski@netronome.com>
Date: Mon, 12 Nov 2018 14:58:06 -0800
From: Jakub Kicinski <jakub.kicinski@...ronome.com>
To: davem@...emloft.net
Cc: oss-drivers@...ronome.com, netdev@...r.kernel.org,
jiri@...nulli.us, xiyou.wangcong@...il.com, jhs@...atatu.com,
Jakub Kicinski <jakub.kicinski@...ronome.com>
Subject: [PATCH net-next 00/13] nfp: abm: track all Qdiscs
Hi!
Our Qdisc offload so far has been very simplistic. We held
and array of marking thresholds and statistics sized to the
number of PF queues. This was sufficient since the only
configuration we supported was single layer of RED Qdiscs
(on top of MQ or not, but MQ isn't really about queuing).
As we move to add more Qdiscs it's time to actually try to
track the full Qdisc hierarchy. This allows us to make sure
our offloaded configuration reflects the SW path better.
We add graft notifications to MQ and RED (PRIO already sends
them) to allow drivers offloading those to learn how Qdiscs
are linked. MQ graft gives us the obvious advantage of being
able to track when Qdiscs are shared or moved. It seems
unlikely HW would offload RED's child Qdiscs but since the
behaviour would change based on linked child we should
stop offloading REDs with modified child. RED will also
handle the child differently during reconfig when limit
parameter is set - so we have to inform the drivers about
the limit, and have them reset the child state when
appropriate.
The NFP driver will now allocate a structure to track each
Qdisc and link it to its children. We will also maintain
a shadow copy of threshold settings - to save device writes
and make it easier to apply defaults when config is
re-evaluated.
Jakub Kicinski (13):
nfp: abm: rename qdiscs -> red_qdiscs
nfp: abm: keep track of all RED thresholds
nfp: abm: track all offload-enabled qdiscs
net: sched: provide notification for graft on root
nfp: abm: remember which Qdisc is root
nfp: abm: allocate Qdisc child table
net: sched: red: offload a graft notification
net: sched: mq: offload a graft notification
nfp: abm: build full Qdisc hierarchy based on graft notifications
net: sched: red: notify drivers about RED's limit parameter
nfp: abm: reset RED's child based on limit
nfp: abm: save RED's parameters
nfp: abm: restructure Qdisc handling
drivers/net/ethernet/netronome/nfp/abm/ctrl.c | 105 +--
drivers/net/ethernet/netronome/nfp/abm/main.c | 42 +-
drivers/net/ethernet/netronome/nfp/abm/main.h | 108 ++-
.../net/ethernet/netronome/nfp/abm/qdisc.c | 712 +++++++++++++-----
include/linux/netdevice.h | 1 +
include/net/pkt_cls.h | 24 +-
net/sched/sch_api.c | 17 +
net/sched/sch_mq.c | 9 +
net/sched/sch_red.c | 18 +
9 files changed, 740 insertions(+), 296 deletions(-)
--
2.17.1
Powered by blists - more mailing lists