Re: [PATCH net-next v2 1/3] net: macb: fix SGMII with inband aneg disabled

From: Conor Dooley

Date: Wed Mar 04 2026 - 11:35:30 EST


On Wed, Mar 04, 2026 at 06:59:35AM -0800, Charles Perry wrote:
> On Wed, Mar 04, 2026 at 11:15:43AM +0000, Conor Dooley wrote:
> > On Tue, Feb 24, 2026 at 12:28:52PM -0800, Charles Perry wrote:
> > > Make it possible to connect a PHY which does not use inband
> > > autoneg to a gem MAC using phylink's information.
> > >
> > > The previous implementation relied on whether or not the link
> > > was a fixed-link to disable SGMII autoneg. This commit extend
> > > this to all link which are not configured for inband
> > > autonegotiation.
> > >
> > > Signed-off-by: Charles Perry <charles.perry@xxxxxxxxxxxxx>
> >
> > This breaks the macb on mpfs-icicle-kit, I get stuck with:
> >
> > [ 7.189102] mpfs-sys-controller syscontroller: Registered MPFS system controller
> > [ 7.260946] macb 20110000.ethernet eth0: PHY [20112000.ethernet-ffffffff:08] driver [Vitesse VSC8662] (irq=POLL)
> > [ 7.273881] macb 20110000.ethernet eth0: configuring for phy/sgmii link mode
> > [ 7.296580] macb 20110000.ethernet: gem-ptp-timer ptp clock registered.
> > [ 7.345782] macb 20112000.ethernet eth1: PHY [20112000.ethernet-ffffffff:09] driver [Vitesse VSC8662] (irq=POLL)
> > [ 7.358082] macb 20112000.ethernet eth1: configuring for phy/sgmii link mode
> > [ 7.380479] macb 20112000.ethernet: gem-ptp-timer ptp clock registered.
> > [ 11.376763] macb 20110000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
> > [ 11.398403] Sending DHCP requests .
> > [ 11.472699] macb 20112000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
> > [ 13.938425] ..... timed out!
> > [ 93.598491] macb 20110000.ethernet eth0: Link is Down
> > [ 93.641823] macb 20110000.ethernet: gem-ptp-timer ptp clock unregistered.
> > [ 93.659433] macb 20112000.ethernet eth1: Link is Down
> > [ 93.691724] macb 20112000.ethernet: gem-ptp-timer ptp clock unregistered.
> > [ 93.703977] IP-Config: Retrying forever (NFS root)...
> > [ 93.758382] macb 20110000.ethernet eth0: PHY [20112000.ethernet-ffffffff:08] driver [Vitesse VSC8662] (irq=POLL)
> > [ 93.770655] macb 20110000.ethernet eth0: configuring for phy/sgmii link mode
> > [ 93.786497] macb 20110000.ethernet eth0: Link is Up - 1Gbps/Full - flow control off
> > [ 93.795840] macb 20110000.ethernet: gem-ptp-timer ptp clock registered.
> > [ 93.844481] macb 20112000.ethernet eth1: PHY [20112000.ethernet-ffffffff:09] driver [Vitesse VSC8662] (irq=POLL)
> > [ 93.856769] macb 20112000.ethernet eth1: configuring for phy/sgmii link mode
> > [ 93.870926] macb 20112000.ethernet eth1: Link is Up - 1Gbps/Full - flow control off
> > [ 93.880302] macb 20112000.ethernet: gem-ptp-timer ptp clock registered.
> >
>
> Hello Conor,
>
> I checked the driver for the VSC8662 and it doesn't have the
> ->inband_caps() and ->config_inband() callbacks so Linux leaves whatever
> the bootloader puts or uses the defaults. Looking at the datasheet, this
> should be register 23 (Extended PHY Control Set 1) bit 13 (MAC interface
> auto-negotiation)
>
> My guess is that this bit is set and since this patch disable inband
> autonegotiation (because phylink decides it), there is a mismatch.
>
> Can you add 'managed = "in-band-status"' in your device tree under the macb
> node? That's not necessarily the fix, I just want to confirm my theory.

No, it just produces a different error:
[ 5.769864] mpfs-sys-controller syscontroller: Registered MPFS system controller
[ 5.829146] macb 20110000.ethernet eth0: Could not attach PHY (-19)
[ 5.854232] IP-Config: Failed to open eth0
[ 5.897152] macb 20112000.ethernet eth1: Could not attach PHY (-19)
[ 5.921061] IP-Config: Failed to open eth1
[ 5.925592] IP-Config: No network devices available
[ 5.938800] clk: Disabling unused clocks
[ 5.944156] PM: genpd: Disabling unused power domains
[ 5.961029] check access for rdinit=/usr/sbin/init failed: -2, ignoring

> Also '#define DEBUG' in 'drivers/net/phy/phylink.c' can help if you can
> recompile your kernel.

Setting this provided no further logs, seemingly.

Adding some basic prints shows that the driver changed the state of the
PCSCNTRL register from 0x1040 to 0x40, so it disabled auto neg. The
driver previously left it as it was, 0x1040 before and 0x1040 after.

> > and because I am NFS root, it breaks boot :)
> >
> > btw, I don't see an explanation in hte commit message for why the
> > macb_is_gem(bp) got dropped? Is this now done unconditionally when it
> > was conditional before?
> >
>
> Well if you get to the ->macb_pcs_config() callback, you most certainly
> have an SGMII PCS block. Does your IP have the PCS registers? (0x200 to
> 0x23c) Also I thought that macb doesn't do SGMII (only GEM does) so it
> can't reach ->macb_pcs_config().

When I said "macb on" I meant to say "macb driver on", but omitted the
word. Unfortunately, the idiot who added the original mpfs compatible,
because the platform was using the "cdns,macb" compatible rather than a
soc-specific one, did not check if the platform was actually a macb
before doing so, and trusted the original dts author. This is actually a
gem.

Attachment: signature.asc
Description: PGP signature