From: Jiri Pirko <j...@mellanox.com>

Nogah says:

Support a two level hierarchy of offloaded qdiscs in mlxsw, with sch_prio
being the root qdisc and sch_red as the children.

                +----------+
                | sch_prio |
                +----+-----+
                     |
                     |
    +----------------------------------+
    |                |                 |
    |                |                 |
    |                |                 |
+---v---+       +----v---+       +-----v--+
|sch_red|       |sch_red |       |sch_red |
+-------+       +--------+       +--------+

When setting sch_prio as the root qdisc on a physical port, mlxsw will
offload it. When adding it with sch_red as a child qdisc, it will offload
it as well.
Relocating child qdisc or connecting them to more then one child will
result in unoffloading them. Relocating child qdisc more then once is
highly unrecommended and might cause a miss match between the kernel
configuration and the offloaded one. The offloaded configuration will be
aligned with the one shown in the show command.
Changing the priomap parameter of sch_prio might cause a band that its
configuration was changed and it has offloaded sch_red set on it, to lose
some stats data as if sch_red was unoffloaded and offloaded again. However,
it won't affect the data on this band that will have sch_red continuously.

Patch 1 adds support for setting RED as the child of root qdisc.
Patches 2-4 add support for RED bstasts for offloaded child qdiscs.
Patches 5-6 handle backlog related changes for offloaded child qdiscs.
Patches 7-8 update PRIO in mlxsw to be able to have RED as child on its
bands.
Patch 9 adds offload handles for PRIO graft operations. In mlxsw it will
cause the driver to stop offloading the child in question.

Nogah Frankel (10):
  mlxsw: spectrum: qdiscs: Support qdisc per tclass
  mlxsw: spectrum: Add priority counters
  mlxsw: spectrum: qdiscs: Add priority map per qdisc
  mlxsw: spectrum: qdiscs: Collect stats for sch_red based on priomap
  mlxsw: spectrum: qdiscs: Update backlog handling of a child qdiscs
  net: sch: Don't warn on missmatching qlen and backlog for offloaded
    qdiscs
  mlxsw: spectrum: Update sch_prio stats to include sch_red related
    drops
  mlxsw: spectrum: qdiscs: prio: Delete child qdiscs when removing bands
  net: sch: prio: Add offload ability for grafting a child
  mlxsw: spectrum: qdiscs: prio: Handle graft command

 drivers/net/ethernet/mellanox/mlxsw/spectrum.c     |  10 +
 drivers/net/ethernet/mellanox/mlxsw/spectrum.h     |   3 +
 .../net/ethernet/mellanox/mlxsw/spectrum_qdisc.c   | 206 ++++++++++++++++++---
 include/net/pkt_cls.h                              |   8 +
 net/sched/sch_api.c                                |   7 +-
 net/sched/sch_prio.c                               |  45 ++++-
 6 files changed, 244 insertions(+), 35 deletions(-)

-- 
2.14.3

Reply via email to