Merge branch 'nfp-abm-track-all-Qdiscs'
Jakub Kicinski says:
====================
nfp: abm: track all Qdiscs
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.
====================
Signed-off-by: David S. Miller <davem@davemloft.net>