[vortex] 3c905c hang (part 3) possibly identified

Kambo Lohan kambo77@hotmail.com
Tue Jan 14 13:51:01 2003


first of all: to produce the problem, we put a 905c into promiscuous mode 
and did not assign an ip.  it is only a sniffer and never sends anything.  
we lowered the max_interrupt_work to 3 (just to test) and flooded it, on an 
isolated 100mbps hub.  after 2 too much work in irq messages the card would 
then not rx any packets, merely add them up as overruns.  we would have to 
down and up it again to get it to rx.

solution:
We believe the driver is not removing the card from upstall status.  Looking 
at the vortex-diag output when the card is hung, the register at offset 0x30 
- uppktstatus - indicates upStalled and upPktComplete.

Vortex chip registers at 0xdc00
  0xDC10: **FIFO** 00000000 00000000 *STATUS*
  0xDC20: 00000020 00000000 00080000 00001404
  0xDC30: 0000a000 7cf5830b 07430900 00080004

As a temporary patch, we added this line to the (status & IntReq) handler in 
vortex_error():

boomerang_rx(dev);

because boomerang_rx is the only place which seems to issue an unstall 
command.  we verified boomerang_rx is what is being called on rx with this 
905c (kind of surprised us).  anyway this patch solved the problem of the 
card not rx'ing any more after the too much work in irq shutdown.   once the 
intreq handler restores the irq enabling AND calls boomerang rx to issue the 
unstall the card starts rxing again.



_________________________________________________________________
MSN 8: advanced junk mail protection and 2 months FREE*. 
http://join.msn.com/?page=features/junkmail