Subject: Re: [PATCH RFC net-next 6/6] net: dsa: sja1105: support switching between SGMII and 2500BASE-X

From: "Russell King (Oracle)" <[email-masked]>
Date: Fri, 25 Feb 2022 11:23:20 +0000

On Fri, Feb 25, 2022 at 01:16:49PM +0200, Vladimir Oltean wrote:
> On Thu, Feb 24, 2022 at 04:15:41PM +0000, Russell King (Oracle) wrote:
> > Vladimir Oltean suggests that sla1105 can support switching between
> 
> s/sla1105/sja1105/

Thanks for catching that.

> > SGMII and 2500BASE-X modes. Augment sja1105_phylink_get_caps() to
> > fill in both interface modes if they can be supported.
> > 
> > Signed-off-by: Russell King (Oracle) <[email-masked]>
> > ---
> >  drivers/net/dsa/sja1105/sja1105_main.c | 28 +++++++++++++++++++++-----
> >  1 file changed, 23 insertions(+), 5 deletions(-)
> > 
> > diff --git a/drivers/net/dsa/sja1105/sja1105_main.c b/drivers/net/dsa/sja1105/sja1105_main.c
> > index 5beef06d8ff7..36001b1d7968 100644
> > --- a/drivers/net/dsa/sja1105/sja1105_main.c
> > +++ b/drivers/net/dsa/sja1105/sja1105_main.c
> > @@ -1396,6 +1396,7 @@ static void sja1105_phylink_get_caps(struct dsa_switch *ds, int port,
> >  {
> >  	struct sja1105_private *priv = ds->priv;
> >  	struct sja1105_xmii_params_entry *mii;
> > +	phy_interface_t phy_mode;
> >  
> >  	/* This driver does not make use of the speed, duplex, pause or the
> >  	 * advertisement in its mac_config, so it is safe to mark this driver
> > @@ -1403,11 +1404,28 @@ static void sja1105_phylink_get_caps(struct dsa_switch *ds, int port,
> >  	 */
> >  	config->legacy_pre_march2020 = false;
> >  
> > -	/* The SJA1105 MAC programming model is through the static config
> > -	 * (the xMII Mode table cannot be dynamically reconfigured), and
> > -	 * we have to program that early.
> > -	 */
> > -	__set_bit(priv->phy_mode[port], config->supported_interfaces);
> > +	phy_mode = priv->phy_mode[port];
> > +	if (phy_mode == PHY_INTERFACE_MODE_SGMII ||
> > +	    phy_mode == PHY_INTERFACE_MODE_2500BASEX) {
> > +		/* Changing the PHY mode on SERDES ports is possible and makes
> > +		 * sense, because that is done through the XPCS. We allow
> > +		 * changes between SGMII and 2500base-X (it is unknown whether
> > +		 * 1000base-X is supported).
> > +		 */
> 
> It is actually known (or so I think).
> Bits 2:1 (PCS_MODE) of register VR_MII_AN_CTRL (MMD 0x1f, address 0x8001)
> of the XPCS, as instantiated in SJA1105R/S, says:
> 00: Clause 37 auto-negotiation for 1000BASE-X mode
>     *Not supported*
> 10: Clause 37 auto-negotiation for SGMII mode
> 
> When I look at the XPCS documentation for SJA1110, it doesn't say
> "Not supported", however I don't have the setup to try it.
> If it's anything like the XPCS instantiation from SJA1105 though, this
> is possibly a documentation glitch and I wouldn't say it was implemented
> just because the documentation doesn't say it isn't.
> 
> On the other hand, disabling SGMII in-band autoneg is possible, and the
> resulting mode is electrically compatible with 1000Base-X without
> in-band autoneg. Interpret this as you wish.

The comment above comes directly from your patch back in November.
Are you suggesting you aren't happy with your own comment? If you
would like to update it, please let me have a suitable replacement
for it.

Thanks.

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!