RE: Unsupported phy-connection-type sgmii-2500 in arch/powerpc/boot/dts/fsl/t1023rdb.dts

From: Madalin Bucur
Date: Fri Jun 04 2021 - 15:39:16 EST


> -----Original Message-----
> From: Russell King <linux@xxxxxxxxxxxxxxx>
> Sent: 04 June 2021 22:28
> To: Madalin Bucur <madalin.bucur@xxxxxxx>
> Cc: Pali Rohár <pali@xxxxxxxxxx>; Andrew Lunn <andrew@xxxxxxx>; Igal
> Liberman <Igal.Liberman@xxxxxxxxxxxxx>; Shruti Kanetkar
> <Shruti@xxxxxxxxxxxxx>; Emil Medve <Emilian.Medve@xxxxxxxxxxxxx>; Scott
> Wood <oss@xxxxxxxxxxxx>; Rob Herring <robh+dt@xxxxxxxxxx>; Michael
> Ellerman <mpe@xxxxxxxxxxxxxx>; Benjamin Herrenschmidt
> <benh@xxxxxxxxxxxxxxxxxxx>; netdev@xxxxxxxxxxxxxxx;
> devicetree@xxxxxxxxxxxxxxx; linux-kernel@xxxxxxxxxxxxxxx; Camelia
> Alexandra Groza (OSS) <camelia.groza@xxxxxxxxxxx>
> Subject: Re: Unsupported phy-connection-type sgmii-2500 in
> arch/powerpc/boot/dts/fsl/t1023rdb.dts
>
> On Fri, Jun 04, 2021 at 07:35:33AM +0000, Madalin Bucur wrote:
> > Hi, the Freescale emails no longer work, years after Freescale joined
> NXP.
> > Also, the first four recipients no longer work for NXP.
> >
> > In regards to the sgmii-2500 you see in the device tree, it describes
> SGMII
> > overclocked to 2.5Gbps, with autonegotiation disabled.
> >
> > A quote from a long time ago, from someone from the HW team on this:
> >
> > The industry consensus is that 2.5G SGMII is overclocked 1G SGMII
> > using XAUI electricals. For the PCS and MAC layers, it looks exactly
> > like 1G SGMII, just with a faster clock.
> >
> > The statement that it does not exist is not accurate, it exists in HW,
> and
> > it is described as such in the device tree. Whether or not it is
> properly
> > treated in SW it's another discussion.
>
> Here's the issue though:
>
> 802.3 defined 1000base-X which is a fixed 1G speed interface using a
> 16-bit control word. Implementations of this exist where the control
> word can be disabled.
>
> Cisco came along, took 1000base-X and augmented it to allow speeds of
> 10M and 100M by symbol repetition, and changing the format of the
> 16-bit control word. Otherwise, it is functionally compatible - indeed
> SGMII with the control word disabled will connect with 1000base-X with
> the control word disabled. I've done it several times.
>
> There exists 2500base-X, which is 1000base-X clocked faster, and it
> seems the concensus is that it has the AN disabled - in other words,
> no control word.
>
> Now you're saying that SGMII at 2.5G speed exists, which is 1G SGMII
> fixed at 1G speed, without a control word, upclocked by 2.5x.
>
> My question to you is how is how is this SGMII 2.5G different from
> 2500base-X?
>
> > In 2015, when this was submitted,
> > there were no other 2.5G compatibles in use, if I'm not mistaken.
> > 2500Base-X started to be added to device trees four years later, it
> should
> > be compatible/interworking but it is less specific on the actual
> implementation
> > details (denotes 2.5G speed, 8b/10b coding, which is true for this
> overclocked
> > SGMII). If they are compatible, SW should probably treat them in the
> same manner.
>
> My argument has been (since I've had experience of SGMII talking to
> 1000base-X, and have also accidentally clocked such a scenario at
> 2.5G speeds) that there is in fact no functional difference between
> SGMII and base-X when they are running at identical speeds with the
> control word disabled.
>
> Given that we well know that industry likes to use the term "SGMII"
> very loosely to mean <whatever>base-X as well as SGMII, it becomes
> a very bad term to use when we wish to differentiate between a
> base-X and a real Cisco SGMII link with their different control word
> formats.
>
> And this has always been my point - industry has created confusion
> over these terms, but as software programmers, we need to know the
> difference. So, SGMII should _only_ be used to identify the Cisco
> SGMII modified version of 802.3 base-X _with_ the modified control
> word or with the capability of symbol repetition. In other words,
> the very features that make it SGMII as opposed to 802.3 base-X.
> Everything else should not use the term SGMII.
>
> > There were some discussions a while ago about the mix or even confusion
> between
> > the actual HW description (that's what the dts is supposed to do) and
> the settings
> > one wants to represent in SW (i.e. speed) denoted loosely by
> denominations like
> > 10G Base-R.
>
> The "confusion" comes from an abuse of terms. Abused terms really
> can't adequately be used to describe hardware properties.
>
> As I say above, we _know_ that some manufacturers state that their
> single lane serdes is "SGMII" when it is in fact 1000base-X. That
> doesn't mean we stuff "sgmii" into device tree because that's what
> the vendor decided to call it.
>
> "sgmii" in the device tree means Cisco's well defined SGMII and
> does not mean 1000base-X.

The "sgmii-2500" compatible in that device tree describes an SGMII HW
block, overclocked at 2.5G. Without that overclocking, it's a plain
Cisco (like) SGMII HW block. That's the reason you need to disable it's
AN setting when overclocked. With the proper Reset Configuration Word,
you could remove the overclocking and transform that into a plain "sgmii".
Thus, the dts compatible describes the HW, as it is.

Madalin