FAILED: patch "[PATCH] net: phy: aquantia: fix system interface type not updated in" failed to apply to 5.10-stable tree
Subsystems (3)
[email protected]
maintainerThe patch below does not apply to the 5.10-stable tree.
If someone wants it applied there, or to any other stable or longterm tree, then please email the backport, including the original git commit id to <[email protected]>.
To reproduce the conflict and resubmit, you may use the following commands:
git fetch https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/ linux-5.10.y
git checkout FETCH_HEAD
git cherry-pick -x 6e0022b5ae3dc5b833af0fcc1578dc20a1d6bc71
# <resolve conflicts, build, test, etc.>
git commit -s
git send-email --to '<[email protected]>' --in-reply-to '2026100348-tanned-afloat-e007@gregkh' --subject-prefix 'PATCH 5.10.y' 'HEAD^..'
Possible dependencies:
thanks,
greg k-h
------------------ original commit in Linus's tree ------------------
From 6e0022b5ae3dc5b833af0fcc1578dc20a1d6bc71 Mon Sep 17 00:00:00 2001
From: Bartosz Golaszewski <[email protected]>
Date: Wed, 23 Sep 2026 17:14:35 +0200
Subject: [PATCH] net: phy: aquantia: fix system interface type not updated in
forced mode
aqr_gen1_read_status() decodes the MDIO_PHYXS_VEND_IF_STATUS register to determine which SerDes interface the PHY is currently using on its system side and stores the result in phydev->interface. phylink relies on this value to configure the MAC.
The autoneg == AUTONEG_DISABLE check is not correct:MDIO_PHYXS_VEND_IF_STATUS is set by the PHY firmware based on the negotiated link speed, not based on whether autoneg was used to reach it. When the link comes up at 1G in forced mode, the register correctly reads SGMII, but the early return prevents phydev->interface from being updated. It stays at whatever value it held before (typically 2500BASE-X from the initial autoneg run), so phylink configures the MAC for the wrong interface and the link cannot come up.
Remove the autoneg guard so that the system interface type is always decoded when the link is up.
drivers/net/phy/aquantia/aquantia_main.c +4 -1
@@ -544,7 +544,7 @@ static int aqr_gen1_read_status(struct phy_device *phydev)if (ret)return ret; -if (!phydev->link || phydev->autoneg ==AUTONEG_DISABLE ) +if (!phydev->link)return 0 ;/* The status register is not immediately correct on line side link up.
@@ -594,6 +594,9 @@ static int aqr_gen1_read_status(struct phy_device *phydev) phydev->interface =aqr_translate_interface (phydev, interface); +if (phydev->autoneg ==AUTONEG_DISABLE ) +return 0 ; +/* Read rate from vendor register */ return aqr_gen1_read_rate (phydev); }
Sasha Levin
maintainerPATCH 1/1 net: phy: aquantia: fix system interface type not updated in forced mode
From: Bartosz Golaszewski <[email protected]>
[ Upstream commit 6e0022b5ae3dc5b833af0fcc1578dc20a1d6bc71 ]
aqr_gen1_read_status() decodes the MDIO_PHYXS_VEND_IF_STATUS register to determine which SerDes interface the PHY is currently using on its system side and stores the result in phydev->interface. phylink relies on this value to configure the MAC.
The autoneg == AUTONEG_DISABLE check is not correct:MDIO_PHYXS_VEND_IF_STATUS is set by the PHY firmware based on the negotiated link speed, not based on whether autoneg was used to reach it. When the link comes up at 1G in forced mode, the register correctly reads SGMII, but the early return prevents phydev->interface from being updated. It stays at whatever value it held before (typically 2500BASE-X from the initial autoneg run), so phylink configures the MAC for the wrong interface and the link cannot come up.
Remove the autoneg guard so that the system interface type is always decoded when the link is up.
--- drivers/net/phy/aquantia_main.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-)
drivers/net/phy/aquantia_main.c +4 -1
@@ -360,7 +360,7 @@ static int aqr107_read_status(struct phy_device *phydev)if (ret)return ret; -if (!phydev->link || phydev->autoneg ==AUTONEG_DISABLE ) +if (!phydev->link)return 0 ; val =phy_read_mmd (phydev,MDIO_MMD_PHYXS ,MDIO_PHYXS_VEND_IF_STATUS );
@@ -388,6 +388,9 @@ static int aqr107_read_status(struct phy_device *phydev)break ; } +if (phydev->autoneg ==AUTONEG_DISABLE ) +return 0 ; +/* Read possibly downshifted rate from vendor register */ return aqr107_read_rate (phydev); }
Signature · 1 line
2.53.0