blob: 613224ec4b2bd61ba93808af5a5ee333fa8678c9 [file] [log] [blame]
From 7eb466e7996b2123e82e3c035eb0ea2d19af381e Mon Sep 17 00:00:00 2001
From: Kai-Heng Feng <>
Date: Fri, 4 Oct 2019 20:51:04 +0800
Subject: [PATCH] r8152: Set macpassthru in reset_resume callback
commit a54cdeeb04fc719e4c7f19d6e28dba7ea86cee5b upstream.
r8152 may fail to establish network connection after resume from system
If the USB port connects to r8152 lost its power during system suspend,
the MAC address was written before is lost. The reason is that The MAC
address doesn't get written again in its reset_resume callback.
So let's set MAC address again in reset_resume callback. Also remove
unnecessary lock as no other locking attempt will happen during
Signed-off-by: Kai-Heng Feng <>
Signed-off-by: David S. Miller <>
Signed-off-by: Paul Gortmaker <>
diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c
index f2553dff5b17..d4e63425d0fc 100644
--- a/drivers/net/usb/r8152.c
+++ b/drivers/net/usb/r8152.c
@@ -4502,10 +4502,9 @@ static int rtl8152_reset_resume(struct usb_interface *intf)
struct r8152 *tp = usb_get_intfdata(intf);
clear_bit(SELECTIVE_SUSPEND, &tp->flags);
- mutex_lock(&tp->control);
queue_delayed_work(system_long_wq, &tp->hw_phy_work, 0);
- mutex_unlock(&tp->control);
+ set_ethernet_addr(tp);
return rtl8152_resume(intf);