All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration
@ 2019-02-18 20:18 Heiner Kallweit
  2019-02-18 20:26 ` [PATCH net-next 1/4] net: phy: export genphy_config_eee_advert Heiner Kallweit
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: Heiner Kallweit @ 2019-02-18 20:18 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, David Miller; +Cc: netdev

Improve generic clause 45 aneg configuration.

Heiner Kallweit (4):
  net: phy: export genphy_config_eee_advert
  net: phy: use genphy_config_eee_advert in genphy_c45_an_config_aneg
  net: phy: add genphy_c45_check_and_restart_aneg
  net: phy: marvell10g: use genphy_c45_check_and_restart_aneg in
    mv3310_config_aneg

 drivers/net/phy/marvell10g.c | 15 +--------------
 drivers/net/phy/phy-c45.c    | 34 +++++++++++++++++++++++++++++++++-
 drivers/net/phy/phy_device.c |  3 ++-
 include/linux/phy.h          |  2 ++
 4 files changed, 38 insertions(+), 16 deletions(-)

-- 
2.20.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH net-next 1/4] net: phy: export genphy_config_eee_advert
  2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
@ 2019-02-18 20:26 ` Heiner Kallweit
  2019-02-18 20:27 ` [PATCH net-next 2/4] net: phy: use genphy_config_eee_advert in genphy_c45_an_config_aneg Heiner Kallweit
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2019-02-18 20:26 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, David Miller, Russell King - ARM Linux
  Cc: netdev

We want to use this function in phy-c45.c too, therefore export it.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/phy_device.c | 3 ++-
 include/linux/phy.h          | 1 +
 2 files changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 4bb3b6c28..49fdd1ee7 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1575,7 +1575,7 @@ static int genphy_config_advert(struct phy_device *phydev)
  *   efficent ethernet modes. Returns 0 if the PHY's advertisement hasn't
  *   changed, and 1 if it has changed.
  */
-static int genphy_config_eee_advert(struct phy_device *phydev)
+int genphy_config_eee_advert(struct phy_device *phydev)
 {
 	int err;
 
@@ -1588,6 +1588,7 @@ static int genphy_config_eee_advert(struct phy_device *phydev)
 	/* If the call failed, we assume that EEE is not supported */
 	return err < 0 ? 0 : err;
 }
+EXPORT_SYMBOL(genphy_config_eee_advert);
 
 /**
  * genphy_setup_forced - configures/forces speed/duplex from @phydev
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 3db507e68..761131de4 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -1077,6 +1077,7 @@ void phy_attached_info(struct phy_device *phydev);
 int genphy_config_init(struct phy_device *phydev);
 int genphy_setup_forced(struct phy_device *phydev);
 int genphy_restart_aneg(struct phy_device *phydev);
+int genphy_config_eee_advert(struct phy_device *phydev);
 int genphy_config_aneg(struct phy_device *phydev);
 int genphy_aneg_done(struct phy_device *phydev);
 int genphy_update_link(struct phy_device *phydev);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next 2/4] net: phy: use genphy_config_eee_advert in genphy_c45_an_config_aneg
  2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
  2019-02-18 20:26 ` [PATCH net-next 1/4] net: phy: export genphy_config_eee_advert Heiner Kallweit
@ 2019-02-18 20:27 ` Heiner Kallweit
  2019-02-18 20:27 ` [PATCH net-next 3/4] net: phy: add genphy_c45_check_and_restart_aneg Heiner Kallweit
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2019-02-18 20:27 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, David Miller, Russell King - ARM Linux
  Cc: netdev

