]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
net: phy: qcom: at803x: Use the correct bit to disable extended next page
authorMaxime Chevallier <maxime.chevallier@bootlin.com>
Fri, 10 Apr 2026 17:10:20 +0000 (19:10 +0200)
committerJakub Kicinski <kuba@kernel.org>
Mon, 13 Apr 2026 21:36:22 +0000 (14:36 -0700)
As noted in the blamed commit, the AR8035 and other PHYs from this
family advertise the Extended Next Page support by default, which may be
understood by some partners as this PHY being multi-gig capable.

The fix is to disable XNP advertising, which is done by setting bit 12
of the Auto-Negotiation Advertisement Register (MII_ADVERTISE).

The blamed commit incorrectly uses MDIO_AN_CTRL1_XNP, which is bit 13 as per
802.3 : 45.2.7.1 AN control register (Register 7.0)

BIT 12 in MII_ADVERTISE is wrapped by ADVERTISE_RESV, used by some
drivers such as the aquantia one. 802.3 Clause 28 defines bit 12 as
Extended Next Page ability, at least in recent versions of the standard.

Let's add a define for it and use it in the at803x driver.

Fixes: 3c51fa5d2afe ("net: phy: ar803x: disable extended next page bit")
Signed-off-by: Maxime Chevallier <maxime.chevallier@bootlin.com>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Link: https://patch.msgid.link/20260410171021.1277138-1-maxime.chevallier@bootlin.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/phy/qcom/at803x.c
include/uapi/linux/mii.h

index 2995b08bac9632b47c333c11de69a022196ccbff..63726cf98cd423bf24d00bec9ecb6c0ea0d8bae5 100644 (file)
@@ -524,7 +524,7 @@ static int at803x_config_init(struct phy_device *phydev)
         * behaviour but we still need to accommodate it. XNP is only needed
         * for 10Gbps support, so disable XNP.
         */
-       return phy_modify(phydev, MII_ADVERTISE, MDIO_AN_CTRL1_XNP, 0);
+       return phy_modify(phydev, MII_ADVERTISE, ADVERTISE_XNP, 0);
 }
 
 static void at803x_link_change_notify(struct phy_device *phydev)
index 39f7c44baf5350714f338b333867ceacaf7a916e..61d6edad4b94af86eedcbf4f9a51b57fd41768e4 100644 (file)
@@ -82,7 +82,8 @@
 #define ADVERTISE_100BASE4     0x0200  /* Try for 100mbps 4k packets  */
 #define ADVERTISE_PAUSE_CAP    0x0400  /* Try for pause               */
 #define ADVERTISE_PAUSE_ASYM   0x0800  /* Try for asymetric pause     */
-#define ADVERTISE_RESV         0x1000  /* Unused...                   */
+#define ADVERTISE_XNP          0x1000  /* Extended Next Page */
+#define ADVERTISE_RESV         ADVERTISE_XNP /* Used to be reserved */
 #define ADVERTISE_RFAULT       0x2000  /* Say we can detect faults    */
 #define ADVERTISE_LPACK                0x4000  /* Ack link partners response  */
 #define ADVERTISE_NPAGE                0x8000  /* Next page bit               */