From a78c16b94da92a07da4f0e14c95f73caf76b1c40 Mon Sep 17 00:00:00 2001 From: Revanth Kumar Uppala Date: Tue, 20 Sep 2022 12:33:12 +0530 Subject: [PATCH] NVIDIA: SAUCE: net: phy: aqr113c: Read WOL status register. BugLink: https://bugs.launchpad.net/bugs/2072591 Issue: In case of WOL disable, WOL status is being shown as 'g' instead of 'd'. Fix: Read proper WOL status register to set status of WOL in ethtool output. http://nvbugs/3789538 Signed-off-by: Revanth Kumar Uppala Tested-by: Abhilash G Reviewed-by: Abhilash G Reviewed-by: Laxman Dewangan Signed-off-by: Laxman Dewangan Acked-by: Jacob Martin Acked-by: Noah Wager Signed-off-by: Noah Wager --- drivers/net/phy/aquantia/aquantia_main.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aquantia/aquantia_main.c index 24047d7f05de..3c8f9c48de72 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -45,6 +45,8 @@ #define MDIO_PHYXS_VEND_IF_STATUS_TYPE_OCSGMII 10 #define MDIO_PHYXS_VEND_IF_STATUS_TX_READY BIT(12) +#define MDIO_AN_RSVD_VEND_STATUS3 0xc812 + #define MDIO_AN_VEND_PROV 0xc400 #define MDIO_AN_VEND_PROV_1000BASET_FULL BIT(15) #define MDIO_AN_VEND_PROV_1000BASET_HALF BIT(14) @@ -1172,13 +1174,13 @@ static void aqr113c_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *w { u16 val; - val = phy_read_mmd(phydev, MDIO_MMD_C22EXT, MDIO_C22EXT_GBE_PHY_RSI1_CTRL7); + val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_RSVD_VEND_STATUS3); if (val < 0) return; + wol->supported = WAKE_MAGIC; if (val & 0x1) { wol->wolopts = WAKE_MAGIC; - wol->supported = WAKE_MAGIC; } }