Chunhao Lin <h...@realtek.com> : [...] > diff --git a/drivers/net/ethernet/realtek/r8169.c > b/drivers/net/ethernet/realtek/r8169.c > index 0e62d74..f07604f 100644 > --- a/drivers/net/ethernet/realtek/r8169.c > +++ b/drivers/net/ethernet/realtek/r8169.c [...] > @@ -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". -- Ueimor