Messages in this thread | | | Date | Mon, 7 Dec 1998 16:56:00 GMT | From | "Stephen C. Tweedie" <> | Subject | Re: 2.1.131-ac3 3c509 no irq_save in the sender code |
| |
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/
| |