[PATCH net-next 0/3] net: sparx5: add TAS offload

From: Daniel Machon

Date: Tue Oct 06 2026 - 09:55:50 EST


This series adds offload of the Time Aware Shaper (IEEE 802.1Qbv),
configured through tc-taprio, on Sparx5 and lan969x, which are both
served by the sparx5 driver.

In hardware, a TAS schedule is run by a TAS list, which steps through
gate control list (GCL) entries taken from a pool shared by all ports.
Sparx5 has 128 lists and 10000 GCL entries, lan969x has 60 lists and
3000 entries. An idle list is in the ADMIN state. Once started, it is
PENDING until its base time, then OPERATING. A stopped list is
TERMINATING until the end of its cycle, and then goes back to ADMIN.

The driver uses two lists per port, so a new schedule can be set up in
one list while the current one keeps running in the other. When the
new list reaches its base time, the hardware stops the old one.

The two chips differ in how a list addresses its entries: on Sparx5 a
list is a contiguous range addressed relative to its base, on lan969x
it is a linked list addressed by absolute pool index. The driver
handles both.

Frame preemption is not supported yet, and every queue uses the
default guard band of 1536 bytes. Making the guard band follow the MTU,
and taprio queueMaxSDU, are left for a follow-up.

Patch #1 adds the registers used by TAS.

Patch #2 moves the existing TAS link speed configuration to a new
sparx5_tas.c.

Patch #3 adds the taprio offload.

---
Daniel Machon (3):
net: sparx5: Add registers used by TAS
net: sparx5: Move TAS link speed configuration to sparx5_tas.c
net: sparx5: Add TAS offload support

drivers/net/ethernet/microchip/sparx5/Makefile | 2 +-
.../ethernet/microchip/sparx5/lan969x/lan969x.c | 2 +
.../microchip/sparx5/lan969x/lan969x_regs.c | 10 +
.../net/ethernet/microchip/sparx5/sparx5_main.c | 2 +
.../net/ethernet/microchip/sparx5/sparx5_main.h | 28 +
.../ethernet/microchip/sparx5/sparx5_main_regs.h | 204 ++++++
drivers/net/ethernet/microchip/sparx5/sparx5_qos.c | 53 +-
drivers/net/ethernet/microchip/sparx5/sparx5_qos.h | 1 -
.../net/ethernet/microchip/sparx5/sparx5_regs.c | 10 +
.../net/ethernet/microchip/sparx5/sparx5_regs.h | 10 +
drivers/net/ethernet/microchip/sparx5/sparx5_tas.c | 806 +++++++++++++++++++++
drivers/net/ethernet/microchip/sparx5/sparx5_tc.c | 17 +
12 files changed, 1094 insertions(+), 51 deletions(-)
---
base-commit: a5e7d8e446af9803e37a3b6a4d416fb41178348f
change-id: 20261006-sparx5-tas-20de2210770d

Best regards,
--
Daniel Machon <daniel.machon@xxxxxxxxxxxxx>