[...]
> > @@ -1852,12 +1863,17 @@ static int rtl8169_set_wol(struct net_device
> *dev, struct ethtool_wolinfo *wol)
> >             tp->features |= RTL_FEATURE_WOL;
> >     else
> >             tp->features &= ~RTL_FEATURE_WOL;
> > -   __rtl8169_set_wol(tp, wol->wolopts);
> > +   if (pm_runtime_active(&pdev->dev))
> > +           __rtl8169_set_wol(tp, wol->wolopts);
> > +   else
> > +           tp->saved_wolopts = wol->wolopts;
> >
> >     rtl_unlock_work(tp);
> >
> >     device_set_wakeup_enable(&tp->pci_dev->dev, wol->wolopts);
> >
> > +   pm_runtime_put_noidle(&pdev->dev);
> > +
> >     return 0;
> 
> Either the driver resumes the device so that it can perform requested
> operation or it signals .set_wol failure when the device is suspended.
> 
> If the driver does something else, "spam removal" translates to "silent
> failure".

Because "tp->saved_wolopts" will be used to set hardware wol capability in 
rtl8169_runtime_resume().  So I prefer to keep "wol->wolopts" to " 
tp->saved_wolopts " in runtime suspend state and set this to this 
"wol->wolopts" to hardware in in rtl8169_runtime_resume(). 

Thanks.

------Please consider the environment before printing this e-mail.

Reply via email to