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

Reply via email to