* [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY
@ 2023-11-19 15:12 Christian Marangi
2023-11-19 16:24 ` Andrew Lunn
0 siblings, 1 reply; 4+ messages in thread
From: Christian Marangi @ 2023-11-19 15:12 UTC (permalink / raw)
To: Andrew Lunn, Heiner Kallweit, Russell King, David S. Miller,
Eric Dumazet, Jakub Kicinski, Paolo Abeni, Florian Fainelli,
netdev, linux-kernel
Cc: Christian Marangi, stable
soft_reset call for phy_init_hw had multiple revision across the years
and the implementation goes back to 2014. Originally was a simple call
to write the generic PHY reset BIT, it was then moved to a dedicated
function. It was then added the option for PHY driver to define their
own special way to reset the PHY. Till this change, checking for ret was
correct as it was always filled by either the generic reset or the
custom implementation. This changed tho with commit 6e2d85ec0559 ("net:
phy: Stop with excessive soft reset"), as the generic reset call to PHY
was dropped but the ret check was never made entirely optional and
dependent whether soft_reset was defined for the PHY driver or not.
Luckly nothing was ever added before the soft_reset call so the ret
check (in the case where a PHY didn't had soft_reset defined) although
wrong, never caused problems as ret was init 0 at the start of
phy_init_hw.
To prevent any kind of problem and to make the function cleaner and more
robust, correctly move the ret check if the soft_reset section making it
optional and needed only with the function defined.
Cc: stable@vger.kernel.org # v5.8+
Fixes: 6e2d85ec0559 ("net: phy: Stop with excessive soft reset")
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
---
drivers/net/phy/phy_device.c | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/net/phy/phy_device.c b/drivers/net/phy/phy_device.c
index 2ce74593d6e4..478126f6b5bc 100644
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
@@ -1235,14 +1235,13 @@ int phy_init_hw(struct phy_device *phydev)
if (phydev->drv->soft_reset) {
ret = phydev->drv->soft_reset(phydev);
+ if (ret < 0)
+ return ret;
+
/* see comment in genphy_soft_reset for an explanation */
- if (!ret)
- phydev->suspended = 0;
+ phydev->suspended = 0;
}
- if (ret < 0)
- return ret;
-
ret = phy_scan_fixups(phydev);
if (ret < 0)
return ret;
--
2.40.1
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY
2023-11-19 15:12 [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY Christian Marangi
@ 2023-11-19 16:24 ` Andrew Lunn
2023-11-19 17:55 ` Christian Marangi
0 siblings, 1 reply; 4+ messages in thread
From: Andrew Lunn @ 2023-11-19 16:24 UTC (permalink / raw)
To: Christian Marangi
Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Florian Fainelli, netdev,
linux-kernel, stable
On Sun, Nov 19, 2023 at 04:12:58PM +0100, Christian Marangi wrote:
> soft_reset call for phy_init_hw had multiple revision across the years
> and the implementation goes back to 2014. Originally was a simple call
> to write the generic PHY reset BIT, it was then moved to a dedicated
> function. It was then added the option for PHY driver to define their
> own special way to reset the PHY. Till this change, checking for ret was
> correct as it was always filled by either the generic reset or the
> custom implementation. This changed tho with commit 6e2d85ec0559 ("net:
> phy: Stop with excessive soft reset"), as the generic reset call to PHY
> was dropped but the ret check was never made entirely optional and
> dependent whether soft_reset was defined for the PHY driver or not.
>
> Luckly nothing was ever added before the soft_reset call so the ret
> check (in the case where a PHY didn't had soft_reset defined) although
> wrong, never caused problems as ret was init 0 at the start of
> phy_init_hw.
>
> To prevent any kind of problem and to make the function cleaner and more
> robust, correctly move the ret check if the soft_reset section making it
> optional and needed only with the function defined.
I think this should target net-next, not net. It does not appear to be
an problem which actually affects somebody using stable kernels.
The change itself looks O.K.
Andrew
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY
2023-11-19 16:24 ` Andrew Lunn
@ 2023-11-19 17:55 ` Christian Marangi
2023-11-19 18:23 ` Andrew Lunn
0 siblings, 1 reply; 4+ messages in thread
From: Christian Marangi @ 2023-11-19 17:55 UTC (permalink / raw)
To: Andrew Lunn
Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Florian Fainelli, netdev,
linux-kernel, stable
On Sun, Nov 19, 2023 at 05:24:00PM +0100, Andrew Lunn wrote:
> On Sun, Nov 19, 2023 at 04:12:58PM +0100, Christian Marangi wrote:
> > soft_reset call for phy_init_hw had multiple revision across the years
> > and the implementation goes back to 2014. Originally was a simple call
> > to write the generic PHY reset BIT, it was then moved to a dedicated
> > function. It was then added the option for PHY driver to define their
> > own special way to reset the PHY. Till this change, checking for ret was
> > correct as it was always filled by either the generic reset or the
> > custom implementation. This changed tho with commit 6e2d85ec0559 ("net:
> > phy: Stop with excessive soft reset"), as the generic reset call to PHY
> > was dropped but the ret check was never made entirely optional and
> > dependent whether soft_reset was defined for the PHY driver or not.
> >
> > Luckly nothing was ever added before the soft_reset call so the ret
> > check (in the case where a PHY didn't had soft_reset defined) although
> > wrong, never caused problems as ret was init 0 at the start of
> > phy_init_hw.
> >
> > To prevent any kind of problem and to make the function cleaner and more
> > robust, correctly move the ret check if the soft_reset section making it
> > optional and needed only with the function defined.
>
> I think this should target net-next, not net. It does not appear to be
> an problem which actually affects somebody using stable kernels.
>
> The change itself looks O.K.
>
Ok to resubmit or should I wait 24h? (asking as it's a very simple
change)
Also is the stable Cc ok?
(that was the main reason I added the net tag to this)
--
Ansuel
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY
2023-11-19 17:55 ` Christian Marangi
@ 2023-11-19 18:23 ` Andrew Lunn
0 siblings, 0 replies; 4+ messages in thread
From: Andrew Lunn @ 2023-11-19 18:23 UTC (permalink / raw)
To: Christian Marangi
Cc: Heiner Kallweit, Russell King, David S. Miller, Eric Dumazet,
Jakub Kicinski, Paolo Abeni, Florian Fainelli, netdev,
linux-kernel, stable
On Sun, Nov 19, 2023 at 06:55:47PM +0100, Christian Marangi wrote:
> On Sun, Nov 19, 2023 at 05:24:00PM +0100, Andrew Lunn wrote:
> > On Sun, Nov 19, 2023 at 04:12:58PM +0100, Christian Marangi wrote:
> > > soft_reset call for phy_init_hw had multiple revision across the years
> > > and the implementation goes back to 2014. Originally was a simple call
> > > to write the generic PHY reset BIT, it was then moved to a dedicated
> > > function. It was then added the option for PHY driver to define their
> > > own special way to reset the PHY. Till this change, checking for ret was
> > > correct as it was always filled by either the generic reset or the
> > > custom implementation. This changed tho with commit 6e2d85ec0559 ("net:
> > > phy: Stop with excessive soft reset"), as the generic reset call to PHY
> > > was dropped but the ret check was never made entirely optional and
> > > dependent whether soft_reset was defined for the PHY driver or not.
> > >
> > > Luckly nothing was ever added before the soft_reset call so the ret
> > > check (in the case where a PHY didn't had soft_reset defined) although
> > > wrong, never caused problems as ret was init 0 at the start of
> > > phy_init_hw.
> > >
> > > To prevent any kind of problem and to make the function cleaner and more
> > > robust, correctly move the ret check if the soft_reset section making it
> > > optional and needed only with the function defined.
> >
> > I think this should target net-next, not net. It does not appear to be
> > an problem which actually affects somebody using stable kernels.
> >
> > The change itself looks O.K.
> >
>
> Ok to resubmit or should I wait 24h? (asking as it's a very simple
> change)
Please wait 24 hours.
> Also is the stable Cc ok?
> (that was the main reason I added the net tag to this)
No drop the Cc: Stable. Your description of the problem does not fit
the rules for stable.
Andrew
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2023-11-19 18:23 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-11-19 15:12 [net PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY Christian Marangi
2023-11-19 16:24 ` Andrew Lunn
2023-11-19 17:55 ` Christian Marangi
2023-11-19 18:23 ` Andrew Lunn
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox