patch-2.4.25 linux-2.4.25/drivers/net/8139cp.c
Next file: linux-2.4.25/drivers/net/8139too.c
Previous file: linux-2.4.25/drivers/message/fusion/scsi3.h
Back to the patch index
Back to the overall index
- Lines: 34
- Date:
2004-02-18 05:36:31.000000000 -0800
- Orig file:
linux-2.4.24/drivers/net/8139cp.c
- Orig date:
2003-11-28 10:26:20.000000000 -0800
diff -urN linux-2.4.24/drivers/net/8139cp.c linux-2.4.25/drivers/net/8139cp.c
@@ -615,8 +615,10 @@
if (cpr16(IntrStatus) & cp_rx_intr_mask)
goto rx_status_loop;
- netif_rx_complete(dev);
+ local_irq_disable();
cpw16_f(IntrMask, cp_intr_mask);
+ __netif_rx_complete(dev);
+ local_irq_enable();
return 0; /* done */
}
@@ -643,6 +645,12 @@
spin_lock(&cp->lock);
+ /* close possible race's with dev_close */
+ if (unlikely(!netif_running(dev))) {
+ cpw16(IntrMask, 0);
+ goto out;
+ }
+
if (status & (RxOK | RxErr | RxEmpty | RxFIFOOvr)) {
if (netif_rx_schedule_prep(dev)) {
cpw16_f(IntrMask, cp_norx_intr_mask);
@@ -664,7 +672,7 @@
/* TODO: reset hardware */
}
-
+out:
spin_unlock(&cp->lock);
return IRQ_HANDLED;
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)