[U-Boot] [PATCH 0/6] Introduce DSA Ethernet switch class and Felix driver

Michael Walle michael at walle.cc
Sun Nov 24 00:12:46 UTC 2019


Am 2019-11-22 02:36, schrieb Alex Marginean:
> 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

For the patches affecting the real hardware:

Tested-by: Michael Walle <michael at walle.cc>


More information about the U-Boot mailing list