Subject: Re: port-macppc/28870: Tulip driver generating "tlp0: receive ring overrun" messages, severe network slowdown
To: None <pcronin@loyola.edu>
From: Nozomu Ando <nand@mac.com>
List: netbsd-bugs
Date: 03/03/2005 12:59:24
I had the problem here too, on a PowerMac G3/DT with a PCI NIC (Realtek 
8169S).

It seems to work fine here now with the following patch.

Nozomu Ando
---
Index: extintr.c
===================================================================
RCS file: /cvsroot/src/sys/arch/macppc/macppc/extintr.c,v
retrieving revision 1.50
diff -u -r1.50 extintr.c
--- extintr.c   21 Jan 2005 03:22:13 -0000      1.50
+++ extintr.c   3 Mar 2005 03:53:03 -0000
@@ -199,18 +199,20 @@
gc_read_irq()
{
         uint32_t rv = 0;
+       uint32_t int_state;
         uint32_t events, e;
         uint32_t levels;

         /* Get the internal interrupts */
-       events = in32rb(INT_STATE_REG_L) & ~intr_level_mask;
+       int_state = in32rb(INT_STATE_REG_L);
+       events = int_state & ~intr_level_mask;

         /* Get the enabled external interrupts */
         levels = in32rb(INT_LEVEL_REG_L) & in32rb(INT_ENABLE_REG_L);
         events = events | (levels & intr_level_mask);

-       /* Clear any interrupts that we've read (and all external ints) 
*/
-       out32rb(INT_CLEAR_REG_L, events | intr_level_mask);
+       /* Clear any interrupts that we've read */
+       out32rb(INT_CLEAR_REG_L, events | int_state);
         while (events) {
                 e = 31 - cntlzw(events);
                 rv |= 1 << virq[e];