mbox series

[net-next,0/8] net: dsa: microchip: DSA driver support for LAN937x switch

Message ID 20210128064112.372883-1-prasanna.vengateshan@microchip.com
Headers show
Series net: dsa: microchip: DSA driver support for LAN937x switch | expand

Message

Prasanna Vengateshan Jan. 28, 2021, 6:41 a.m. UTC
LAN937x is a Multi-Port 100BASE-T1 Ethernet Physical Layer switch 
compliant with the IEEE 802.3bw-2015 specification. The device 
provides 100 Mbit/s transmit and receive capability over a single
Unshielded Twisted Pair (UTP) cable. LAN937x is successive revision
of KSZ series switch. This series of patches provide the DSA driver 
support for Microchip LAN937X switch and it configures through 
SPI interface.

This driver shares some of the functions from KSZ common
layer.

The LAN937x switch series family consists of following SKUs:
LAN9370:
  - 4 T1 Phys
  - 1 RGMII port
LAN9371:
  - 3 T1 Phys & 1 TX Phy
  - 2 RGMII ports
LAN9372:
  - 5 T1 Phys & 1 TX Phy
  - 2 RGMII ports
LAN9373:
  - 5 T1 Phys
  - 2 RGMII & 1 SGMII port
LAN9374:
  - 6 T1 Phys
  - 2 RGMII ports

More support will be added at a later stage.

Prasanna Vengateshan (8):
  dt-bindings: net: dsa: dt bindings for microchip lan937x
  net: dsa: microchip: add tag handling for Microchip LAN937x
  net: dsa: microchip: add DSA support for microchip lan937x
  net: dsa: microchip: add support for phylink management
  net: dsa: microchip: add support for ethtool port counters
  net: dsa: microchip: add support for port mirror operations
  net: dsa: microchip: add support for fdb and mdb management
  net: dsa: microchip: add support for vlan operations

 .../bindings/net/dsa/microchip,lan937x.yaml   |  115 ++
 MAINTAINERS                                   |    1 +
 drivers/net/dsa/microchip/Kconfig             |   12 +
 drivers/net/dsa/microchip/Makefile            |    5 +
 drivers/net/dsa/microchip/ksz_common.h        |    1 +
 drivers/net/dsa/microchip/lan937x_dev.c       |  895 ++++++++++++++
 drivers/net/dsa/microchip/lan937x_dev.h       |   79 ++
 drivers/net/dsa/microchip/lan937x_main.c      | 1037 +++++++++++++++++
 drivers/net/dsa/microchip/lan937x_reg.h       |  955 +++++++++++++++
 drivers/net/dsa/microchip/lan937x_spi.c       |  104 ++
 include/net/dsa.h                             |    2 +
 net/dsa/Kconfig                               |    4 +-
 net/dsa/tag_ksz.c                             |   74 ++
 13 files changed, 3282 insertions(+), 2 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/net/dsa/microchip,lan937x.yaml
 create mode 100644 drivers/net/dsa/microchip/lan937x_dev.c
 create mode 100644 drivers/net/dsa/microchip/lan937x_dev.h
 create mode 100644 drivers/net/dsa/microchip/lan937x_main.c
 create mode 100644 drivers/net/dsa/microchip/lan937x_reg.h
 create mode 100644 drivers/net/dsa/microchip/lan937x_spi.c

Comments

Andrew Lunn Jan. 28, 2021, 6:03 p.m. UTC | #1
On Thu, Jan 28, 2021 at 12:11:06PM +0530, Prasanna Vengateshan wrote:
> The Microchip LAN937X switches have a tagging protocol which is
> very similar to KSZ tagging. So that the implementation is added to
> tag_ksz.c and reused common APIs
> 
> Signed-off-by: Prasanna Vengateshan <prasanna.vengateshan@microchip.com>
> ---
>  include/net/dsa.h |  2 ++
>  net/dsa/Kconfig   |  4 +--
>  net/dsa/tag_ksz.c | 74 +++++++++++++++++++++++++++++++++++++++++++++++
>  3 files changed, 78 insertions(+), 2 deletions(-)
> 
> diff --git a/include/net/dsa.h b/include/net/dsa.h
> index 2f5435d3d1db..b9bc7a9a8c15 100644
> --- a/include/net/dsa.h
> +++ b/include/net/dsa.h
> @@ -47,6 +47,7 @@ struct phylink_link_state;
>  #define DSA_TAG_PROTO_RTL4_A_VALUE		17
>  #define DSA_TAG_PROTO_HELLCREEK_VALUE		18
>  #define DSA_TAG_PROTO_XRS700X_VALUE		19
> +#define DSA_TAG_PROTO_LAN937X_VALUE		20
>  
>  enum dsa_tag_protocol {
>  	DSA_TAG_PROTO_NONE		= DSA_TAG_PROTO_NONE_VALUE,
> @@ -69,6 +70,7 @@ enum dsa_tag_protocol {
>  	DSA_TAG_PROTO_RTL4_A		= DSA_TAG_PROTO_RTL4_A_VALUE,
>  	DSA_TAG_PROTO_HELLCREEK		= DSA_TAG_PROTO_HELLCREEK_VALUE,
>  	DSA_TAG_PROTO_XRS700X		= DSA_TAG_PROTO_XRS700X_VALUE,
> +	DSA_TAG_PROTO_LAN937X		= DSA_TAG_PROTO_LAN937X_VALUE,
>  };
>  
>  struct packet_type;
> diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
> index 2d226a5c085f..217fa0f8d13e 100644
> --- a/net/dsa/Kconfig
> +++ b/net/dsa/Kconfig
> @@ -92,10 +92,10 @@ config NET_DSA_TAG_MTK
>  	  Mediatek switches.
>  
>  config NET_DSA_TAG_KSZ
> -	tristate "Tag driver for Microchip 8795/9477/9893 families of switches"
> +	tristate "Tag driver for Microchip 8795/9477/9893/937x families of switches"

You might want to keep these in numerical order.

    Andrew
woojung.huh@microchip.com Feb. 2, 2021, 1:25 a.m. UTC | #2
Hi Florian,

Wish you a happy and safe new year.

Thanks for your time to review new patches.
 > It is great to see a new switch from Microchip being submitted for

> review. One thing that has bothered me as a DSA maintainer before though

> is that we have seen Microchip contribute new DSA drivers which are

> always welcome, however the maintenance and bug fixing of these drivers

> was spotty, thus leading to external contributors to take on the tasks

> of fixing bugs. Do you have a stronger commitment now to stay involved

> with reviewing/fixing bugs affecting Microchip DSA drivers and to a

> larger extent the framework itself?

Admit that Microchip's activities on community, especially on DSA drivers, 
was not active for a while.  We are going to do our best to get involved more
on community including reviewing and frameworks. You might already start
seeing review and comments on community from Microchip recently.
 
> Could you also feed back to your hardware organization to settle on a

> tag format that is not a snowflake? Almost *every* switch you have has a

> different tagging format, this is absurd. All other vendors in tree have

> been able to settle on at most 2 or 3 different tagging formats over

> their switching product life span (for some vendors this dates back 20

> years ago).

Understand this point too. Actually, those products are developed over time.
Sometime it is not avoidable to add new stuff.
But, Yes, it would be better to design ahead with reserved fields.

Thanks again on your reviews and comments, will gear up on DSA works.

Best Regards,
Woojung