From f0fbb4928b8ee4492b7c19d5754c6c849d671e06 Mon Sep 17 00:00:00 2001 From: Revanth Kumar Uppala Date: Wed, 12 Oct 2022 12:04:24 +0530 Subject: [PATCH] NVIDIA: SAUCE: net: phy: aqr113c: Handling Duplicate WOL setting BugLink: https://bugs.launchpad.net/bugs/2072591 Return Success on Duplicate WOL setting 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 | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/drivers/net/phy/aquantia/aquantia_main.c b/drivers/net/phy/aquantia/aquantia_main.c index 3c8f9c48de72..05561afcec61 100644 --- a/drivers/net/phy/aquantia/aquantia_main.c +++ b/drivers/net/phy/aquantia/aquantia_main.c @@ -1144,7 +1144,7 @@ static int aqr113c_wol_settings(struct phy_device *phydev, bool enable) /* restart auto-negotiation */ genphy_c45_restart_aneg(phydev); - priv->wol_status = 1; + priv->wol_status = WAKE_MAGIC; } else { /* Disable the WoL enable bit */ val = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_AN_RSVD_VEND_PROV1); @@ -1186,6 +1186,12 @@ static void aqr113c_get_wol(struct phy_device *phydev, struct ethtool_wolinfo *w static int aqr113c_set_wol(struct phy_device *phydev, struct ethtool_wolinfo *wol) { + struct aqr107_priv *priv = phydev->priv; + + /* Return success if WOL is already set. Don't entertain duplicate setting of WOL */ + if (!(priv->wol_status ^ wol->wolopts)) + return 0; + if (wol->wolopts & WAKE_MAGIC) return aqr113c_wol_settings(phydev, true); else