Thread (4 messages) 4 messages, 1 author, 1d ago

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

flat view
WARM1d

From: Daniel Machon <daniel.machon@microchip.com>
Date: 2026-10-06 13:51:35
Also in: linux-arm-kernel, lkml

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 [off-list ref]
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help