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 <[email protected]> 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 <[email protected]> Acked-by: Francois Romieu <[email protected]> Signed-off-by: David S. Miller <[email protected]> Signed-off-by: Jonathan Nieder <[email protected]> --- 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

