public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
From: Charles Perry <charles.perry@microchip.com>
To: <netdev@vger.kernel.org>
Cc: Sean Anderson <sean.anderson@linux.dev>,
	Charles Perry <charles.perry@microchip.com>,
	Nicolas Ferre <nicolas.ferre@microchip.com>,
	Claudiu Beznea <claudiu.beznea@tuxon.dev>,
	Andrew Lunn <andrew+netdev@lunn.ch>,
	"David S. Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Russell King <linux@armlinux.org.uk>,
	<linux-kernel@vger.kernel.org>
Subject: [PATCH net-next 2/2] net: macb: add support for reporting SGMII inband link status
Date: Thu, 19 Feb 2026 09:01:12 -0800	[thread overview]
Message-ID: <20260219170113.1774090-2-charles.perry@microchip.com> (raw)
In-Reply-To: <20260219170113.1774090-1-charles.perry@microchip.com>

This makes it possible to use in-band autonegotiation with
SGMII.

If using a device tree, this can be done by adding the managed =
"in-band-status" property to the gem node.

Signed-off-by: Charles Perry <charles.perry@microchip.com>
---

Notes:
    Logs with inband aneg:
    
    root@p64h:~# ifconfig eth1 up 10.180.59.33
    macb 40004184000.ethernet eth1: PHY 4000c21e000.mdio-mdio:02 doesn't supply possible interfaces
    macb 40004184000.ethernet eth1: PHY [4000c21e000.mdio-mdio:02] driver [Microsemi GE VSC8574 SyncE] (irq=POLL)
    macb 40004184000.ethernet eth1: phy: sgmii setting supported 00000000,00000000,00000000,000042ff advertising 00000000,00000000,00000000,000042ff
    macb 40004184000.ethernet eth1: configuring for inband/sgmii link mode
    macb 40004184000.ethernet eth1: major config, requested inband/sgmii
    macb 40004184000.ethernet eth1: interface sgmii inband modes: pcs=00 phy=03
    pcs_ib_caps=0x0 phy_ib_caps=0x3
    macb 40004184000.ethernet eth1: major config, active inband/inband,an-enabled/sgmii
    macb 40004184000.ethernet eth1: phylink_mac_config: mode=inband/sgmii/none adv=00000000,00000000,00000000,000042ff pause=00
    PCSANADV=0x1 PCSCNTRL=0x1040
    PCSSTS=0x109 PCSANLPBASE=0x1801
    PCSSTS=0x12d PCSANLPBASE=0x1801
    macb 40004184000.ethernet eth1: phy link down sgmii/Unknown/Unknown/none/off/nolpi
    PCSSTS=0x12d PCSANLPBASE=0x1801
    PCSSTS=0x12d PCSANLPBASE=0x1801
    macb 40004184000.ethernet eth1: phy link up sgmii/1Gbps/Full/none/tx/nolpi
    PCSSTS=0x129 PCSANLPBASE=0x9801
    PCSSTS=0x12d PCSANLPBASE=0x9801
    macb 40004184000.ethernet eth1: Link is Up - 1Gbps/Full - flow control tx
    
    Logs without inband aneg:
    
    macb 40004184000.ethernet eth1: PHY 4000c21e000.mdio-mdio:02 doesn't supply possible interfaces
    macb 40004184000.ethernet eth1: PHY [4000c21e000.mdio-mdio:02] driver [Microsemi GE VSC8574 SyncE] (irq=POLL)
    macb 40004184000.ethernet eth1: phy: sgmii setting supported 00000000,00000000,00000000,000042ff advertising 00000000,00000000,00000000,000042ff
    macb 40004184000.ethernet eth1: configuring for phy/sgmii link mode
    macb 40004184000.ethernet eth1: major config, requested phy/sgmii
    macb 40004184000.ethernet eth1: interface sgmii inband modes: pcs=00 phy=03
    macb 40004184000.ethernet eth1: major config, active phy/outband/sgmii
    macb 40004184000.ethernet eth1: phylink_mac_config: mode=phy/sgmii/none adv=00000000,00000000,00000000,00000000 pause=00
    PCSANADV=0x1 PCSCNTRL=0x40
    macb 40004184000.ethernet eth1: phy link down sgmii/Unknown/Unknown/none/off/nolpi
    macb 40004184000.ethernet eth1: phy link up sgmii/1Gbps/Full/none/tx/nolpi
    macb 40004184000.ethernet eth1: Link is Up - 1Gbps/Full - flow control tx

 drivers/net/ethernet/cadence/macb_main.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/cadence/macb_main.c b/drivers/net/ethernet/cadence/macb_main.c
index 5002087cda09..a7a2d7fcb18c 100644
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
@@ -560,7 +560,12 @@ static int macb_usx_pcs_config(struct phylink_pcs *pcs,
 static void macb_pcs_get_state(struct phylink_pcs *pcs, unsigned int neg_mode,
 			       struct phylink_link_state *state)
 {
-	state->link = 0;
+	struct macb *bp = container_of(pcs, struct macb, phylink_sgmii_pcs);
+	u16 bmsr, lpa;
+
+	bmsr = gem_readl(bp, PCSSTS);
+	lpa = gem_readl(bp, PCSANLPBASE);
+	phylink_mii_c22_pcs_decode_state(state, neg_mode, bmsr, lpa);
 }
 
 static void macb_pcs_an_restart(struct phylink_pcs *pcs)
-- 
2.47.3


  reply	other threads:[~2026-02-19 17:02 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-02-19 17:01 [PATCH net-next 1/2] net: macb: fix SGMII with inband aneg disabled Charles Perry
2026-02-19 17:01 ` Charles Perry [this message]
2026-02-19 17:15   ` [PATCH net-next 2/2] net: macb: add support for reporting SGMII inband link status Russell King (Oracle)
2026-02-19 17:13 ` [PATCH net-next 1/2] net: macb: fix SGMII with inband aneg disabled Russell King (Oracle)
2026-02-19 17:19 ` Russell King (Oracle)

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=20260219170113.1774090-2-charles.perry@microchip.com \
    --to=charles.perry@microchip.com \
    --cc=andrew+netdev@lunn.ch \
    --cc=claudiu.beznea@tuxon.dev \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=nicolas.ferre@microchip.com \
    --cc=pabeni@redhat.com \
    --cc=sean.anderson@linux.dev \
    /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