mbox series

[net-next,0/4] Cascaded management xmit for SJA1105 DSA driver

Message ID 20240913131507.2760966-1-vladimir.oltean@nxp.com (mailing list archive)
Headers show
Series Cascaded management xmit for SJA1105 DSA driver | expand

Message

Vladimir Oltean Sept. 13, 2024, 1:15 p.m. UTC
This patch set adds support for simple daisy chain topologies in the
sja1105 DSA driver:

 +------------+
 |    eth0    |
 |  (conduit) |
 +------------+
       |
       | Switch #1
 +------------+
 |    cpu     |--- user
 |            |--- user
 |    dsa     |--- user
 +------------+
       |
       | Switch #2
 +------------+
 |    dsa     |--- user
 |            |--- user
 |            |--- user
 |            |--- user
 +------------+

Previously we did support multi-switch trees, but not the simple kind.

What is special here is that sending PTP/STP packets out through
switch #2's user ports requires the programming of management routes in
switch #1 as well. Patch 4/4 does that. It requires some extra infra in
the DSA core, handled by patch 3/4. The extra infra requires documenting
an assumption in the dt-bindings: patch 2/4. And patch 1/4 is fixing a
bug I noticed while reviewing the code, but which is pretty hard to
meaningfully trigger, so I am not considering it a 'stable' candidate.

I do not actually have a board with a switch topology as described
above. This patch set was confirmed working by customers on their
boards. I have just regression-tested it on simple, single-switch trees.

Vladimir Oltean (4):
  net: dsa: free routing table on probe failure
  dt-bindings: net: dsa: the adjacent DSA port must appear first in
    "link" property
  net: dsa: populate dp->link_dp for cascade ports
  net: dsa: sja1105: implement management routes for cascaded switches

 .../devicetree/bindings/net/dsa/dsa-port.yaml |   9 +-
 drivers/net/dsa/sja1105/sja1105.h             |  43 ++-
 drivers/net/dsa/sja1105/sja1105_main.c        | 253 ++++++++++++++++--
 include/net/dsa.h                             |   9 +-
 net/dsa/dsa.c                                 |  43 ++-
 5 files changed, 307 insertions(+), 50 deletions(-)