linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [PATCH net v4 0/3]  Fix PHY handle no longer parsing
@ 2023-03-30  8:39 Michael Sit Wei Hong
  2023-03-30  8:39 ` [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
                   ` (2 more replies)
  0 siblings, 3 replies; 5+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-30  8:39 UTC (permalink / raw)
  To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
	linux-arm-kernel, linux-kernel, linux, hkallweit1, andrew
  Cc: Looi Hong Aun, Voon Weifeng, Lai Peter Jun Ann

After the fixed link support was introduced, it is observed that PHY
no longer attach to the MAC properly. So we introduce a helper
function to determine if the MAC should expect to connect to a PHY
and proceed accordingly.

Michael Sit Wei Hong (3):
  net: phylink: add phylink_expects_phy() method
  net: stmmac: check if MAC needs to attach to a PHY
  net: stmmac: remove redundant fixup to support fixed-link mode

 .../net/ethernet/stmicro/stmmac/dwmac-intel.c   |  1 -
 .../net/ethernet/stmicro/stmmac/stmmac_main.c   |  4 +++-
 drivers/net/phy/phylink.c                       | 17 +++++++++++++++++
 include/linux/phylink.h                         |  1 +
 4 files changed, 21 insertions(+), 2 deletions(-)

v2: Initialize fwnode before using the variable
v3: Introduced phylink_expects_phy() method as suggested by Russell King
    remove xpcs_an_inband fixup instead of moving the fixed-link check
    as suggested by Andrew Lunn
v4: Modify phylink_expects_phy() to check for more complete set of
    conditions when no PHY is needed and return false if met.
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method
  2023-03-30  8:39 [PATCH net v4 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
@ 2023-03-30  8:39 ` Michael Sit Wei Hong
  2023-03-30  8:48   ` Russell King (Oracle)
  2023-03-30  8:39 ` [PATCH net v4 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
  2023-03-30  8:40 ` [PATCH net v4 3/3] net: stmmac: remove redundant fixup to support fixed-link mode Michael Sit Wei Hong
  2 siblings, 1 reply; 5+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-30  8:39 UTC (permalink / raw)
  To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
	linux-arm-kernel, linux-kernel, linux, hkallweit1, andrew
  Cc: Looi Hong Aun, Voon Weifeng, Lai Peter Jun Ann

Provide phylink_expects_phy() to allow MAC drivers to check if it
is expecting a PHY to attach to. Since fixed-linked setups do not
need to attach to a PHY.

Provides a boolean value as to if the MAC should expect a PHY.
returns true if a PHY is expected.

Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com>
---
 drivers/net/phy/phylink.c | 17 +++++++++++++++++
 include/linux/phylink.h   |  1 +
 2 files changed, 18 insertions(+)

diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 1a2f074685fa..4c080656e280 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -1586,6 +1586,23 @@ void phylink_destroy(struct phylink *pl)
 }
 EXPORT_SYMBOL_GPL(phylink_destroy);
 
