]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
3.8-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Apr 2013 20:37:03 +0000 (13:37 -0700)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 10 Apr 2013 20:37:03 +0000 (13:37 -0700)
added patches:
r8169-fix-auto-speed-down-issue.patch

queue-3.8/r8169-fix-auto-speed-down-issue.patch [new file with mode: 0644]
queue-3.8/series

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 (file)
index 0000000..e9c1ce8
--- /dev/null
@@ -0,0 +1,70 @@
+From e2409d83434d77874b461b78af6a19cd6e6a1280 Mon Sep 17 00:00:00 2001
+From: hayeswang <hayeswang@realtek.com>
+Date: Sun, 31 Mar 2013 17:02:04 +0000
+Subject: r8169: fix auto speed down issue
+
+From: hayeswang <hayeswang@realtek.com>
+
+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 <hayeswang@realtek.com>
+Acked-by: Francois Romieu <romieu@fr.zoreil.com>
+Signed-off-by: David S. Miller <davem@davemloft.net>
+Signed-off-by: Jonghwan Choi <jhbird.choi@samsung.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+
+
+---
+ 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;
index f76e454671295f0fa79f3a2d2659a21bad664d12..5541e0b28616038a9b2558496c14d529246feaaf 100644 (file)
@@ -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