David Brownell wrote:
> >> So, trying for some (bad) ASCII art here
> >>
> >>   TDs 1-4 submitted to ED,
> >>   HC completed a few (say, 1 & 2)
> >>
> >>         ed.tail ---------------------------+
> >>         ed.head ----------+                I
> >>                           I                I
> >>                           v                v
> >>         td1 -->  td2 --> td3 --> td4 --> dummy
> >>
> >> Where "td" is like td1, and clearly is not the first TD in
> >> the queue.

Here's what I'm seeing now.

kernel: ohci_hcd 0000:00:13.0: IRQ INTR_SF lossage
kernel: ohci_hcd 0000:00:13.0: done_head:0x0
kernel: finish_unlinks
kernel: finish_unlinks: 0x3e3d440 != 0x3e3d400
kernel: finish_unlinks:skip ed c3e3e280
kernel: ohci_hcd 0000:00:13.0: leak ed c3e3e280 (#82) state 0 (has tds)
kernel: ohci_hcd 0000:00:13.0: free td c3e3d400
kernel: ohci_hcd 0000:00:13.0: freed
kernel: ohci_hcd 0000:00:13.0: stalled endpoint, ed c3e3e280 state 0x1
type intr; next ed 00000000
kernel: ohci_hcd 0000:00:13.0:   info 08405123 MAX=64 DQ SKIP EP=2-IN
DEV=35
kernel: ohci_hcd 0000:00:13.0:   tds: head 03e3d400 DATA0 tail 03e3d400
kernel: ohci_hcd 0000:00:13.0:   -> td c3e3d440; urb c3f39840 index 0;
hw next td 00000000
kernel: ohci_hcd 0000:00:13.0:      info 02140000 CC=0 DATA0 DI=0 IN R
kernel: ohci_hcd 0000:00:13.0:      cbp 03e69505 be 03e6951f (len 27)


As I understand it, the HC will not do any queue processing while HeadP
and TailP are equal (which is the case here; they are both pointing to
dummy). This explains why nothing is happening - the HC will never do
anything more with this endpoint because it doesn't know that the HCD
has added anything to the queue.

To enqueue a new TD, the HCD fills the old dummy TD and appends a new TD
to the end of the list. It should then update TailP. It *looks* like the
HCD appended a TD to the queue next but didn't update ed->dummy or
TailP.

Does that make any sense?

Mike

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to