[PATCH] locks on pcnet32 watchdog timer

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

 



Hi,

We sometimes receive a "Bus master arbitration failure, status ffff" 
error on pcnet32 drivers while running a huge network load on a 2.6.x 
kernel. Applying spinlocks on the watchdog timer routine helps getting 
across the problem. A patch for the same is given below.

This patch has been created on 2.6.2-rc1 and tested on an SMP system on
IA32 platform.

Please cc me.

-------------------------------8<--------------------------------------

--- pcnet32-orig.c	2004-01-28 10:43:04.000000000 +0530
+++ pcnet32.c	2004-01-28 10:45:00.000000000 +0530
@@ -1695,12 +1695,14 @@
 static void pcnet32_watchdog(struct net_device *dev)
 {
     struct pcnet32_private *lp = dev->priv;
-
+    unsigned long flags;
+    spin_lock_irqsave(&lp->lock, flags);
     /* Print the link status if it has changed */
     if (lp->mii)
 	mii_check_media (&lp->mii_if, 1, 0);
 
     mod_timer (&(lp->watchdog_timer), PCNET32_WATCHDOG_TIMEOUT);
+    spin_unlock_irqrestore(&lp->lock, flags);
 }
 
 static struct pci_driver pcnet32_driver = {

---------------------------------8<--------------------------------------

Regards,

Chinmay Albal
Linux Technology Centre,
IBM Software Labs, Bangalore,
mail - albal@in.ibm.com


-
: send the line "unsubscribe linux-net" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netdev]     [Ethernet Bridging]     [Linux 802.1Q VLAN]     [Linux Wireless]     [Kernel Newbies]     [Security]     [Linux for Hams]     [Netfilter]     [Git]     [Bugtraq]     [Yosemite News and Information]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux PCI]     [Linux Admin]     [Samba]

  Powered by Linux