Alan,
There is an initialisation problem in this driver which could cause
machine lockups under heavy load. I recommend that the fix be fed back
into 2.2.
Details are at http://www.wcug.wwu.edu/lists/netdev/200004/msg00019.html
Briefly, the initialisation is not masking off the RxComplete bit in the
3c905 interrupt enable register. This creates a small time window in
which it is visible to the processor. If the driver is serving a 3c905
and an updateStats or error interrupt happens to coincide with packet
reception, the ISR will call vortex_rx() and never return.
The patch is attached.
I believe this problem also affects 3c515.c, but a fix is a little more
complex and I don't have the gear to test it.
--- linux-2.2.15-pre9/drivers/net/3c59x.c.orig Thu Apr 6 12:39:17 2000
+++ linux-2.2.15-pre9/drivers/net/3c59x.c Thu Apr 6 12:41:16 2000
@@ -1163,7 +1163,8 @@
(vp->full_bus_master_tx ? DownComplete : TxAvailable) |
(vp->full_bus_master_rx ? UpComplete : RxComplete) |
(vp->bus_master ? DMADone : 0);
- vp->intr_enable = SetIntrEnb | IntLatch | TxAvailable | RxComplete |
+ vp->intr_enable = SetIntrEnb | IntLatch | TxAvailable |
+ (vp->full_bus_master_rx ? 0 : RxComplete) |
StatsFull | HostError | TxComplete | IntReq
| (vp->bus_master ? DMADone : 0) | UpComplete | DownComplete;
outw(vp->status_enable, ioaddr + EL3_CMD);
-
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/
This archive was generated by hypermail 2b29 : Fri Apr 07 2000 - 21:00:16 EST