From: Russell King <rmk+kernel@armlinux.org.uk>
Date: Tue, 17 Dec 2019 13:39:26 +0000
Subject: net: phy: marvell: initialise link partner state earlier
Patch-mainline: v5.6-rc1
Git-commit: 98f92831c561e43e8d4dafa7165e996af4dc8ac3
References: bsc#1176447
Move the initialisation of the link partner state earlier, inside
marvell_read_status_page(), so we don't have the same initialisation
scattered amongst the other files. This is in a similar place to
the genphy implementation, so would result in the same behaviour if
a PHY read error occurs.
This allows us to get rid of marvell_read_status_page_fixed(), which
became a pointless wrapper around genphy_read_status_fixed().
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
Reviewed-by: Andrew Lunn <andrew@lunn.ch>
Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Acked-by: Thomas Bogendoerfer <tbogendoerfer@suse.de>
---
drivers/net/phy/marvell.c | 25 +++++--------------------
1 file changed, 5 insertions(+), 20 deletions(-)
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -1354,8 +1354,6 @@ static int marvell_read_status_page_an(s
if (err < 0)
return err;
- phydev->pause = 0;
- phydev->asym_pause = 0;
phy_resolve_aneg_pause(phydev);
} else {
lpa = phy_read(phydev, MII_LPA);
@@ -1365,8 +1363,6 @@ static int marvell_read_status_page_an(s
/* The fiber link is only 1000M capable */
fiber_lpa_mod_linkmode_lpa_t(phydev->lp_advertising, lpa);
- phydev->pause = 0;
- phydev->asym_pause = 0;
if (phydev->duplex == DUPLEX_FULL) {
if (!(lpa & LPA_PAUSE_FIBER)) {
phydev->pause = 0;
@@ -1403,21 +1399,6 @@ static int marvell_read_status_page_an(s
return 0;
}
-static int marvell_read_status_page_fixed(struct phy_device *phydev)
-{
- int err;
-
- err = genphy_read_status_fixed(phydev);
- if (err < 0)
- return err;
-
- phydev->pause = 0;
- phydev->asym_pause = 0;
- linkmode_zero(phydev->lp_advertising);
-
- return 0;
-}
-
/* marvell_read_status_page
*
* Description:
@@ -1443,10 +1424,14 @@ static int marvell_read_status_page(stru
if (err)
return err;
+ linkmode_zero(phydev->lp_advertising);
+ phydev->pause = 0;
+ phydev->asym_pause = 0;
+
if (phydev->autoneg == AUTONEG_ENABLE)
err = marvell_read_status_page_an(phydev, fiber);
else
- err = marvell_read_status_page_fixed(phydev);
+ err = genphy_read_status_fixed(phydev);
return err;
}