A little update on the Ethernet under heavy load problem.
I finally traced down the "problem" to interrupt handling routine
tulip_interrupt().   When there are a lot of packets coming in
from the net (because my stress test program or benchmark
program is flooding the ethernet port), the interrupt handler
doesn't handle this gracefully.  It has a single global that
indicates the desired work load to handle each time the
handler is called (perhaps to limit spending too much
time in interrupt handler).  This is 'max_interrupt_work'
which is aliased to work_budget.  Needless to say when
flooding, we run out of work_budget.  The handler clears
all interrupts when this happens and returns.  I am not
sure if this is graceful enough -- it certains makes the
driver no longer function properly (I/O doesn't happen
correctly any more).  

To solve my particular problem (of surviving all the torture
test I have here), I hacked up a couple of parameters:
namely RX_RING_SIZE and max_interrupt_work.  I increased
these values and so far everything seems to work very
stable.  No, I'm not going to say what numbers I'm using
because it's such a horrible way of "fixing" the problem.
I'm just mentioning this here in case someone else wants
to "pass" things like netperf and netbench (gasp!).

-- 
Hwa Jin Bae
PSO Systems Inc
mailto:[EMAIL PROTECTED]
http://www.pso.com
unsubscribe: body of `unsubscribe linux-arm' to [EMAIL PROTECTED]

Reply via email to