From f4a7ae107e6ad41c37d0bfa152a35a6b2da79037 Mon Sep 17 00:00:00 2001 From: Julius Bairaktaris Date: Sun, 26 Jul 2026 11:45:30 +0200 Subject: [PATCH] qualcommax: enable in-band signalling on the USXGMII ports USXGMII carries the line rate to the MAC in a Clause 37 code word, so the link needs in-band signalling. Without "managed" the port is PHY managed, phylink disables in-band on the PHY, and with the PCS now honouring neg_mode neither end runs autonegotiation, so nothing crosses the system interface. Every USXGMII port in this target was missing the property: ten ports across eight boards, all of them an Aquantia PHY on copper, none of them an SFP cage. ipq8074-rt-ax89x already carried "in-band-status" on its SGMII lan8, which is why a file-level search made it look covered. Only the two ports on ipq8072-301w have been tested on hardware. The remaining eight are the same PHY family behind the same PCS, are broken today for the same reason, and cannot regress from a state where they pass no traffic, but they have not been confirmed on a board. That test ran on the 6.18 testing kernel, where phylink switches the PHY side on through phy_config_inband(). On 6.12 the PHY has no such op and 0760-net-phy-aquantia-enable-USXGMII-MAC-autoneg.patch forces the same bit unconditionally, so the end state matches, but no board has confirmed it there. Tested-by: Rudy Andram Assisted-by: Claude:claude-opus-5 Signed-off-by: Julius Bairaktaris Link: https://github.com/openwrt/openwrt/pull/24420 Signed-off-by: Robert Marko --- target/linux/qualcommax/dts/ipq6018-mr7500.dts | 1 + target/linux/qualcommax/dts/ipq8072-301w.dts | 2 ++ target/linux/qualcommax/dts/ipq8072-haze.dts | 1 + target/linux/qualcommax/dts/ipq8072-mx8500.dts | 1 + target/linux/qualcommax/dts/ipq8074-nbg7815.dts | 1 + target/linux/qualcommax/dts/ipq8074-rax120v2.dts | 1 + target/linux/qualcommax/dts/ipq8074-rt-ax89x.dts | 1 + target/linux/qualcommax/dts/ipq8074-wxr-5950ax12.dts | 2 ++ 8 files changed, 10 insertions(+) diff --git a/target/linux/qualcommax/dts/ipq6018-mr7500.dts b/target/linux/qualcommax/dts/ipq6018-mr7500.dts index bb58959c9f..4faf8520d4 100644 --- a/target/linux/qualcommax/dts/ipq6018-mr7500.dts +++ b/target/linux/qualcommax/dts/ipq6018-mr7500.dts @@ -422,6 +422,7 @@ label = "wan"; phy-handle = <&aqr114c>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy1 0>; nvmem-cells = <&hw_mac_addr 0>; nvmem-cell-names = "mac-address"; diff --git a/target/linux/qualcommax/dts/ipq8072-301w.dts b/target/linux/qualcommax/dts/ipq8072-301w.dts index 0b973b4150..2164853a8b 100644 --- a/target/linux/qualcommax/dts/ipq8072-301w.dts +++ b/target/linux/qualcommax/dts/ipq8072-301w.dts @@ -498,6 +498,7 @@ label = "10g-1"; phy-handle = <&aqr113c_8>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy1 0>; }; @@ -506,6 +507,7 @@ label = "10g-2"; phy-handle = <&aqr113c_0>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; }; }; diff --git a/target/linux/qualcommax/dts/ipq8072-haze.dts b/target/linux/qualcommax/dts/ipq8072-haze.dts index fc5fd8bd96..ed205b22fa 100644 --- a/target/linux/qualcommax/dts/ipq8072-haze.dts +++ b/target/linux/qualcommax/dts/ipq8072-haze.dts @@ -254,6 +254,7 @@ label = "wan"; phy-handle = <&aqr113c>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; }; }; diff --git a/target/linux/qualcommax/dts/ipq8072-mx8500.dts b/target/linux/qualcommax/dts/ipq8072-mx8500.dts index bdc1c143e7..8064f76e41 100644 --- a/target/linux/qualcommax/dts/ipq8072-mx8500.dts +++ b/target/linux/qualcommax/dts/ipq8072-mx8500.dts @@ -472,6 +472,7 @@ label = "wan"; phy-handle = <&aqr114c>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; nvmem-cells = <&hw_mac_addr 0>; nvmem-cell-names = "mac-address"; diff --git a/target/linux/qualcommax/dts/ipq8074-nbg7815.dts b/target/linux/qualcommax/dts/ipq8074-nbg7815.dts index 756008c65b..18dcdd4ba1 100644 --- a/target/linux/qualcommax/dts/ipq8074-nbg7815.dts +++ b/target/linux/qualcommax/dts/ipq8074-nbg7815.dts @@ -375,6 +375,7 @@ label = "10g"; phy-handle = <&aqr113c>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; nvmem-cells = <&macaddr_lan 0>; nvmem-cell-names = "mac-address"; diff --git a/target/linux/qualcommax/dts/ipq8074-rax120v2.dts b/target/linux/qualcommax/dts/ipq8074-rax120v2.dts index e0fe985bda..4c5b41cedb 100644 --- a/target/linux/qualcommax/dts/ipq8074-rax120v2.dts +++ b/target/linux/qualcommax/dts/ipq8074-rax120v2.dts @@ -271,6 +271,7 @@ label = "lan5"; phy-handle = <&aqr111b0>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; nvmem-cells = <&macaddr_lan>; nvmem-cell-names = "mac-address"; diff --git a/target/linux/qualcommax/dts/ipq8074-rt-ax89x.dts b/target/linux/qualcommax/dts/ipq8074-rt-ax89x.dts index 66b88a4749..783ea0b37b 100644 --- a/target/linux/qualcommax/dts/ipq8074-rt-ax89x.dts +++ b/target/linux/qualcommax/dts/ipq8074-rt-ax89x.dts @@ -730,6 +730,7 @@ label = "10g-copper"; phy-handle = <&aqr113c>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; nvmem-cells = <&macaddr_ubootenv_ethaddr>; nvmem-cell-names = "mac-address"; diff --git a/target/linux/qualcommax/dts/ipq8074-wxr-5950ax12.dts b/target/linux/qualcommax/dts/ipq8074-wxr-5950ax12.dts index 8800a9dbcc..51b749e621 100644 --- a/target/linux/qualcommax/dts/ipq8074-wxr-5950ax12.dts +++ b/target/linux/qualcommax/dts/ipq8074-wxr-5950ax12.dts @@ -312,6 +312,7 @@ label = "wan"; phy-handle = <&aqr113c_1>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy1 0>; nvmem-cells = <&macaddr_appsblenv_ethaddr>; nvmem-cell-names = "mac-address"; @@ -322,6 +323,7 @@ label = "lan1"; phy-handle = <&aqr113c_2>; phy-mode = "usxgmii"; + managed = "in-band-status"; pcs-handle = <&uniphy2 0>; nvmem-cells = <&macaddr_appsblenv_ethaddr>; nvmem-cell-names = "mac-address";