Bug#650771: r8169 connectivity intermittent, link up messages in syslog
Version: 3.2~rc4-1~experimental.1
found 650771 linux-2.6/2.6.32-39
tags 650771 + patch moreinfo
quit
Robbert Haarman wrote:
>> Robbert Haarman wrote:
>>> I compiled a vanilla 3.2.0-rc4 kernel and that seems to fix the problem.
[...]
> After a few days still no problems. Looking good!
That means one of two things: (a) v3.2-rc4 fixes this, or (b) some
patch or configuration detail in the Debian kernel provokes it.
Marking under the assumption that it is (a).
Presumably soon we'll know for sure. ;-)
I blame v3.2-rc3~25^2~63 (r8169: increase the delay parameter of
pm_schedule_suspend, 2011-11-07).
> I tested using linux-image-2.6.32-5-amd64 version 2.6.32-39, which I
> think is current for both squeeze and squeeze-proposed-updates. This
> kernel is affected (problem reproduced using the r8169 driver as shipped
> by Debian).
Potential patch attached. Thanks for checking so quickly.
From: hayeswang <hayeswang@realtek.com>
Date: Mon, 7 Nov 2011 20:44:37 +0000
Subject: r8169: increase the delay parameter of pm_schedule_suspend
commit 10953db8e1a278742ef7e64a3d1491802bcfa98b upstream.
The link down would occur when reseting PHY. And it would take about 2 ~ 5 seconds
from link down to link up. If the delay of pm_schedule_suspend is not long enough,
the device would enter runtime_suspend before link up. After link up, the device
would wake up and reset PHY again. Then, you would find the driver keep in a loop
of runtime_suspend and rumtime_resume.
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: Jonathan Nieder <jrnieder@gmail.com>
---
drivers/net/r8169.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/drivers/net/r8169.c b/drivers/net/r8169.c
index 0e2bf4bfd6db..003a5f710833 100644
--- a/drivers/net/r8169.c
+++ b/drivers/net/r8169.c
@@ -1115,7 +1115,7 @@ static void __rtl8169_check_link_status(struct net_device *dev,
netif_carrier_off(dev);
netif_info(tp, ifdown, dev, "link down\n");
if (pm)
- pm_schedule_suspend(&tp->pci_dev->dev, 100);
+ pm_schedule_suspend(&tp->pci_dev->dev, 5000);
}
spin_unlock_irqrestore(&tp->lock, flags);
}
--
1.7.8.rc3
Reply to: