[vortex-bug] Tx int. mitigation

Donald Becker becker@scyld.com
Thu, 14 Dec 2000 13:31:06 -0500 (EST)

On Thu, 14 Dec 2000, Bogdan Costescu wrote:
> On Thu, 14 Dec 2000, Donald Becker wrote:
> > We need some way to scavenge Tx skbuffs in a timely manner, even if we are
> > not receiving packets.
> I see several solutions:
> - do it while processing other (mostly Rx) interrupts

Many of my drivers take this approach for the normal case, but they always
have a fall-back that handles the no-Rx case.

Imagine having only one TCP connection open, and losing a burst of packets.
The other end doesn't get any packets, and therefore doesn't send you
anything.  You don't retransmit because the skbuffs still appear to be in the
Tx queue.

> - use the Countdown timer to generate an interrupt periodically, but not
> very fast, say, once a second
> - use a timer/kernel thread to come back and check for packets in the Tx
> ring

Both are bad...

> How precise the timing should be ? Is it OK to keep the skbuff alocated
> one second (or so) more after it was transmitted ?

because we are talking at least 10msec, which is far too long.
The only reasonable solution is to set the Boomerang hardware timer with an
estimate of how much time before we send a few (2-4) packets.  I fear that
the code to handle potential race conditions is pretty ugly.

> > Additional issue: Debugging is easier if the Tx statistics are correct.
> If we do it right, we don't need debugging 8-))

Oh, silly person.  The assumption is that we are _perfect_.
The debugging is always for bad IRQs connections, non-bus-master slots and
bad cables.

Donald Becker				becker@scyld.com
Scyld Computing Corporation		http://www.scyld.com
410 Severn Ave. Suite 210		Second Generation Beowulf Clusters
Annapolis MD 21403			410-990-9993