Like in genphy_config_aneg() for clause 22 PHY's, we should keep modes
from being advertised that are known to be broken with EEE.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/phy-c45.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c
index 16636d49b..2f5721430 100644
--- a/drivers/net/phy/phy-c45.c
+++ b/drivers/net/phy/phy-c45.c
@@ -89,12 +89,14 @@ EXPORT_SYMBOL_GPL(genphy_c45_pma_setup_forced);
  */
 int genphy_c45_an_config_aneg(struct phy_device *phydev)
 {
-	int changed = 0, ret;
+	int changed, ret;
 	u32 adv;
 
 	linkmode_and(phydev->advertising, phydev->advertising,
 		     phydev->supported);
 
+	changed = genphy_config_eee_advert(phydev);
+
 	adv = linkmode_adv_to_mii_adv_t(phydev->advertising);
 
 	ret = phy_modify_mmd(phydev, MDIO_MMD_AN, MDIO_AN_ADVERTISE,
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next 3/4] net: phy: add genphy_c45_check_and_restart_aneg
  2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
  2019-02-18 20:26 ` [PATCH net-next 1/4] net: phy: export genphy_config_eee_advert Heiner Kallweit
  2019-02-18 20:27 ` [PATCH net-next 2/4] net: phy: use genphy_config_eee_advert in genphy_c45_an_config_aneg Heiner Kallweit
@ 2019-02-18 20:27 ` Heiner Kallweit
  2019-02-18 20:27 ` [PATCH net-next 4/4] net: phy: marvell10g: use genphy_c45_check_and_restart_aneg in mv3310_config_aneg Heiner Kallweit
  2019-02-21 21:03 ` [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2019-02-18 20:27 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, David Miller, Russell King - ARM Linux
  Cc: netdev

This function will be used by config_aneg callback implementations of
PHY drivers and allows to reduce boilerplate code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/phy-c45.c | 30 ++++++++++++++++++++++++++++++
 include/linux/phy.h       |  1 +
 2 files changed, 31 insertions(+)

diff --git a/drivers/net/phy/phy-c45.c b/drivers/net/phy/phy-c45.c
index 2f5721430..fc3173cc0 100644
--- a/drivers/net/phy/phy-c45.c
+++ b/drivers/net/phy/phy-c45.c
@@ -156,6 +156,36 @@ int genphy_c45_restart_aneg(struct phy_device *phydev)
 }
 EXPORT_SYMBOL_GPL(genphy_c45_restart_aneg);
 
+/**
+ * genphy_c45_check_and_restart_aneg - Enable and restart auto-negotiation
+ * @phydev: target phy_device struct
+ * @restart: whether aneg restart is requested
+ *
+ * This assumes that the auto-negotiation MMD is present.
+ *
+ * Check, and restart auto-negotiation if needed.
+ */
+int genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart)
+{
+	int ret = 0;
+
+	if (!restart) {
+		/* Configure and restart aneg if it wasn't set before */
+		ret = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1);
+		if (ret < 0)
+			return ret;
+
+		if (!(ret & MDIO_AN_CTRL1_ENABLE))
+			restart = true;
+	}
+
+	if (restart)
+		ret = genphy_c45_restart_aneg(phydev);
+
+	return ret;
+}
+EXPORT_SYMBOL_GPL(genphy_c45_check_and_restart_aneg);
+
 /**
  * genphy_c45_aneg_done - return auto-negotiation complete status
  * @phydev: target phy_device struct
diff --git a/include/linux/phy.h b/include/linux/phy.h
index 761131de4..8e9fc5764 100644
--- a/include/linux/phy.h
+++ b/include/linux/phy.h
@@ -1097,6 +1097,7 @@ int genphy_write_mmd_unsupported(struct phy_device *phdev, int devnum,
 
 /* Clause 45 PHY */
 int genphy_c45_restart_aneg(struct phy_device *phydev);
+int genphy_c45_check_and_restart_aneg(struct phy_device *phydev, bool restart);
 int genphy_c45_aneg_done(struct phy_device *phydev);
 int genphy_c45_read_link(struct phy_device *phydev);
 int genphy_c45_read_lpa(struct phy_device *phydev);
-- 
2.20.1




^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH net-next 4/4] net: phy: marvell10g: use genphy_c45_check_and_restart_aneg in mv3310_config_aneg
  2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
                   ` (2 preceding siblings ...)
  2019-02-18 20:27 ` [PATCH net-next 3/4] net: phy: add genphy_c45_check_and_restart_aneg Heiner Kallweit
@ 2019-02-18 20:27 ` Heiner Kallweit
  2019-02-21 21:03 ` [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: Heiner Kallweit @ 2019-02-18 20:27 UTC (permalink / raw)
  To: Andrew Lunn, Florian Fainelli, David Miller, Russell King - ARM Linux
  Cc: netdev

Use new function genphy_c45_check_and_restart_aneg() to reduce
boilerplate code.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
---
 drivers/net/phy/marvell10g.c | 15 +--------------
 1 file changed, 1 insertion(+), 14 deletions(-)

diff --git a/drivers/net/phy/marvell10g.c b/drivers/net/phy/marvell10g.c
index 67066127b..8cbf35964 100644
--- a/drivers/net/phy/marvell10g.c
+++ b/drivers/net/phy/marvell10g.c
@@ -291,20 +291,7 @@ static int mv3310_config_aneg(struct phy_device *phydev)
 	if (ret > 0)
 		changed = true;
 
-	if (!changed) {
-		/* Configure and restart aneg if it wasn't set before */
-		ret = phy_read_mmd(phydev, MDIO_MMD_AN, MDIO_CTRL1);
-		if (ret < 0)
-			return ret;
-
-		if (!(ret & MDIO_AN_CTRL1_ENABLE))
-			changed = 1;
-	}
-
-	if (changed)
-		ret = genphy_c45_restart_aneg(phydev);
-
-	return ret;
+	return genphy_c45_check_and_restart_aneg(phydev, changed);
 }
 
 static int mv3310_aneg_done(struct phy_device *phydev)
-- 
2.20.1



^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration
  2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
                   ` (3 preceding siblings ...)
  2019-02-18 20:27 ` [PATCH net-next 4/4] net: phy: marvell10g: use genphy_c45_check_and_restart_aneg in mv3310_config_aneg Heiner Kallweit
@ 2019-02-21 21:03 ` David Miller
  4 siblings, 0 replies; 6+ messages in thread
From: David Miller @ 2019-02-21 21:03 UTC (permalink / raw)
  To: hkallweit1; +Cc: andrew, f.fainelli, netdev

From: Heiner Kallweit <hkallweit1@gmail.com>
Date: Mon, 18 Feb 2019 21:18:35 +0100

> Improve generic clause 45 aneg configuration.

Series applied, thank you.

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-02-21 21:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-02-18 20:18 [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration Heiner Kallweit
2019-02-18 20:26 ` [PATCH net-next 1/4] net: phy: export genphy_config_eee_advert Heiner Kallweit
2019-02-18 20:27 ` [PATCH net-next 2/4] net: phy: use genphy_config_eee_advert in genphy_c45_an_config_aneg Heiner Kallweit
2019-02-18 20:27 ` [PATCH net-next 3/4] net: phy: add genphy_c45_check_and_restart_aneg Heiner Kallweit
2019-02-18 20:27 ` [PATCH net-next 4/4] net: phy: marvell10g: use genphy_c45_check_and_restart_aneg in mv3310_config_aneg Heiner Kallweit
2019-02-21 21:03 ` [PATCH net-next 0/4] net: phy: improve generic clause 45 aneg configuration David Miller

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.