From: chinmay albal 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. --- drivers/net/pcnet32.c | 6 +++++- 1 files changed, 5 insertions(+), 1 deletion(-) diff -puN drivers/net/pcnet32.c~pcnet32-locking-fix drivers/net/pcnet32.c --- 25/drivers/net/pcnet32.c~pcnet32-locking-fix 2004-01-27 23:55:55.000000000 -0800 +++ 25-akpm/drivers/net/pcnet32.c 2004-01-27 23:57:03.000000000 -0800 @@ -1707,12 +1707,16 @@ static int pcnet32_ioctl(struct net_devi 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 = { _