From: Russell King <rmk+kernel@armlinux.org.uk>
To: Andrew Lunn <andrew@lunn.ch>,
Florian Fainelli <f.fainelli@gmail.com>,
Heiner Kallweit <hkallweit1@gmail.com>
Cc: "David S. Miller" <davem@davemloft.net>, netdev@vger.kernel.org
Subject: [PATCH net-next 08/11] net: phy: marvell: consolidate phy status reading
Date: Tue, 17 Dec 2019 13:39:36 +0000 [thread overview]
Message-ID: <E1ihD4a-0001zB-Rw@rmk-PC.armlinux.org.uk> (raw)
In-Reply-To: <20191217133827.GQ25745@shell.armlinux.org.uk>
marvell_read_status_page_an() always reads the PHY status register, but
marvell_update_link() has already done this. Rather than wastefully
reading the register twice in quick succession, read it once in
marvell_read_status_page() and use the result for both.
This makes marvell_update_link() rather pointless, so move it into
marvell_read_status_page().
Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
---
drivers/net/phy/marvell.c | 60 +++++++++++----------------------------
1 file changed, 17 insertions(+), 43 deletions(-)
diff --git a/drivers/net/phy/marvell.c b/drivers/net/phy/marvell.c
index 4eabb6a26c33..b25eee9314a7 100644
--- a/drivers/net/phy/marvell.c
+++ b/drivers/net/phy/marvell.c
@@ -1183,47 +1183,12 @@ static void fiber_lpa_mod_linkmode_lpa_t(unsigned long *advertising, u32 lpa)
advertising, lpa & LPA_FIBER_1000FULL);
}
-/**
- * marvell_update_link - update link status in real time in @phydev
- * @phydev: target phy_device struct
- *
- * Description: Update the value in phydev->link to reflect the
- * current link value.
- */
-static int marvell_update_link(struct phy_device *phydev, int fiber)
-{
- int status;
-
- /* Use the generic register for copper link, or specific
- * register for fiber case
- */
- if (fiber) {
- status = phy_read(phydev, MII_M1011_PHY_STATUS);
- if (status < 0)
- return status;
-
- if (status & MII_M1011_PHY_STATUS_LINK)
- phydev->link = 1;
- else
- phydev->link = 0;
- } else {
- return genphy_update_link(phydev);
- }
-
- return 0;
-}
-
static int marvell_read_status_page_an(struct phy_device *phydev,
- int fiber)
+ int fiber, int status)
{
- int status;
int lpa;
int err;
- status = phy_read(phydev, MII_M1011_PHY_STATUS);
- if (status < 0)
- return status;
-
if (!fiber) {
err = genphy_read_lpa(phydev);
if (err < 0)
@@ -1284,27 +1249,36 @@ static int marvell_read_status_page_an(struct phy_device *phydev,
*/
static int marvell_read_status_page(struct phy_device *phydev, int page)
{
+ int status;
int fiber;
int err;
- /* Detect and update the link, but return if there
- * was an error
+ status = phy_read(phydev, MII_M1011_PHY_STATUS);
+ if (status < 0)
+ return status;
+
+ /* Use the generic register for copper link status,
+ * and the PHY status register for fiber link status.
*/
+ if (page == MII_MARVELL_FIBER_PAGE) {
+ phydev->link = !!(status & MII_M1011_PHY_STATUS_LINK);
+ } else {
+ err = genphy_update_link(phydev);
+ if (err)
+ return err;
+ }
+
if (page == MII_MARVELL_FIBER_PAGE)
fiber = 1;
else
fiber = 0;
- err = marvell_update_link(phydev, fiber);
- 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);
+ err = marvell_read_status_page_an(phydev, fiber, status);
else
err = genphy_read_status_fixed(phydev);
--
2.20.1
next prev parent reply other threads:[~2019-12-17 13:39 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-12-17 13:38 [PATCH net-next 00/11] phylib consolidation Russell King - ARM Linux admin
2019-12-17 13:39 ` [PATCH net-next 01/11] net: phy: remove redundant .aneg_done initialisers Russell King
2019-12-17 15:35 ` Andrew Lunn
2019-12-17 17:25 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 02/11] net: phy: use phy_resolve_aneg_pause() Russell King
2019-12-17 15:38 ` Andrew Lunn
2019-12-17 17:26 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 03/11] net: phy: add genphy_check_and_restart_aneg() Russell King
2019-12-17 15:41 ` Andrew Lunn
2019-12-17 17:27 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 04/11] net: phy: provide and use genphy_read_status_fixed() Russell King
2019-12-17 15:42 ` Andrew Lunn
2019-12-17 17:27 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 05/11] net: phy: marvell: rearrange to use genphy_read_lpa() Russell King
2019-12-17 15:44 ` Andrew Lunn
2019-12-17 17:30 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 06/11] net: phy: marvell: initialise link partner state earlier Russell King
2019-12-17 15:45 ` Andrew Lunn
2019-12-17 17:30 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 07/11] net: phy: marvell: use positive logic for link state Russell King
2019-12-17 15:46 ` Andrew Lunn
2019-12-17 17:31 ` Florian Fainelli
2019-12-17 13:39 ` Russell King [this message]
2019-12-17 13:39 ` [PATCH net-next 09/11] net: phy: marvell: use existing clause 37 definitions Russell King
2019-12-17 15:47 ` Andrew Lunn
2019-12-17 17:33 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 10/11] net: phy: marvell: use phy_modify_changed() Russell King
2019-12-17 15:48 ` Andrew Lunn
2019-12-17 17:35 ` Florian Fainelli
2019-12-17 13:39 ` [PATCH net-next 11/11] net: phy: marvell: use genphy_check_and_restart_aneg() Russell King
2019-12-17 15:48 ` Andrew Lunn
2019-12-17 17:36 ` Florian Fainelli
2019-12-19 20:52 ` [PATCH net-next 00/11] phylib consolidation David Miller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1ihD4a-0001zB-Rw@rmk-PC.armlinux.org.uk \
--to=rmk+kernel@armlinux.org.uk \
--cc=andrew@lunn.ch \
--cc=davem@davemloft.net \
--cc=f.fainelli@gmail.com \
--cc=hkallweit1@gmail.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.