+/**
+ * phylink_expects_phy() - Determine if phylink expects a phy to be attached
+ * @pl: a pointer to a &struct phylink returned from phylink_create()
+ *
+ * Fixed-link mode does not need a PHY, returns a boolean value to check if
+ * phylink will be expecting a PHY to attach.
+ */
+bool phylink_expects_phy(struct phylink *pl)
+{
+	if (pl->cfg_link_an_mode == MLO_AN_FIXED ||
+	    (pl->cfg_link_an_mode == MLO_AN_INBAND &&
+	     phy_interface_mode_is_8023z(pl->link_config.interface)))
+		return false;
+	return true;
+}
+EXPORT_SYMBOL_GPL(phylink_expects_phy);
+
 static void phylink_phy_change(struct phy_device *phydev, bool up)
 {
 	struct phylink *pl = phydev->phylink;
diff --git a/include/linux/phylink.h b/include/linux/phylink.h
index c492c26202b5..637698ed5cb6 100644
--- a/include/linux/phylink.h
+++ b/include/linux/phylink.h
@@ -574,6 +574,7 @@ struct phylink *phylink_create(struct phylink_config *, struct fwnode_handle *,
 			       phy_interface_t iface,
 			       const struct phylink_mac_ops *mac_ops);
 void phylink_destroy(struct phylink *);
+bool phylink_expects_phy(struct phylink *pl);
 
 int phylink_connect_phy(struct phylink *, struct phy_device *);
 int phylink_of_phy_connect(struct phylink *, struct device_node *, u32 flags);
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH net v4 2/3] net: stmmac: check if MAC needs to attach to a PHY
  2023-03-30  8:39 [PATCH net v4 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
  2023-03-30  8:39 ` [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
@ 2023-03-30  8:39 ` Michael Sit Wei Hong
  2023-03-30  8:40 ` [PATCH net v4 3/3] net: stmmac: remove redundant fixup to support fixed-link mode Michael Sit Wei Hong
  2 siblings, 0 replies; 5+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-30  8:39 UTC (permalink / raw)
  To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
	linux-arm-kernel, linux-kernel, linux, hkallweit1, andrew
  Cc: Looi Hong Aun, Voon Weifeng, Lai Peter Jun Ann

After the introduction of the fixed-link support, the MAC driver
no longer attempt to scan for a PHY to attach to. This causes the
non fixed-link setups to stop working.

Using the phylink_expects_phy() to check and determine if the MAC
should expect and attach a PHY.

Fixes: ab21cf920928 ("net: stmmac: make mdio register skips PHY scanning for fixed-link")
Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com>
Signed-off-by: Lai Peter Jun Ann <peter.jun.ann.lai@intel.com>
---
 drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
index 8f543c3ab5c5..41f0f3b74933 100644
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -1135,6 +1135,7 @@ static int stmmac_init_phy(struct net_device *dev)
 {
 	struct stmmac_priv *priv = netdev_priv(dev);
 	struct fwnode_handle *fwnode;
+	bool phy_needed;
 	int ret;
 
 	fwnode = of_fwnode_handle(priv->plat->phylink_node);
@@ -1144,10 +1145,11 @@ static int stmmac_init_phy(struct net_device *dev)
 	if (fwnode)
 		ret = phylink_fwnode_phy_connect(priv->phylink, fwnode, 0);
 
+	phy_needed = phylink_expects_phy(priv->phylink);
 	/* Some DT bindings do not set-up the PHY handle. Let's try to
 	 * manually parse it
 	 */
-	if (!fwnode || ret) {
+	if (!fwnode || phy_needed || ret) {
 		int addr = priv->plat->phy_addr;
 		struct phy_device *phydev;
 
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* [PATCH net v4 3/3] net: stmmac: remove redundant fixup to support fixed-link mode
  2023-03-30  8:39 [PATCH net v4 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
  2023-03-30  8:39 ` [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
  2023-03-30  8:39 ` [PATCH net v4 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
@ 2023-03-30  8:40 ` Michael Sit Wei Hong
  2 siblings, 0 replies; 5+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-30  8:40 UTC (permalink / raw)
  To: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
	linux-arm-kernel, linux-kernel, linux, hkallweit1, andrew
  Cc: Looi Hong Aun, Voon Weifeng, Lai Peter Jun Ann

Currently, intel_speed_mode_2500() will fix-up xpcs_an_inband
to 1 if the underlying controller has a max speed of 1000Mbps.
The value has been initialized and modified if it is
a fixed-linked setup earlier.

This patch removes the fix-up to allow for fixed-linked setup
support. In stmmac_phy_setup(), ovr_an_inband is set based on
the value of xpcs_an_inband. Which in turn will return an
error in phylink_parse_mode() where MLO_AN_FIXED and
ovr_an_inband are both set.

Fixes: c82386310d95 ("stmmac: intel: prepare to support 1000BASE-X phy interface setting")
Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com>
---
 drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 -
 1 file changed, 1 deletion(-)

diff --git a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
index 7deb1f817dac..6db87184bf75 100644
--- a/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
+++ b/drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c
@@ -251,7 +251,6 @@ static void intel_speed_mode_2500(struct net_device *ndev, void *intel_data)
 		priv->plat->mdio_bus_data->xpcs_an_inband = false;
 	} else {
 		priv->plat->max_speed = 1000;
-		priv->plat->mdio_bus_data->xpcs_an_inband = true;
 	}
 }
 
-- 
2.34.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

* Re: [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method
  2023-03-30  8:39 ` [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
@ 2023-03-30  8:48   ` Russell King (Oracle)
  0 siblings, 0 replies; 5+ messages in thread
From: Russell King (Oracle) @ 2023-03-30  8:48 UTC (permalink / raw)
  To: Michael Sit Wei Hong
  Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
	David S . Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
	Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
	linux-arm-kernel, linux-kernel, hkallweit1, andrew, Looi Hong Aun,
	Voon Weifeng, Lai Peter Jun Ann

On Thu, Mar 30, 2023 at 04:39:58PM +0800, Michael Sit Wei Hong wrote:
> Provide phylink_expects_phy() to allow MAC drivers to check if it
> is expecting a PHY to attach to. Since fixed-linked setups do not
> need to attach to a PHY.
> 
> Provides a boolean value as to if the MAC should expect a PHY.
> returns true if a PHY is expected.
> 
> Signed-off-by: Michael Sit Wei Hong <michael.wei.hong.sit@intel.com>
> ---
>  drivers/net/phy/phylink.c | 17 +++++++++++++++++
>  include/linux/phylink.h   |  1 +
>  2 files changed, 18 insertions(+)
> 
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 1a2f074685fa..4c080656e280 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -1586,6 +1586,23 @@ void phylink_destroy(struct phylink *pl)
>  }
>  EXPORT_SYMBOL_GPL(phylink_destroy);
>  
> +/**
> + * phylink_expects_phy() - Determine if phylink expects a phy to be attached
> + * @pl: a pointer to a &struct phylink returned from phylink_create()
> + *
> + * Fixed-link mode does not need a PHY, returns a boolean value to check if
> + * phylink will be expecting a PHY to attach.

This description could be clearer (for example, it isn't just about
fixed-link mode), but apart from that, it's good. I don't think that's
a reason to delay this any further, but please follow-up with a patch
to improve this description.

Reviewed-by: Russell King (Oracle) <rmk+kernel@armlinux.org.uk>

Thanks!

-- 
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

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

end of thread, other threads:[~2023-03-30  8:52 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-30  8:39 [PATCH net v4 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
2023-03-30  8:39 ` [PATCH net v4 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
2023-03-30  8:48   ` Russell King (Oracle)
2023-03-30  8:39 ` [PATCH net v4 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
2023-03-30  8:40 ` [PATCH net v4 3/3] net: stmmac: remove redundant fixup to support fixed-link mode Michael Sit Wei Hong

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).