All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christian Marangi <ansuelsmth@gmail.com>
To: Larysa Zaremba <larysa.zaremba@intel.com>
Cc: Andrew Lunn <andrew@lunn.ch>,
	Heiner Kallweit <hkallweit1@gmail.com>,
	Russell King <linux@armlinux.org.uk>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	Florian Fainelli <f.fainelli@gmail.com>,
	netdev@vger.kernel.org, linux-kernel@vger.kernel.org
Subject: Re: [net-next PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY
Date: Mon, 20 Nov 2023 17:49:28 +0100	[thread overview]
Message-ID: <655bb796.050a0220.750ad.21a4@mx.google.com> (raw)
In-Reply-To: <ZVuUP797C4PLzJsP@lzaremba-mobl.ger.corp.intel.com>

On Mon, Nov 20, 2023 at 06:15:43PM +0100, Larysa Zaremba wrote:
> On Mon, Nov 20, 2023 at 02:15:40PM +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.
> > 
> > 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;
> 
> Are you sure 'suspended' should not be cleared, if soft_reset fails?
> 
> >  	}

Idea is not change current implementation... And before this, suspended
was cleared only with reset not failing.

> >  
> > -	if (ret < 0)
> > -		return ret;
> > -
> >  	ret = phy_scan_fixups(phydev);
> >  	if (ret < 0)
> >  		return ret;
> > -- 
> > 2.40.1
> > 
> > 

-- 
	Ansuel

  reply	other threads:[~2023-11-20 19:46 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-20 13:15 [net-next PATCH] net: phy: correctly check soft_reset ret ONLY if defined for PHY Christian Marangi
2023-11-20 17:15 ` Larysa Zaremba
2023-11-20 16:49   ` Christian Marangi [this message]
2023-11-21  9:09     ` Larysa Zaremba
2023-11-20 17:42 ` Jakub Kicinski
2023-11-20 16:50   ` Christian Marangi
2023-11-20 21:53     ` Jakub Kicinski

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=655bb796.050a0220.750ad.21a4@mx.google.com \
    --to=ansuelsmth@gmail.com \
    --cc=andrew@lunn.ch \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=f.fainelli@gmail.com \
    --cc=hkallweit1@gmail.com \
    --cc=kuba@kernel.org \
    --cc=larysa.zaremba@intel.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    /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.