> @@ -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? Andrew