r8169: improve setting WoL on runtime-resume
authorHeiner Kallweit <hkallweit1@gmail.com>
Wed, 17 Jun 2020 20:52:47 +0000 (22:52 +0200)
committerDavid S. Miller <davem@davemloft.net>
Fri, 19 Jun 2020 03:38:36 +0000 (20:38 -0700)
In the following scenario WoL isn't configured properly:
- Driver is loaded, interface isn't brought up within 10s, so driver
  runtime-suspends.
- WoL is set.
- Interface is brought up, stored WoL setting isn't applied.

It has always been like that, but the scenario seems to be quite
theoretical as I haven't seen any bug report yet. Therefore treat
the change as an improvement.

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/realtek/r8169_main.c

index 4bc6c55..bd95c0a 100644 (file)
@@ -4887,14 +4887,12 @@ static int rtl8169_runtime_resume(struct device *device)
 
        rtl_rar_set(tp, tp->dev->dev_addr);
 
-       if (!tp->TxDescArray)
-               return 0;
-
        rtl_lock_work(tp);
        __rtl8169_set_wol(tp, tp->saved_wolopts);
        rtl_unlock_work(tp);
 
-       __rtl8169_resume(tp);
+       if (tp->TxDescArray)
+               __rtl8169_resume(tp);
 
        return 0;
 }