On Fri, 22 Nov 2019 at 03:37, Alex Marginean <alexandru.margin...@nxp.com> wrote: > > DSA stands for Distributed Switch Architecture and it is a subsystem > introduced > in the Linux kernel to support switches that: > - have an Ethernet link up to the CPU > - use some form of tagging to identify the source/destination port for Rx/Tx > - may be cascaded in tree-like structures. > > DSA is described in depth here: > https://www.kernel.org/doc/Documentation/networking/dsa/dsa.txt > > From the doc: > > Summarized, this is basically how DSA looks like from a network device > perspective: > > > |--------------------------- > | CPU network device (eth0)| > ---------------------------- > | <tag added by switch | > | | > | | > | tag added by CPU> | > |--------------------------------------------| > | Switch driver | > |--------------------------------------------| > || || || > |-------| |-------| |-------| > | sw0p0 | | sw0p1 | | sw0p2 | > |-------| |-------| |-------| > > This patch set introduces a DSA class in U-Boot to support drivers of such > switches. DSA drivers have to implement the following ops: > - enable/disable of switch ports, > - insert a tag in frames being transmitted, used by the switch to select the > egress port, > - parse a tag in frames being received, used for Rx traffic. > > DSA class code deals with presentation of switch ports as Ethernet interfaces, > deals with the master Ethernet device for I/O and helps with parsing of the DT > assuming the structure follows the DSA kernel binding. > > Support for switch cascading is not included yet. > > This patch set also introduces a driver for the Ethernet switch integrated > into > NXP LS1028A, called Felix. The switch has 4 front panel ports, I/O to/fom it > is > done though an ENETC Ethernet interface and meta-data is carried between the > switch and the driver though an additional header pre-pended to the original > frame. > Network commands like tftp can be used on these front panel ports. The ports > are disabled unless used so they do not cause issues on network topologies > that > include loops. > > Felix as seen on LS1028A RDB: > => dm tree > Class Index Probed Driver Name > ----------------------------------------------------------- > ...... > dsa 0 [ + ] felix-switch | |-- felix-switch > eth 4 [ + ] dsa-port | | |-- swp0 > eth 5 [ + ] dsa-port | | |-- swp1 > eth 6 [ + ] dsa-port | | |-- swp2 > eth 7 [ + ] dsa-port | | `-- swp3 > > => mdio list > ...... > 10 - Vitesse VSC8514 <--> swp0 > 11 - Vitesse VSC8514 <--> swp1 > 12 - Vitesse VSC8514 <--> swp2 > 13 - Vitesse VSC8514 <--> swp3 > > => tftp 80000000 test > Using swp2 device > TFTP from server 192.168.100.1; our IP address is 192.168.100.100 > Filename 'test'. > Load address: 0x80000000 > Loading: ################################################################# > ################################################################# > ######################################################## > 6.8 MiB/s > done > Bytes transferred = 949880 (e7e78 hex) > > > > This patch set replaces this previous submission of the Felix driver: > https://patchwork.ozlabs.org/project/uboot/list/?series=143126&state=* > and depends on: > https://patchwork.ozlabs.org/project/uboot/list/?series=142858 > https://patchwork.ozlabs.org/project/uboot/list/?series=142879 > > Alex Marginean (6): > net: introduce DSA class for Ethernet switches > drivers: net: add a DSA sandbox driver > test: dm: add a simple unit test for DSA class > drivers: net: add Felix DSA switch driver > arm: dts: ls1028a: adds Ethernet switch node and its dependencies > configs: ls1028a: enable the Ethernet switch driver in defconfig > > arch/Kconfig | 1 + > arch/arm/dts/fsl-ls1028a-rdb.dts | 36 ++ > arch/arm/dts/fsl-ls1028a.dtsi | 41 +- > arch/sandbox/dts/test.dts | 49 ++ > configs/ls1028aqds_tfa_SECURE_BOOT_defconfig | 3 +- > configs/ls1028aqds_tfa_defconfig | 3 +- > configs/ls1028ardb_tfa_SECURE_BOOT_defconfig | 3 +- > configs/ls1028ardb_tfa_defconfig | 3 +- > drivers/net/Kconfig | 21 + > drivers/net/Makefile | 1 + > drivers/net/dsa_sandbox.c | 272 +++++++++++ > drivers/net/fsl_enetc.h | 5 + > drivers/net/mscc_eswitch/Kconfig | 8 + > drivers/net/mscc_eswitch/Makefile | 1 + > drivers/net/mscc_eswitch/felix_switch.c | 453 +++++++++++++++++++ > include/configs/sandbox.h | 4 + > include/dm/uclass-id.h | 1 + > include/dsa.h | 132 ++++++ > net/Makefile | 1 + > net/dsa-uclass.c | 369 +++++++++++++++ > test/dm/Makefile | 1 + > test/dm/dsa.c | 58 +++ > test/dm/test-fdt.c | 2 +- > 23 files changed, 1462 insertions(+), 6 deletions(-) > create mode 100644 drivers/net/dsa_sandbox.c > create mode 100644 drivers/net/mscc_eswitch/felix_switch.c > create mode 100644 include/dsa.h > create mode 100644 net/dsa-uclass.c > create mode 100644 test/dm/dsa.c > > -- > 2.17.1 > > _______________________________________________ > U-Boot mailing list > U-Boot@lists.denx.de > https://lists.denx.de/listinfo/u-boot
CC:ing the Linux DSA maintainers, who are probably interested in this. Thanks, -Vladimir _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de https://lists.denx.de/listinfo/u-boot