netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net-next v3 0/9] net: phy: add Lynx PCS MDIO module
@ 2020-06-21 22:54 Ioana Ciornei
  2020-06-21 22:54 ` [PATCH net-next v3 1/9] net: phylink: add interface to configure clause 22 PCS PHY Ioana Ciornei
                   ` (9 more replies)
  0 siblings, 10 replies; 26+ messages in thread
From: Ioana Ciornei @ 2020-06-21 22:54 UTC (permalink / raw)
  To: netdev, davem
  Cc: vladimir.oltean, claudiu.manoil, alexandru.marginean, michael,
	andrew, linux, f.fainelli, olteanv, Ioana Ciornei

Add support for the Lynx PCS as a separate module in drivers/net/phy/.
The advantage of this structure is that multiple ethernet or switch
drivers used on NXP hardware (ENETC, Felix DSA switch etc) can share the
same implementation of PCS configuration and runtime management.

The PCS is represented as an mdio_device and the callbacks exported are
highly tied with PHYLINK and can't be used without it.

The first 3 patches add some missing pieces in PHYLINK and the locked
mdiobus write accessor. Next, the Lynx PCS MDIO module is added as a
standalone module. The majority of the code is extracted from the Felix
DSA driver. The last patch makes the necessary changes in the Felix
driver in order to use the new common PCS implementation.

At the moment, USXGMII (only with in-band AN and speeds up to 2500),
SGMII, QSGMII (with and without in-band AN) and 2500Base-X (only w/o
in-band AN) are supported by the Lynx PCS MDIO module since these were
also supported by Felix and no functional change is intended at this
time.

Changes in v2:
 * got rid of the mdio_lynx_pcs structure and directly exported the
 functions without the need of an indirection
 * made the necessary adjustments for this in the Felix DSA driver
 * solved the broken allmodconfig build test by making the module
 tristate instead of bool
 * fixed a memory leakage in the Felix driver (the pcs structure was
 allocated twice)

Changes in v3:
 * added support for PHYLINK PCS ops in DSA (patch 5/9)
 * cleanup in Felix PHYLINK operations and migrate to
 phylink_mac_link_up() being the callback of choice for applying MAC
 configuration (patches 6-8)

As per Russell's request, the DSA core now exports PHYLINK PCS ops.
DSA adds a phylink_pcs_ops structure to PHYLINK only when a switch
driver is implementing all of the 4 PCS operations (get_state,
an_restart, config, link_up).

Note that there is no longer anything to be done in phylink_mac_config()
for Felix and, likely, for any other driver which uses the new PHYLINK
format. However, PHYLINK does want the phylink_mac_config() pointer to
be present. Currently, the DSA core supplied a stub and happily doesn't
do anything because felix_phylink_mac_config() is missing.

Felix's migration from mac_config() to mac_link_up() was added directly
into this patch set since everything in this general area is
intertwined and splitting would have been difficult.

Ioana Ciornei (5):
  net: phylink: consider QSGMII interface mode in
    phylink_mii_c22_pcs_get_state
  net: mdiobus: add clause 45 mdiobus write accessor
  net: phy: add Lynx PCS module
  net: dsa: add support for phylink_pcs_ops
  net: dsa: felix: use the Lynx PCS helpers

Russell King (1):
  net: phylink: add interface to configure clause 22 PCS PHY

Vladimir Oltean (3):
  net: dsa: felix: unconditionally configure MAC speed to 1000Mbps
  net: dsa: felix: set proper pause frame timers based on link speed
  net: dsa: felix: use resolved link config in mac_link_up()

 MAINTAINERS                            |   7 +
 drivers/net/dsa/ocelot/Kconfig         |   1 +
 drivers/net/dsa/ocelot/felix.c         | 129 ++++++---
 drivers/net/dsa/ocelot/felix.h         |  16 +-
 drivers/net/dsa/ocelot/felix_vsc9959.c | 385 +++----------------------
 drivers/net/phy/Kconfig                |   6 +
 drivers/net/phy/Makefile               |   1 +
 drivers/net/phy/pcs-lynx.c             | 337 ++++++++++++++++++++++
 drivers/net/phy/phylink.c              |  38 +++
 include/linux/fsl/enetc_mdio.h         |  21 --
 include/linux/mdio.h                   |   6 +
 include/linux/pcs-lynx.h               |  25 ++
 include/linux/phylink.h                |   3 +
 include/net/dsa.h                      |  12 +
 net/dsa/dsa_priv.h                     |   1 +
 net/dsa/port.c                         |  46 +++
 net/dsa/slave.c                        |   6 +
 17 files changed, 617 insertions(+), 423 deletions(-)
 create mode 100644 drivers/net/phy/pcs-lynx.c
 create mode 100644 include/linux/pcs-lynx.h

-- 
2.25.1


^ permalink raw reply	[flat|nested] 26+ messages in thread

end of thread, other threads:[~2020-07-01 13:49 UTC | newest]

Thread overview: 26+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-21 22:54 [PATCH net-next v3 0/9] net: phy: add Lynx PCS MDIO module Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 1/9] net: phylink: add interface to configure clause 22 PCS PHY Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 2/9] net: phylink: consider QSGMII interface mode in phylink_mii_c22_pcs_get_state Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 3/9] net: mdiobus: add clause 45 mdiobus write accessor Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 4/9] net: phy: add Lynx PCS module Ioana Ciornei
2020-06-22 10:12   ` Russell King - ARM Linux admin
2020-06-23 11:49     ` Ioana Ciornei
2020-06-23 12:03       ` Russell King - ARM Linux admin
2020-06-22 23:04   ` Russell King - ARM Linux admin
2020-06-21 22:54 ` [PATCH net-next v3 5/9] net: dsa: add support for phylink_pcs_ops Ioana Ciornei
2020-06-22 10:22   ` Russell King - ARM Linux admin
2020-06-22 11:10     ` Russell King - ARM Linux admin
2020-06-22 12:16       ` Russell King - ARM Linux admin
2020-06-22 12:35         ` Ioana Ciornei
2020-06-22 13:14           ` Russell King - ARM Linux admin
2020-06-22 13:51             ` Ioana Ciornei
2020-06-22 14:07               ` Russell King - ARM Linux admin
2020-06-21 22:54 ` [PATCH net-next v3 6/9] net: dsa: felix: unconditionally configure MAC speed to 1000Mbps Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 7/9] net: dsa: felix: set proper pause frame timers based on link speed Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 8/9] net: dsa: felix: use resolved link config in mac_link_up() Ioana Ciornei
2020-06-21 22:54 ` [PATCH net-next v3 9/9] net: dsa: felix: use the Lynx PCS helpers Ioana Ciornei
2020-06-22  9:29 ` [PATCH net-next v3 0/9] net: phy: add Lynx PCS MDIO module Russell King - ARM Linux admin
2020-06-22  9:34   ` Vladimir Oltean
2020-06-30  6:01     ` Michael Walle
2020-07-01 13:37       ` Vladimir Oltean
2020-07-01 13:49         ` Michael Walle

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).