[PATCH net-next v2 0/5] Add QoS offload support for sparx5

From: Daniel Machon
Date: Tue Sep 20 2022 - 06:05:41 EST


This patch series adds support for offloading QoS features with the tc
command suite, to the sparx5 switch. The new offloadable QoS features
introduced in this patch series are:

- tc-mqprio for mapping traffic class to hardware queue. Queues are by
default mapped 1:1 in hardware, as such the mqprio qdisc is used as
an attachment point for qdiscs tbf and ets.

$ tc qdisc add dev eth0 root handle 1:0 mqprio

- tc-tbf for setting up shaping on scheduler elements of the HSCH
(Hierarchical Scheduler) block. Shaping on either port output or
queue output is supported.

Port shaper: $ tc qdisc add dev eth0 root handle 1:0 tbf rate \
10000000 burst 8192 limit 1m

Queue shaper: $ tc qdisc replace dev eth0 parent 1:5 handle 2:0 tbf \
rate 10000000 burst 8192 limit 1m

- tc-ets for setting up strict and or bandwidth-sharing bands on one
through eight priority queues.

Configure a mix of strict and bw-sharing bands:
$ tc qdisc add dev eth0 handle 1: root ets bands 8 strict 5 \
quanta 1000 1000 1000 priomap 7 6 5 4 3 2 1 0

Patch #1 Sets up the tc hook.
Patch #2 Adds support for offloading the tc-mqprio qdisc.
Patch #3 Adds support for offloading the tc-tbf qdisc.
Patch #4 Adds support for offloading the tc-ets qdisc.
Patch #5 Updates the maintainers of the sparx5 driver.

========================================================================

v1:
https://lore.kernel.org/netdev/20220919120215.3815696-1-daniel.machon@xxxxxxxxxxxxx/

v1 -> v2:
- Fix compiler warning in patch #2
- Fix comment style in patch #4

Daniel Machon (5):
net: microchip: sparx5: add tc setup hook
net: microchip: sparx5: add support for offloading mqprio qdisc
net: microchip: sparx5: add support for offloading tbf qdisc
net: microchip: sparx5: add support for offloading ets qdisc
maintainers: update MAINTAINERS file.

MAINTAINERS | 1 +
.../net/ethernet/microchip/sparx5/Makefile | 2 +-
.../ethernet/microchip/sparx5/sparx5_main.c | 7 +
.../microchip/sparx5/sparx5_main_regs.h | 165 ++++++
.../ethernet/microchip/sparx5/sparx5_netdev.c | 8 +-
.../ethernet/microchip/sparx5/sparx5_qos.c | 514 ++++++++++++++++++
.../ethernet/microchip/sparx5/sparx5_qos.h | 82 +++
.../net/ethernet/microchip/sparx5/sparx5_tc.c | 125 +++++
.../net/ethernet/microchip/sparx5/sparx5_tc.h | 15 +
9 files changed, 917 insertions(+), 2 deletions(-)
create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_qos.c
create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_qos.h
create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_tc.c
create mode 100644 drivers/net/ethernet/microchip/sparx5/sparx5_tc.h

--
2.34.1