Re: 2.1.131-ac3 3c509 no irq_save in the sender code

Stephen C. Tweedie (
Mon, 7 Dec 1998 16:56:00 GMT


On Sat, 5 Dec 1998 11:46:05 +0100 (CET), Andrea Arcangeli
<> said:

> I am merging you tree Alan, and I seen this patch:
> diff -u --new-file --recursive --exclude-from ../exclude linux.vanilla/drivers/net/3c509.c
> - /* Spin on the lock, until we're clear of an IRQ */
> - spin_lock_irqsave(&lp->lock, flags);
> + disable_irq(dev->irq);
> + spin_lock(&lp->lock);

> Are you sure you are not reinserting a bug? Using the irq_save
> spinlock would avoid that an irq handler start playing with the NIC
> while it was sending data (outsl(ioaddr + TX_FIFO, skb->data,
> (skb->len + 3) >> 2);) also in UP. I think this is the reason of the
> TX timeout errors under flood. So I think you should reverse the patch
> above (just done here ;).

The UP case was already safe: the interrupt safely restores the tx
context. It's taking the two paths in parallel on different CPUs which
kills things, and the new construct prevents that on SMP.


To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to
Please read the FAQ at