Ugh, all the spinlock additions in 8390.c (2.1.131ac7) didn't fix the 
actual, described problem of corrupting the multicast table in my DP box.  It 
still stops playing with its AppleTalk friends after some floodpings.  The 
patch below fixes the problem, although not in the best possible way.
        While on the topic of 8390 spinlocks: under some very heavy network abuse, 
it is still possible to get the "eth0: Reentering interrupt handler"... 
message, which isn't good but it seems to survive.

                                                                        -- Eugene


--- drivers/net/orig_8390.c     Thu Dec 10 02:20:48 1998
+++ drivers/net/8390.c  Thu Dec 10 02:51:54 1998
@@ -237,8 +237,17 @@
        length = skb->len;

        /* Mask interrupts from the ethercard. */
+#ifdef __SMP__
+       /* Not using the lock_8390_page functions to avoid useless work */
+       /* Note: must ensure page 0 here or risk mcast table corruption */
+       disable_irq(dev->irq);
+       spin_lock(&ei_local->page_lock);
+       outb_p(0x00, e8390_base + EN0_IMR);
+       spin_unlock(&ei_local->page_lock);
+#else
        outb_p(0x00, e8390_base + EN0_IMR);
        disable_irq(dev->irq);
+#endif
        synchronize_irq();
        if (dev->interrupt)
        {
-
Linux SMP list: FIRST see FAQ at http://www.irisa.fr/prive/mentre/smp-faq/
To Unsubscribe: send "unsubscribe linux-smp" to [EMAIL PROTECTED]

Reply via email to