]> git.ipfire.org Git - thirdparty/openwrt.git/commit
qualcommax: pcs-qca-uniphy: take the USXGMII link from the receiver
authorRudy Andram <rmandrad@gmail.com>
Mon, 27 Jul 2026 10:32:38 +0000 (12:32 +0200)
committerRobert Marko <robimarko@gmail.com>
Thu, 6 Aug 2026 10:45:26 +0000 (12:45 +0200)
commitdd78f34eba83ef0795a69856894fa10eb8dee97e
treeb294154249ce39abd9b2bbb812b93237867e8106
parentbe89f6298d3ff5af1c041350817c6170aaf05189
qualcommax: pcs-qca-uniphy: take the USXGMII link from the receiver

qca_uniphy_pcs_get_state_usxgmii() took the link from the USXGMII code
word's link bit. An AQR113C behind this XPCS never asserts it:
autonegotiation completes, the code word tracks the copper rate as the
media renegotiates and reports full duplex, and the link bit stays clear
the whole time.

Once the port is marked as in-band managed that bit becomes the carrier
gate, so the port never gets carrier, link_up() never runs, the port MAC
is never enabled and the XPCS keeps its 10G reset default.

Take the link from the 10GBASE-R receiver instead, the way
qca_uniphy_pcs_get_state_10base_r() does. It answers the only question a
PCS can answer on its own, whether the system interface is up. The code
word stays the speed source: the Aquantia driver reports RATE_MATCH_NONE
for USXGMII, so phylink does not substitute the PHY's speed and this is
where the port's rate comes from. The link bit is kept as an_complete,
which is what it actually describes.

Confirmed on a QNAP QHora-301w, where 10g-1 now reaches carrier against a
1G link partner and configures an address.

Signed-off-by: Rudy Andram <rmandrad@gmail.com>
Signed-off-by: Julius Bairaktaris <julius@bairaktaris.de>
Link: https://github.com/openwrt/openwrt/pull/24420
Signed-off-by: Robert Marko <robimarko@gmail.com>
target/linux/qualcommax/files/drivers/net/pcs/pcs-qca-uniphy.c