netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: "Russell King (Oracle)" <linux@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>
Cc: David Yang <mmyangfl@gmail.com>,
	netdev@vger.kernel.org, Vladimir Oltean <olteanv@gmail.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Simon Horman <horms@kernel.org>,
	devicetree@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [PATCH net-next v11 2/5] net: phy: introduce PHY_INTERFACE_MODE_REVSGMII
Date: Wed, 24 Sep 2025 20:18:31 +0100	[thread overview]
Message-ID: <aNREByX9-8VtbH0n@shell.armlinux.org.uk> (raw)
In-Reply-To: <fe6a4073-eed0-499d-89ee-04559967b420@lunn.ch>

On Wed, Sep 24, 2025 at 08:41:06PM +0200, Andrew Lunn wrote:
> In theory, {R}GMII does have inband signalling, but it is pretty much
> never used. REV for GMII could thus indicate what role the device is
> playing in this in-band signalling?

For RGMII, as you say, the in-band signalling is pretty much never used.
The stmmac code as it stands today does have support for using it, but
the code has been broken for longer than six years:

1. the longest historical breakage, it's conditional on the hardware
   reporting that it has a PCS integrated into the design, but a PCS
   won't be integrated into the design for RGMII-only cases.

2. even if (1) was fixed, that would result in the driver manipulating
   the netif carrier state from interrupt context, always beating
   phylink's resolve worker, meaning that mac_link_(down|up) never get
   called. This results in no traffic flow and a non-functional
   interface.

So, maybe we should just ignore the RGMII in-band signalling until
someone pops up with a hard and fast requirement for it.

> For any SERDES based links likes like SGMII, 1000Base-X and above,
> clocking is part of the SERDES, so symmetrical. There clearly is
> inband signalling, mostly, when it is not broken because of
> overclocked SGMII. But we have never needed to specify what role each
> end needs to play.

100base-X is intentionally symmetric, and designed for:

	MAC----PCS---- some kind of link ----PCS----MAC

where "some kind of link" is fibre or copper. There is no reverse mode
possible there, because "reverse" is just the same as "normal".

For SGMII though, it's a different matter. The PHY-like end transmits
the link configuration. The MAC-like end receives the link
configuration and configures itself to it - and never sends a link
configuration back.

So, the formats of the in-band tx_config_reg[15:0] are different
depending on the role each end is in.

In order for a SGMII link with in-band signalling to work, one end
has to assume the MAC-like role and the other a PHY-like role.

PHY_INTERFACE_MODE_SGMII generally means that the MAC is acting in a
MAC-like role. However, stmmac had the intention (but broken) idea
that setting the DT snps,ps-speed property would configure it into a
PHY-like role. It almost does... but instead of setting the "transmit
configuration" (TC) bit, someone typo'd and instead set the "transmit
enable" (TE) bit. So no one has actually had their stmmac-based
device operating in a PHY-like role, even if they _thought_ it was!

> > However, stmmac hardware supports "reverse" mode for more than just
> > SGMII, also RGMII and SMII.
> 
> How does the databook describe reverse SGMII? How does it differ from
> SGMII?

It doesn't describe "reverse SGMII". Instead, it describes:

1. The TC bit in the MAC configuration register, which makes the block
   transmit the speed and duplex from the MAC configuration register
   over RGMII, SGMII or SMII links (only, not 1000base-X.)

2. The SGMIIRAL bit in the PCS control register, which switches where
   the SGMII rate adapter layer takes its speed configuration from -
   either the incoming in-band tx_config_reg[15:0] word, or from the
   MAC configuration register. It is explicitly stated for this bit
   that it is for back-to-back MAC links, and as it's specific to
   SGMII, that means a back-to-back SGMII MAC link.

Set both these bits while the MAC is configured for SGMII mode, and
you have a stmmac MAC which immitates a SGMII PHY as far as the
in-band tx_config_reg[15:0] word is concerned.

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

  reply	other threads:[~2025-09-24 19:18 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-09-22 13:11 [PATCH net-next v11 0/5] net: dsa: yt921x: Add support for Motorcomm YT921x David Yang
2025-09-22 13:11 ` [PATCH net-next v11 1/5] dt-bindings: ethernet-phy: add reverse SGMII phy interface type David Yang
2025-09-23 13:46   ` Rob Herring (Arm)
2025-09-22 13:11 ` [PATCH net-next v11 2/5] net: phy: introduce PHY_INTERFACE_MODE_REVSGMII David Yang
2025-09-23 14:32   ` Maxime Chevallier
2025-09-24 17:50   ` Russell King (Oracle)
2025-09-24 18:41     ` Andrew Lunn
2025-09-24 19:18       ` Russell King (Oracle) [this message]
2025-09-26  6:30         ` Yangfl
2025-09-26  8:45           ` Russell King (Oracle)
2025-09-26 16:09           ` Andrew Lunn
2025-09-26 16:28             ` Yangfl
2025-09-26 18:06               ` Russell King (Oracle)
2025-09-22 13:11 ` [PATCH net-next v11 3/5] dt-bindings: net: dsa: yt921x: Add Motorcomm YT921x switch support David Yang
2025-09-22 13:11 ` [PATCH net-next v11 4/5] net: dsa: tag_yt921x: add support for Motorcomm YT921x tags David Yang
2025-09-22 13:11 ` [PATCH net-next v11 5/5] net: dsa: yt921x: Add support for Motorcomm YT921x David Yang
2025-09-24  0:47   ` Jakub Kicinski
2025-09-24 12:33     ` Yangfl
2025-09-25  0:35       ` Jakub Kicinski

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=aNREByX9-8VtbH0n@shell.armlinux.org.uk \
    --to=linux@armlinux.org.uk \
    --cc=andrew@lunn.ch \
    --cc=conor+dt@kernel.org \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=hkallweit1@gmail.com \
    --cc=horms@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mmyangfl@gmail.com \
    --cc=netdev@vger.kernel.org \
    --cc=olteanv@gmail.com \
    --cc=pabeni@redhat.com \
    --cc=robh@kernel.org \
    /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 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).