--- interrupt.c 2002/09/16 02:35:26 1.1 +++ interrupt.c 2002/09/16 02:38:47 @@ -463,6 +463,7 @@ int maxtx = TX_RING_SIZE; int maxoi = TX_RING_SIZE; int pid = smp_processor_id(); + int rxd = 0; unsigned int work_count = tulip_max_interrupt_work; /* Let's see whether the interrupt really is for us */ @@ -478,10 +479,14 @@ do { #ifdef EXTRA_STATS - record_interrupt_cause(dev, csr5); + if(!rxd) + record_interrupt_cause(dev, csr5); + else + record_interrupt_cause(dev, csr5& 0x0001ff3f); #endif - if (csr5 & (RxIntr | RxNoBuf)) { + if (!rxd && (csr5 & (RxIntr | RxNoBuf))) { + rxd++; /* Mask RX intrs and add the device to poll list. */ outl(tulip_tbl[tp->chip_id].valid_intrs&~RxPollInt, ioaddr + CSR7); netif_rx_schedule(dev);