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

Stephen C. Tweedie (sct@redhat.com)
Mon, 7 Dec 1998 16:56:00 GMT


Hi,

On Sat, 5 Dec 1998 11:46:05 +0100 (CET), Andrea Arcangeli
<andrea@e-mind.com> 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 linux.ac/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.

--Stephen

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/