* [PATCH net v3 0/3] Fix PHY handle no longer parsing
@ 2023-03-24 8:16 Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
` (2 more replies)
0 siblings, 3 replies; 10+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-24 8:16 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
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
drivers/net/ethernet/stmicro/stmmac/dwmac-intel.c | 1 -
drivers/net/ethernet/stmicro/stmmac/stmmac_main.c | 4 +++-
drivers/net/phy/phylink.c | 13 +++++++++++++
include/linux/phylink.h | 1 +
4 files changed, 17 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
--
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] 10+ messages in thread
* [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method
2023-03-24 8:16 [PATCH net v3 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
@ 2023-03-24 8:16 ` Michael Sit Wei Hong
2023-03-29 1:57 ` Jakub Kicinski
2023-03-24 8:16 ` [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 3/3] net: stmmac: remove redundant fixup to support fixed-link mode Michael Sit Wei Hong
2 siblings, 1 reply; 10+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-24 8:16 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
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 | 13 +++++++++++++
include/linux/phylink.h | 1 +
2 files changed, 14 insertions(+)
diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
index 1a2f074685fa..5c2bd1370993 100644
--- a/drivers/net/phy/phylink.c
+++ b/drivers/net/phy/phylink.c
@@ -1586,6 +1586,19 @@ 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)
+{
+ return pl->cfg_link_an_mode != MLO_AN_FIXED;
+}
+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] 10+ messages in thread
* [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY
2023-03-24 8:16 [PATCH net v3 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
@ 2023-03-24 8:16 ` Michael Sit Wei Hong
2023-04-05 17:02 ` Guenter Roeck
2023-03-24 8:16 ` [PATCH net v3 3/3] net: stmmac: remove redundant fixup to support fixed-link mode Michael Sit Wei Hong
2 siblings, 1 reply; 10+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-24 8:16 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
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] 10+ messages in thread
* [PATCH net v3 3/3] net: stmmac: remove redundant fixup to support fixed-link mode
2023-03-24 8:16 [PATCH net v3 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
@ 2023-03-24 8:16 ` Michael Sit Wei Hong
2 siblings, 0 replies; 10+ messages in thread
From: Michael Sit Wei Hong @ 2023-03-24 8:16 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
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] 10+ messages in thread
* Re: [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method
2023-03-24 8:16 ` [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
@ 2023-03-29 1:57 ` Jakub Kicinski
2023-03-29 9:01 ` Russell King (Oracle)
0 siblings, 1 reply; 10+ messages in thread
From: Jakub Kicinski @ 2023-03-29 1:57 UTC (permalink / raw)
To: linux
Cc: Michael Sit Wei Hong, Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S . Miller, Eric Dumazet, Paolo Abeni,
Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
linux-arm-kernel, linux-kernel, Looi Hong Aun, Voon Weifeng,
Lai Peter Jun Ann
On Fri, 24 Mar 2023 16:16:54 +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>
Russell, looks good?
> diff --git a/drivers/net/phy/phylink.c b/drivers/net/phy/phylink.c
> index 1a2f074685fa..5c2bd1370993 100644
> --- a/drivers/net/phy/phylink.c
> +++ b/drivers/net/phy/phylink.c
> @@ -1586,6 +1586,19 @@ 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)
> +{
> + return pl->cfg_link_an_mode != MLO_AN_FIXED;
> +}
> +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);
_______________________________________________
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] 10+ messages in thread
* Re: [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method
2023-03-29 1:57 ` Jakub Kicinski
@ 2023-03-29 9:01 ` Russell King (Oracle)
2023-03-29 9:34 ` Sit, Michael Wei Hong
0 siblings, 1 reply; 10+ messages in thread
From: Russell King (Oracle) @ 2023-03-29 9:01 UTC (permalink / raw)
To: Jakub Kicinski
Cc: Michael Sit Wei Hong, Giuseppe Cavallaro, Alexandre Torgue,
Jose Abreu, David S . Miller, Eric Dumazet, Paolo Abeni,
Maxime Coquelin, Ong Boon Leong, netdev, linux-stm32,
linux-arm-kernel, linux-kernel, Looi Hong Aun, Voon Weifeng,
Lai Peter Jun Ann
On Tue, Mar 28, 2023 at 06:57:20PM -0700, Jakub Kicinski wrote:
> On Fri, 24 Mar 2023 16:16:54 +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>
>
> Russell, looks good?
Not really, given that phylink_attach_phy() will refuse to attach a PHY
when:
if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED ||
(pl->cfg_link_an_mode == MLO_AN_INBAND &&
phy_interface_mode_is_8023z(interface) && !pl->sfp_bus)))
return -EINVAL;
So, if we introduce a helper named "phylink_expects_phy" that returns
true when cfg_link_an_mode == MLO_AN_INBAND and the interface mode
is e.g. 1000base-X, but then someone tries to attach a PHY, the kernel
spits out a warning, backtrace, and a return value of -EINVAL, things
are going to look really rather stupid.
--
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] 10+ messages in thread
* RE: [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method
2023-03-29 9:01 ` Russell King (Oracle)
@ 2023-03-29 9:34 ` Sit, Michael Wei Hong
2023-03-29 9:48 ` Russell King (Oracle)
0 siblings, 1 reply; 10+ messages in thread
From: Sit, Michael Wei Hong @ 2023-03-29 9:34 UTC (permalink / raw)
To: Russell King, Jakub Kicinski
Cc: Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S . Miller, Eric Dumazet, Paolo Abeni, Maxime Coquelin,
Ong, Boon Leong, netdev@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Looi, Hong Aun, Voon, Weifeng,
Lai, Peter Jun Ann
> -----Original Message-----
> From: Russell King <linux@armlinux.org.uk>
> Sent: Wednesday, March 29, 2023 5:01 PM
> To: Jakub Kicinski <kuba@kernel.org>
> Cc: Sit, Michael Wei Hong <michael.wei.hong.sit@intel.com>;
> Giuseppe Cavallaro <peppe.cavallaro@st.com>; Alexandre Torgue
> <alexandre.torgue@foss.st.com>; Jose Abreu
> <joabreu@synopsys.com>; David S . Miller <davem@davemloft.net>;
> Eric Dumazet <edumazet@google.com>; Paolo Abeni
> <pabeni@redhat.com>; Maxime Coquelin
> <mcoquelin.stm32@gmail.com>; Ong, Boon Leong
> <boon.leong.ong@intel.com>; netdev@vger.kernel.org; linux-
> stm32@st-md-mailman.stormreply.com; linux-arm-
> kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Looi,
> Hong Aun <hong.aun.looi@intel.com>; Voon, Weifeng
> <weifeng.voon@intel.com>; Lai, Peter Jun Ann
> <peter.jun.ann.lai@intel.com>
> Subject: Re: [PATCH net v3 1/3] net: phylink: add
> phylink_expects_phy() method
>
> On Tue, Mar 28, 2023 at 06:57:20PM -0700, Jakub Kicinski wrote:
> > On Fri, 24 Mar 2023 16:16:54 +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>
> >
> > Russell, looks good?
>
> Not really, given that phylink_attach_phy() will refuse to attach a
> PHY
> when:
>
> if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED ||
> (pl->cfg_link_an_mode == MLO_AN_INBAND &&
> phy_interface_mode_is_8023z(interface) && !pl-
> >sfp_bus)))
> return -EINVAL;
>
> So, if we introduce a helper named "phylink_expects_phy" that
> returns true when cfg_link_an_mode == MLO_AN_INBAND and the
> interface mode is e.g. 1000base-X, but then someone tries to attach
> a PHY, the kernel spits out a warning, backtrace, and a return value
> of -EINVAL, things are going to look really rather stupid.
>
Should we check for these 3 conditions as well then?
(pl->cfg_link_an_mode == MLO_AN_INBAND &&
phy_interface_mode_is_8023z(interface) && !pl->sfp_bus)
to determine if phylink expects a phy.
> --
> 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] 10+ messages in thread
* Re: [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method
2023-03-29 9:34 ` Sit, Michael Wei Hong
@ 2023-03-29 9:48 ` Russell King (Oracle)
0 siblings, 0 replies; 10+ messages in thread
From: Russell King (Oracle) @ 2023-03-29 9:48 UTC (permalink / raw)
To: Sit, Michael Wei Hong
Cc: Jakub Kicinski, Giuseppe Cavallaro, Alexandre Torgue, Jose Abreu,
David S . Miller, Eric Dumazet, Paolo Abeni, Maxime Coquelin,
Ong, Boon Leong, netdev@vger.kernel.org,
linux-stm32@st-md-mailman.stormreply.com,
linux-arm-kernel@lists.infradead.org,
linux-kernel@vger.kernel.org, Looi, Hong Aun, Voon, Weifeng,
Lai, Peter Jun Ann
On Wed, Mar 29, 2023 at 09:34:05AM +0000, Sit, Michael Wei Hong wrote:
>
>
> > -----Original Message-----
> > From: Russell King <linux@armlinux.org.uk>
> > Sent: Wednesday, March 29, 2023 5:01 PM
> > To: Jakub Kicinski <kuba@kernel.org>
> > Cc: Sit, Michael Wei Hong <michael.wei.hong.sit@intel.com>;
> > Giuseppe Cavallaro <peppe.cavallaro@st.com>; Alexandre Torgue
> > <alexandre.torgue@foss.st.com>; Jose Abreu
> > <joabreu@synopsys.com>; David S . Miller <davem@davemloft.net>;
> > Eric Dumazet <edumazet@google.com>; Paolo Abeni
> > <pabeni@redhat.com>; Maxime Coquelin
> > <mcoquelin.stm32@gmail.com>; Ong, Boon Leong
> > <boon.leong.ong@intel.com>; netdev@vger.kernel.org; linux-
> > stm32@st-md-mailman.stormreply.com; linux-arm-
> > kernel@lists.infradead.org; linux-kernel@vger.kernel.org; Looi,
> > Hong Aun <hong.aun.looi@intel.com>; Voon, Weifeng
> > <weifeng.voon@intel.com>; Lai, Peter Jun Ann
> > <peter.jun.ann.lai@intel.com>
> > Subject: Re: [PATCH net v3 1/3] net: phylink: add
> > phylink_expects_phy() method
> >
> > On Tue, Mar 28, 2023 at 06:57:20PM -0700, Jakub Kicinski wrote:
> > > On Fri, 24 Mar 2023 16:16:54 +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>
> > >
> > > Russell, looks good?
> >
> > Not really, given that phylink_attach_phy() will refuse to attach a
> > PHY
> > when:
> >
> > if (WARN_ON(pl->cfg_link_an_mode == MLO_AN_FIXED ||
> > (pl->cfg_link_an_mode == MLO_AN_INBAND &&
> > phy_interface_mode_is_8023z(interface) && !pl-
> > >sfp_bus)))
> > return -EINVAL;
> >
> > So, if we introduce a helper named "phylink_expects_phy" that
> > returns true when cfg_link_an_mode == MLO_AN_INBAND and the
> > interface mode is e.g. 1000base-X, but then someone tries to attach
> > a PHY, the kernel spits out a warning, backtrace, and a return value
> > of -EINVAL, things are going to look really rather stupid.
> >
> Should we check for these 3 conditions as well then?
> (pl->cfg_link_an_mode == MLO_AN_INBAND &&
> phy_interface_mode_is_8023z(interface) && !pl->sfp_bus)
> to determine if phylink expects a phy.
If there's a sfp bus, then we don't expect a PHY from the MAC driver
(as there can only be one PHY attached), and as phylink_expects_phy()
is for the MAC driver to use, we should be returning false if
pl->sfp_bus != NULL.
pl->cfg_link_an_mode == MLO_AN_FIXED ||
(pl->cfg_link_an_mode == MLO_AN_INBAND &&
phy_interface_mode_is_8023z(interface))
Is true when we're in fixed-link mode, or if we're in in-band mode
and using 1000base-X or 25000base-X. These are the conditions that
we don't expect the MAC driver to give us a PHY.
To put that in positive logic, we expect a PHY from the MAC when
we're in PHY mode, or when we're in in-band mode and using SGMII,
QSGMII, USXGMII, RGMII, etc.
The reason for the extra "&& !pl->sfp_bus" in phylink_attach_phy()
is to allow SFPs to connect to the MAC using inband mode with
1000base-X and 2500base-X interface modes. These are not for the
MAC-side of things though.
--
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] 10+ messages in thread
* Re: [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY
2023-03-24 8:16 ` [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
@ 2023-04-05 17:02 ` Guenter Roeck
2023-04-05 17:08 ` Russell King (Oracle)
0 siblings, 1 reply; 10+ messages in thread
From: Guenter Roeck @ 2023-04-05 17:02 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, linux, Looi Hong Aun,
Voon Weifeng, Lai Peter Jun Ann
Hi,
On Fri, Mar 24, 2023 at 04:16:55PM +0800, Michael Sit Wei Hong wrote:
> 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>
With this patch in linux-next, the orangepi-pc qemu emulation fails to
bring up the Ethernet interface. The following error is seen.
[ 12.482401] dwmac-sun8i 1c30000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
[ 12.487789] dwmac-sun8i 1c30000.ethernet eth0: PHY [mdio_mux-0.1:01] driver [Generic PHY] (irq=POLL)
[ 12.488177] dwmac-sun8i 1c30000.ethernet eth0: no phy found
[ 12.488295] dwmac-sun8i 1c30000.ethernet eth0: __stmmac_open: Cannot attach to PHY (error: -19)
Reverting this patch fixes the problem.
> ---
> 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) {
I don't really understand this condition. It starts taking this path even if ret == 0
and fwnode != NULL if phy_needed is set. That means this path is now taken even if
phylink_fwnode_phy_connect() returned no error. That seems odd.
Guenter
> 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 [flat|nested] 10+ messages in thread
* Re: [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY
2023-04-05 17:02 ` Guenter Roeck
@ 2023-04-05 17:08 ` Russell King (Oracle)
0 siblings, 0 replies; 10+ messages in thread
From: Russell King (Oracle) @ 2023-04-05 17:08 UTC (permalink / raw)
To: Guenter Roeck
Cc: Michael Sit Wei Hong, 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, Looi Hong Aun, Voon Weifeng,
Lai Peter Jun Ann
On Wed, Apr 05, 2023 at 10:02:16AM -0700, Guenter Roeck wrote:
> Hi,
>
> On Fri, Mar 24, 2023 at 04:16:55PM +0800, Michael Sit Wei Hong wrote:
> > 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>
>
> With this patch in linux-next, the orangepi-pc qemu emulation fails to
> bring up the Ethernet interface. The following error is seen.
>
> [ 12.482401] dwmac-sun8i 1c30000.ethernet eth0: Register MEM_TYPE_PAGE_POOL RxQ-0
> [ 12.487789] dwmac-sun8i 1c30000.ethernet eth0: PHY [mdio_mux-0.1:01] driver [Generic PHY] (irq=POLL)
> [ 12.488177] dwmac-sun8i 1c30000.ethernet eth0: no phy found
> [ 12.488295] dwmac-sun8i 1c30000.ethernet eth0: __stmmac_open: Cannot attach to PHY (error: -19)
>
> Reverting this patch fixes the problem.
Please see 20230405093945.3549491-1-michael.wei.hong.sit@intel.com
for the fix.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 80Mbps 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] 10+ messages in thread
end of thread, other threads:[~2023-04-05 17:10 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-03-24 8:16 [PATCH net v3 0/3] Fix PHY handle no longer parsing Michael Sit Wei Hong
2023-03-24 8:16 ` [PATCH net v3 1/3] net: phylink: add phylink_expects_phy() method Michael Sit Wei Hong
2023-03-29 1:57 ` Jakub Kicinski
2023-03-29 9:01 ` Russell King (Oracle)
2023-03-29 9:34 ` Sit, Michael Wei Hong
2023-03-29 9:48 ` Russell King (Oracle)
2023-03-24 8:16 ` [PATCH net v3 2/3] net: stmmac: check if MAC needs to attach to a PHY Michael Sit Wei Hong
2023-04-05 17:02 ` Guenter Roeck
2023-04-05 17:08 ` Russell King (Oracle)
2023-03-24 8:16 ` [PATCH net v3 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 read-only IMAP folder(s) and NNTP newsgroup(s).