[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: USB Isochronous Problem



Michael T. Francis wrote:
> 
> usb-host.c: Urbs are linked, ignoring.
> usb-host.c: Urbs are linked, ignoring.
> usb-host.c: Out of synch? Previous frame = 0, current frame = 1221
> Out of memory.
> 
> usb-host.c: error in rx desc->status, epid 2, first urb = 0xc0fe08a0
> 
> USB_IN_Desc at 0xc01c03d0
>   sw_len  : 0x0400 (1024)
>   command : 0x0000
>   next    : 0x401c03e0
>   buf     : 0x4017c0a0
>   hw_len  : 0x0001 (1)
>   status  : 0x02e2
> 
> usb-host.c: R_USB_EPT_DATA for epid 2 = 0x801e0883
> usb-host.c: Completing isoc urb with status -71.

I'm sorry; I can't see any obvious explanation as to why you get these 
rx errors yet.  Could you define USB_DEBUG_ISOC and USB_DEBUG_CTRL in 
usb-host.c, and add the following line:

   warn("R_USB_STATUS = 0x%x", *R_USB_STATUS);

to the lines you added previously in etrax_usb_rx_interrupt() (should be 
around line 1556).

[...]

> usb-host.c: error in rx desc->status, epid 2, first urb = 0xc0fe08a0
> 
> USB_IN_Desc at 0xc01c0400
>   sw_len  : 0x0400 (1024)
> Uncompressing Linux...
> Done. Now booting the kernel.

I guess the watchdog bites since we do these printouts with interrupts 
disabled, but as long as we're getting enough printouts before it bites 
it's not really a problem.

I'm also a bit worried about the "Out of memory" message.  Please check 
the if the device driver or your application relies on some heavy memory 
allocation.  I don't see any immediate connection to the rx errors you 
get, since the DMA in buffers are static, and every dynamic allocation 
in the host driver should be followed by an assert on the resulting 
pointer, but I think it's worth investigating.  (BTW, do you notice any 
applications being killed after the "Out of memory" message?)

-- 
Orjan Friberg
Axis Communications