Michael Buesch <[EMAIL PROTECTED]> writes:
> I hopefully found out why we get a watchdog timeout now
> and then.
...
> I think the correct solution for this is to fake a TX start
> on every periodic work execution. This fake is harmless and
> prevents the watchdog from triggering. At least here in my testsuite. :)
>
> Please test this guys.
>
> This patch is against 2.6.18.1 (and not 2.6.18, as the diff prolog suggests)
My laptop is running 2.6.19-rc2+ (latest git from Linus), so I tested
the patch below instead. I hope the test is useful anyway.
So far it looks good. The computer has been up for 7 hours and the
network is still working. With an unpatched 2.6.19-rc2 driver, I
usually get a TX timeout after 2-3 hours, which makes the network stop
working.
---
drivers/net/wireless/bcm43xx/bcm43xx_main.c | 6 ++++++
1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
index a94c6d8..4eccda8 100644
--- a/drivers/net/wireless/bcm43xx/bcm43xx_main.c
+++ b/drivers/net/wireless/bcm43xx/bcm43xx_main.c
@@ -3173,6 +3173,12 @@ static void bcm43xx_periodic_work_handle
/* Periodic work will take a long time, so we want it to
* be preemtible.
*/
+ /* We must fake a started transmission here, as we are going to
+ * disable TX. If we wouldn't fake a TX, it would be possible to
+ * trigger the netdev watchdog, if the last real TX is already
+ * some time on the past (slightly less than 5secs)
+ */
+ bcm->net_dev->trans_start = jiffies;
netif_tx_disable(bcm->net_dev);
spin_lock_irqsave(&bcm->irq_lock, flags);
bcm43xx_mac_suspend(bcm);
--
Peter Osterlund - [EMAIL PROTECTED]
http://web.telia.com/~u89404340
_______________________________________________
Bcm43xx-dev mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/bcm43xx-dev