[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: