Re: 3c59x & Cat 4003 Ethernet Lockups

From: Matthias Urlichs (smurf@noris.net)
Date: Thu May 04 2000 - 09:58:43 EST


Hi,

Jeff Garzik:
>
> Something I was wondering... would the following make sense/be a good
> idea in today's net drivers?
>
I like the general idea, except for ...

> netdev_interrupt()
>
> stop card from generating interrupts (IntrMask &= ~(TX|RX))
> if (status & (TX|RX))
> mark tasklet/softirq
> { handle weird interrupts like RxErr, etc. }
>
... if you do it this way, any weird interrupt will lock out TX/RX.
Also, you increase latency, which is a Bad Thing.

Better:

> if (status & ~(TX|RX))
> { handle weird interrupts like RxErr, etc. }
> if (status & (TX|RX))
> process a number of packets, or until out-of-memory or whatever
> if (packets left)
> stop card from generating interrupts (IntrMask &= ~(TX|RX))
> mark tasklet/softirq

-- 
Matthias Urlichs  |  noris network GmbH   |   smurf@noris.de  |  ICQ: 20193661
The quote was selected randomly. Really.       |        http://smurf.noris.de/
-- 
Who would have predicted... that Dubcek, who brought the tanks in in
Czechoslovakia in 1968 is now being proclaimed a hero in Czechoslovakia.
Unbelievable. 
		-- Vice President Dan Quayle
                   Actually, Dubcek was the leader of the Prague Spring.

- 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 : Sun May 07 2000 - 21:00:14 EST