From: Russell King - ARM Linux admin <linux@armlinux.org.uk>
To: Ioana Ciornei <ioana.ciornei@nxp.com>
Cc: "netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"davem@davemloft.net" <davem@davemloft.net>,
Vladimir Oltean <vladimir.oltean@nxp.com>,
Claudiu Manoil <claudiu.manoil@nxp.com>,
Alexandru Marginean <alexandru.marginean@nxp.com>,
"michael@walle.cc" <michael@walle.cc>,
"andrew@lunn.ch" <andrew@lunn.ch>,
"f.fainelli@gmail.com" <f.fainelli@gmail.com>,
"olteanv@gmail.com" <olteanv@gmail.com>
Subject: Re: [PATCH net-next v3 5/9] net: dsa: add support for phylink_pcs_ops
Date: Mon, 22 Jun 2020 14:14:12 +0100 [thread overview]
Message-ID: <20200622131412.GF1551@shell.armlinux.org.uk> (raw)
In-Reply-To: <VI1PR0402MB3871B441D15250A8970DD5A4E0970@VI1PR0402MB3871.eurprd04.prod.outlook.com>
On Mon, Jun 22, 2020 at 12:35:06PM +0000, Ioana Ciornei wrote:
>
> > Subject: Re: [PATCH net-next v3 5/9] net: dsa: add support for phylink_pcs_ops
> >
> > On Mon, Jun 22, 2020 at 12:10:57PM +0100, Russell King - ARM Linux admin
> > wrote:
> > > On Mon, Jun 22, 2020 at 11:22:13AM +0100, Russell King - ARM Linux admin
> > wrote:
> > > > On Mon, Jun 22, 2020 at 01:54:47AM +0300, Ioana Ciornei wrote:
> > > > > In order to support split PCS using PHYLINK properly, we need to
> > > > > add a phylink_pcs_ops structure.
> > > > >
> > > > > Note that a DSA driver that wants to use these needs to implement
> > > > > all 4 of them: the DSA core checks the presence of these 4
> > > > > function pointers in dsa_switch_ops and only then does it add a
> > > > > PCS to PHYLINK. This is done in order to preserve compatibility
> > > > > with drivers that have not yet been converted, or don't need, a split PCS
> > setup.
> > > > >
> > > > > Also, when pcs_get_state() and pcs_an_restart() are present, their
> > > > > mac counterparts (mac_pcs_get_state(), mac_an_restart()) will no
> > > > > longer get called, as can be seen in phylink.c.
> > > >
> > > > I don't like this at all, it means we've got all this useless
> > > > layering, and that layering will force similar layering veneers into
> > > > other parts of the kernel (such as the DPAA2 MAC driver, when we
> > > > eventually come to re-use pcs-lynx there.)
> > > >
>
> The veneers that you are talking about are one phylink_pcs_ops structure
> and 4 functions that call lynx_pcs_* subsequently. We have the same thing
> for the MAC operations.
>
> Also, the "veneers" in DSA are just how it works, and I don't want to change
> its structure without a really good reason and without a green light from
> DSA maintainers.
Right, but we're talking about hardware that is common not only in DSA
but elsewhere - and we already deal with that outside of DSA with PHYs.
So, what I'm proposing is really nothing new for DSA.
> > > > I don't think we need that - I think we can get to a position where
> > > > pcs-lynx is called requesting that it bind to phylink as the PCS,
> > > > and it calls phylink_add_pcs() directly, which means we do not end
> > > > up with veneers in DSA nor in the DPAA2 MAC driver - they just need
> > > > to call the pcs-lynx initialisation function with the phylink
> > > > instance for it to attach to.
>
> What I am most concerned about is that by passing the PCS ops directly to the
> PCS module we would lose any ability to apply SoC specific quirks at runtime
> such as errata workarounds.
Do you know what those errata would be? I'm only aware of A-011118 in
the LX2160A which I don't believe will impact this code. I don't have
visibility of Ocelot/Felix.
> On the other hand, I am not sure what is the concrete benefit of doing
> it your way. I understand that for a PHY device the MAC is not involved
> in the call path but in the case of the PCS the expectation is that it's
> tightly coupled in the silicon and not plug-and-play.
The advantage is less lines of code to maintain, and a more efficient
and understandable code structure. I would much rather start off
simple and then augment rather than start off with unnecessary
complexity and then get stuck with it while not really needing it.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
next prev parent reply other threads:[~2020-06-22 13:14 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20200622131412.GF1551@shell.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=alexandru.marginean@nxp.com \
--cc=andrew@lunn.ch \
--cc=claudiu.manoil@nxp.com \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=ioana.ciornei@nxp.com \
--cc=michael@walle.cc \
--cc=netdev@vger.kernel.org \
--cc=olteanv@gmail.com \
--cc=vladimir.oltean@nxp.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.