Florian Westphal wrote:
When transferring data at full speed, the DM9000 network interface
sometimes stops sending/receiving data. Worse, ksoftirqd consumes
100% cpu and the net tx watchdog never triggers.
Fix by spin_lock_irqsave() in dm9000_start_xmit() to prevent the
interrupt handler from interfering.

Signed-off-by: Florian Westphal <[EMAIL PROTECTED]>
---
 Actually the comments ('Disable all interrupts, iow(db, DM9000_IMR, IMR_PAR) 
etc)
 give the impression that the interrupt handler cannot run during 
dm9000_start_xmit(),
 however this isn't correct (perhaps the chipset has some weird timing issues?).
 The interface lockup usually occurs between 30 and 360 seconds after starting 
transmitting
 data (netcat /dev/zero) at full speed; with this patch applied I haven't been 
able
 to reproduce hangs yet (ran for > 2h).
 FTR: This is a dm9000 on XScale-PXA255 rev 6 (ARMv5TE)/Compulab CM-x255, i.e.
 a module not supported by the vanilla kernel. Tested on (patched) 2.6.18.

 dm9000.c |   25 +++++++------------------
 1 file changed, 7 insertions(+), 18 deletions(-)

applied


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to