Messages in this thread | | | Date | Mon, 6 Jan 2020 07:08:51 +0100 | From | Michal Kubecek <> | Subject | Re: [PATCH net-next 3/3] epic100: allow nesting of ethtool_ops begin() and complete() |
| |
On Sun, Jan 05, 2020 at 11:08:32PM +0100, Andrew Lunn wrote: > > @@ -1435,8 +1436,10 @@ static int ethtool_begin(struct net_device *dev) > > struct epic_private *ep = netdev_priv(dev); > > void __iomem *ioaddr = ep->ioaddr; > > > > + if (ep->ethtool_ops_nesting == U32_MAX) > > + return -EBUSY; > > /* power-up, if interface is down */ > > - if (!netif_running(dev)) { > > + if (ep->ethtool_ops_nesting++ && !netif_running(dev)) { > > ew32(GENCTL, 0x0200); > > ew32(NVCTL, (er32(NVCTL) & ~0x003c) | 0x4800); > > } > > Hi Michal > > In the via-velocity you added: > > + if (vptr->ethtool_ops_nesting == U32_MAX) > + return -EBUSY; > + if (!vptr->ethtool_ops_nesting++ && !netif_running(dev)) > velocity_set_power_state(vptr, PCI_D0); > return 0; > > These two fragments differ by a ! . Is that correct?
You are right, thank you for catching it. This should be
if (!ep->ethtool_ops_nesting++ && !netif_running(dev)) {
as well, we only want to wake the device up in the first (outermost) ->begin(). (It would probably do no harm to do it each time but not doing it in the first would be wrong.)
I'll send v2 in a moment.
Michal
| |