[PATCH] locks on pcnet32 watchdog timer

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

 



We sometimes receive a "Bus master arbitration failure, status ffff" error on pcnet32 drivers while running a huge network load on a 2.5.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 tested on an SMP system on the intel platform

Please cc me.

--- pcnet32.c.orig      2003-06-24 17:44:49.000000000 +0530
+++ pcnet32.c   2003-06-24 17:46:29.000000000 +0530
@@ -1687,12 +1687,16 @@
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 = {



-
: 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