summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChunHao Lin <hau@realtek.com>2023-11-10 01:34:00 +0800
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2023-11-28 17:15:15 +0000
commit89a0fc500471d25cb1866e1d87318fe61ebcb4f4 (patch)
treedfb567305db1f9fd322e21060f24a7518bdf4dad
parent533108f04a57f5a6bd7f68ab6ab041b407f64319 (diff)
downloadlinux-stable-89a0fc500471d25cb1866e1d87318fe61ebcb4f4.tar.gz
linux-stable-89a0fc500471d25cb1866e1d87318fe61ebcb4f4.zip
r8169: fix network lost after resume on DASH systems
commit 868c3b95afef4883bfb66c9397482da6840b5baf upstream. Device that support DASH may be reseted or powered off during suspend. So driver needs to handle DASH during system suspend and resume. Or DASH firmware will influence device behavior and causes network lost. Fixes: b646d90053f8 ("r8169: magic.") Cc: stable@vger.kernel.org Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: ChunHao Lin <hau@realtek.com> Link: https://lore.kernel.org/r/20231109173400.4573-3-hau@realtek.com Signed-off-by: Jakub Kicinski <kuba@kernel.org> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r--drivers/net/ethernet/realtek/r8169_main.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/realtek/r8169_main.c b/drivers/net/ethernet/realtek/r8169_main.c
index 0c76c162b8a9..ad9c54fef33f 100644
--- a/drivers/net/ethernet/realtek/r8169_main.c
+++ b/drivers/net/ethernet/realtek/r8169_main.c
@@ -4648,10 +4648,16 @@ static void rtl8169_down(struct rtl8169_private *tp)
rtl8169_cleanup(tp);
rtl_disable_exit_l1(tp);
rtl_prepare_power_down(tp);
+
+ if (tp->dash_type != RTL_DASH_NONE)
+ rtl8168_driver_stop(tp);
}
static void rtl8169_up(struct rtl8169_private *tp)
{
+ if (tp->dash_type != RTL_DASH_NONE)
+ rtl8168_driver_start(tp);
+
pci_set_master(tp->pci_dev);
phy_init_hw(tp->phydev);
phy_resume(tp->phydev);