public inbox for netdev@vger.kernel.org
 help / color / mirror / Atom feed
* 10G-QXGMII phy no autonegotiation on LS1028A
@ 2026-02-25  8:32 Patryk
  2026-02-25 23:26 ` Andrew Lunn
  0 siblings, 1 reply; 5+ messages in thread
From: Patryk @ 2026-02-25  8:32 UTC (permalink / raw)
  To: netdev

Hello, I've been trying to bring-up the 10G-QXGMII PHY on LS1028A
based board and I have some problems. I guess that they come from the
fact that I do not see the whole picture as this is the second phy
I've been working on (actually the first one that uses serdes, the
previous one was connected through RGMII). Anyway I decided to send
this mail and post some of my questions hoping someone will find some
time to steer a newbie in the right direction.

The phy I've been using, once started, autoconfigures to 10G-QXGMII
mode with auto negotiation enabled. It detects the link partner
abilities and completes the autoneg process (at least on the line
side). I think we can assume it works as expected. From the SoC side,
as I understand the crucial part is pcs-lynx implementation. It
configures the USXGMII mode, checks the state, reads the link partner
ability that is carried "in-band". and so on. In the device tree I
configure my phy to use mode="in-band-status".

The problem is as follows - the pcs-lynx correctly detect the USXGII
link however does not detect the link partner ability thus, the link
never becomes functional. It looks like the autonegotiation on the SoC
side does not work at all. I browsed through the pcs-lynx sources,
looking at the LS1028A reference manual, and I've found that Serdes
module on this SoC features some MDIO devices, whereas one of them is
"QXGMII USXGMII Replicator" (LS1028ARM 29.6 MDIO register spaces for
anyone interested). I checked this device and it features the Control
Register, which contains the Auto_Negotiation_Enable bit that is never
set by the pcs-lynx driver. I patched the driver (just out of
curiosity) and in lynx_pcs_config_usxgmii I added code that sets this
bit. Somehow after this change the autoneg state machine kicked-in and
pcs-lynx was able to detect the link partner abilities, the negotiated
speed and make the link functional. I was even able to exchange some
information through this link - ping, scp file.

But this is ofc - in my opinion - not the solution, as I just can't
believe that someone just forgot to set this bit in the pcs-lynx
driver, I guess that the real solution is somewhere else. If this bit
is not set in the driver then what makes the autoneg process enabled?
I'm wondering if perhaps someone here has done something like this
before and would like to share some hints on how to approach this? The
second question I have - I mentioned that I was able to establish
communication with the link partner, however there were some errors
especially while sending bigger packets, e.g. sending ping -s 20 ended
up with 100% success rate, however ping -s 300 ended with ~50% success
rate. I'm wondering how big of an impact on the communication quality
has the fact that the PHY I've been using is connected through the
connector, not directly soldered on the PCB? It's just my feeling -
but if I were to guess I would say that in the case of 10G QXGMII it
may be significant, but I'm not that experienced to be sure of this
statement.

Best regards
Patryk

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2026-02-26 16:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-02-25  8:32 10G-QXGMII phy no autonegotiation on LS1028A Patryk
2026-02-25 23:26 ` Andrew Lunn
2026-02-26 12:36   ` Vladimir Oltean
2026-02-26 16:09     ` Patryk
2026-02-26 16:30       ` Vladimir Oltean

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox