From fae07f282c1d1e6e8e616502c103964dde802dbe Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 10 Apr 2013 13:37:03 -0700 Subject: [PATCH] 3.8-stable patches added patches: r8169-fix-auto-speed-down-issue.patch --- .../r8169-fix-auto-speed-down-issue.patch | 70 +++++++++++++++++++ queue-3.8/series | 1 + 2 files changed, 71 insertions(+) create mode 100644 queue-3.8/r8169-fix-auto-speed-down-issue.patch diff --git a/queue-3.8/r8169-fix-auto-speed-down-issue.patch b/queue-3.8/r8169-fix-auto-speed-down-issue.patch new file mode 100644 index 00000000000..e9c1ce84884 --- /dev/null +++ b/queue-3.8/r8169-fix-auto-speed-down-issue.patch @@ -0,0 +1,70 @@ +From e2409d83434d77874b461b78af6a19cd6e6a1280 Mon Sep 17 00:00:00 2001 +From: hayeswang +Date: Sun, 31 Mar 2013 17:02:04 +0000 +Subject: r8169: fix auto speed down issue + +From: hayeswang + +commit e2409d83434d77874b461b78af6a19cd6e6a1280 upstream. + +It would cause no link after suspending or shutdowning when the +nic changes the speed to 10M and connects to a link partner which +forces the speed to 100M. + +Check the link partner ability to determine which speed to set. + +Signed-off-by: Hayes Wang +Acked-by: Francois Romieu +Signed-off-by: David S. Miller +Signed-off-by: Jonghwan Choi +Signed-off-by: Greg Kroah-Hartman + + +--- + drivers/net/ethernet/realtek/r8169.c | 28 +++++++++++++++++++++++++--- + 1 file changed, 25 insertions(+), 3 deletions(-) + +--- a/drivers/net/ethernet/realtek/r8169.c ++++ b/drivers/net/ethernet/realtek/r8169.c +@@ -3819,6 +3819,30 @@ static void rtl_init_mdio_ops(struct rtl + } + } + ++static void rtl_speed_down(struct rtl8169_private *tp) ++{ ++ u32 adv; ++ int lpa; ++ ++ rtl_writephy(tp, 0x1f, 0x0000); ++ lpa = rtl_readphy(tp, MII_LPA); ++ ++ if (lpa & (LPA_10HALF | LPA_10FULL)) ++ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full; ++ else if (lpa & (LPA_100HALF | LPA_100FULL)) ++ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | ++ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full; ++ else ++ adv = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full | ++ ADVERTISED_100baseT_Half | ADVERTISED_100baseT_Full | ++ (tp->mii.supports_gmii ? ++ ADVERTISED_1000baseT_Half | ++ ADVERTISED_1000baseT_Full : 0); ++ ++ rtl8169_set_speed(tp->dev, AUTONEG_ENABLE, SPEED_1000, DUPLEX_FULL, ++ adv); ++} ++ + static void rtl_wol_suspend_quirk(struct rtl8169_private *tp) + { + void __iomem *ioaddr = tp->mmio_addr; +@@ -3849,9 +3873,7 @@ static bool rtl_wol_pll_power_down(struc + if (!(__rtl8169_get_wol(tp) & WAKE_ANY)) + return false; + +- rtl_writephy(tp, 0x1f, 0x0000); +- rtl_writephy(tp, MII_BMCR, 0x0000); +- ++ rtl_speed_down(tp); + rtl_wol_suspend_quirk(tp); + + return true; diff --git a/queue-3.8/series b/queue-3.8/series index f76e4546712..5541e0b2861 100644 --- a/queue-3.8/series +++ b/queue-3.8/series @@ -56,3 +56,4 @@ arm-exynos-fix-crash-on-soft-reset-on-exynos5440.patch drm-i915-add-quirk-to-invert-brightness-on-emachines-g725.patch drm-i915-add-quirk-to-invert-brightness-on-emachines-e725.patch drm-i915-add-quirk-to-invert-brightness-on-packard-bell-ncl20.patch +r8169-fix-auto-speed-down-issue.patch -- 2.47.3