[PATCH net-next v4] net: phy: aquantia: Add support for 5GbaseR
From: Hongmei Xu <hidden>
Date: 2026-10-30 07:51:53
Also in:
lkml
Subsystem:
ethernet phy library, networking drivers, the rest · Maintainers:
Andrew Lunn, Heiner Kallweit, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
Aquantia PHYs can operate with a 5G USX interface between the PHY and MAC, reported as interface type 12 in the PHYXS vendor interface status register (MDIO_PHYXS_VEND_IF_STATUS_TYPE_USX_5G). Without this change, aqr_gen1_read_status() falls through to the default case and sets phydev->link = false when the interface type is USX 5G, preventing 5G links from coming up. Add the missing PHY_INTERFACE_MODE_5GBASER handling in three places: - aqr_gen1_read_status(): map USX 5G interface type to PHY_INTERFACE_MODE_5GBASER so the link is correctly reported - aqr_gen1_config_init(): accept PHY_INTERFACE_MODE_5GBASER as a valid interface mode, otherwise the PHY is rejected with -ENODEV - aqr_gen2_get_rate_matching(): return RATE_MATCH_PAUSE for PHY_INTERFACE_MODE_5GBASER, consistent with 10GBASER and 2500BASEX, since the MAC-side interface runs at a fixed rate and the PHY handles rate adaptation via pause frames Co-developed-by: Sagar Cheluvegowda <redacted> Signed-off-by: Sagar Cheluvegowda <redacted> Signed-off-by: Hongmei Xu <redacted> --- Changes in v4: - Keep interface modes sorted by speed in aqr_gen1_config_init() - Keep rate matching conditions sorted by speed (10G, 5G, 2.5G) - Link to v3: https://patch.msgid.link/20261029-aquantia-support-5gbaser-v3-1-f1f9346553d0@oss.qualcomm.com (local) Changes in v3: - Add git tree name net-next to the subject line. [PATCH net-next] - Add Co-developer - Link to v2: https://patch.msgid.link/20260923-aquantia-support-5gbaser-v2-1-4d789dc21418@oss.qualcomm.com (local) Changes in v2: - Fix the local variable assignment error in API: aqr_gen1_read_status, should use interface rather than phydev->interface, interface = PHY_INTERFACE_MODE_5GBASER. - Link to v1: https://patch.msgid.link/20260923-aquantia-support-5gbaser-v1-1-537d39bb8c35@oss.qualcomm.com (local) --- drivers/net/phy/aquantia/aquantia_main.c | 6 ++++++ 1 file changed, 6 insertions(+)
diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aquantia/aquantia_main.c
index e95d391a6dc2..dffc81b9eb52 100644
--- a/drivers/net/phy/aquantia/aquantia_main.c
+++ b/drivers/net/phy/aquantia/aquantia_main.c@@ -49,6 +49,7 @@ #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_RXAUI 7 #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_OFF 9 #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_OCSGMII 10 +#define MDIO_PHYXS_VEND_IF_STATUS_TYPE_USX_5G 12 #define MDIO_AN_VEND_PROV 0xc400 #define MDIO_AN_VEND_PROV_1000BASET_FULL BIT(15)
@@ -582,6 +583,9 @@ static int aqr_gen1_read_status(struct phy_device *phydev) case MDIO_PHYXS_VEND_IF_STATUS_TYPE_RXAUI: interface = PHY_INTERFACE_MODE_RXAUI; break; + case MDIO_PHYXS_VEND_IF_STATUS_TYPE_USX_5G: + interface = PHY_INTERFACE_MODE_5GBASER; + break; case MDIO_PHYXS_VEND_IF_STATUS_TYPE_OCSGMII: interface = PHY_INTERFACE_MODE_2500BASEX; break;
@@ -782,6 +786,7 @@ static int aqr_gen1_config_init(struct phy_device *phydev) phydev->interface != PHY_INTERFACE_MODE_2500BASEX && phydev->interface != PHY_INTERFACE_MODE_XGMII && phydev->interface != PHY_INTERFACE_MODE_USXGMII && + phydev->interface != PHY_INTERFACE_MODE_5GBASER && phydev->interface != PHY_INTERFACE_MODE_10G_QXGMII && phydev->interface != PHY_INTERFACE_MODE_10GKR && phydev->interface != PHY_INTERFACE_MODE_10GBASER &&
@@ -1040,6 +1045,7 @@ static int aqr_gen2_get_rate_matching(struct phy_device *phydev, phy_interface_t iface) { if (iface == PHY_INTERFACE_MODE_10GBASER || + iface == PHY_INTERFACE_MODE_5GBASER || iface == PHY_INTERFACE_MODE_2500BASEX) return RATE_MATCH_PAUSE; return RATE_MATCH_NONE;
--- base-commit: 944ae66642b726bd6b25ae71b1e9ff88a0e0bdb0 change-id: 20260923-aquantia-support-5gbaser-e7271bde9f89 Best regards, -- Hongmei Xu [off-list ref]