Subject: Re: [PATCH RFC] ethernet: stmmac: clean up the code for release/suspend/resume function

From: Jisheng Zhang <[email-masked]>
Date: Thu, 10 Dec 2020 17:03:19 +0800

On Tue, 8 Dec 2020 10:49:03 +0000 Joakim Zhang <[email-masked]> wrote:

> 
> 
> > -----Original Message-----
> > From: Jisheng Zhang <[email-masked]>
> > Sent: 2020年12月8日 18:24
> > To: Joakim Zhang <[email-masked]>
> > Cc: [email-masked]; [email-masked];
> > [email-masked]; [email-masked]; [email-masked];
> > [email-masked]; dl-linux-imx <[email-masked]>
> > Subject: Re: [PATCH RFC] ethernet: stmmac: clean up the code for
> > release/suspend/resume function
> >
> > On Mon,  7 Dec 2020 19:38:49 +0800 Joakim Zhang wrote:
> >
> >  
> > >
> > > commit 1c35cc9cf6a0 ("net: stmmac: remove redundant null check before
> > > clk_disable_unprepare()"), have not clean up check NULL clock parameter  
> > completely, this patch did it.  
> > >
> > > commit e8377e7a29efb ("net: stmmac: only call pmt() during
> > > suspend/resume if HW enables PMT"), after this patch, we use if
> > > (device_may_wakeup(priv->device) && priv->plat->pmt) check MAC wakeup
> > > if (device_may_wakeup(priv->device)) check PHY wakeup Add oneline
> > > comment for readability.
> > >
> > > commit 77b2898394e3b ("net: stmmac: Speed down the PHY if WoL to save
> > > energy"), slow down phy speed when release net device under any condition.
> > >
> > > Slightly adjust the order of the codes so that suspend/resume look
> > > more symmetrical, generally speaking they should appear symmetrically.
> > >
> > > Signed-off-by: Joakim Zhang <[email-masked]>
> > > ---
> > >  .../net/ethernet/stmicro/stmmac/stmmac_main.c | 22
> > > +++++++++----------
> > >  1 file changed, 10 insertions(+), 12 deletions(-)
> > >
> > > diff --git a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > index c33db79cdd0a..a46e865c4acc 100644
> > > --- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > +++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
> > > @@ -2908,8 +2908,7 @@ static int stmmac_release(struct net_device *dev)
> > >         struct stmmac_priv *priv = netdev_priv(dev);
> > >         u32 chan;
> > >
> > > -       if (device_may_wakeup(priv->device))  
> >
> > This check is to prevent link speed down if the stmmac isn't a wakeup device.  
> 
> When we invoke .ndo_stop, we down the net device. Per my understanding, we can speed down the phy, no matter it is a wakeup device or not.

The problem is if the device can't wake up, then phy link will be turned off
No need to speed down the phy before turning off it.

PS: It seems your email client isn't properly setup..