On Thu, 7 Jul 2005 [EMAIL PROTECTED] wrote:

> I've not been posting a lot since my current mailer config seems
> to be making linux-usb-devel reject posts to the list; happened
> rather suddenly about a week ago, unclear what changed, so I've
> been lazy tracking it down.
> 
> So I suspect this won't get to the list ... though with luck it'll
> get to both of you!

I got it okay.  The only obvious difference with respect to your earlier 
emails is in the envelope sender.  This one was from 
<[EMAIL PROTECTED]> whereas earlier ones were 
from <[EMAIL PROTECTED]>.  Of course, email blacklisting may play a part.

> In response to the question:  there's only one place in the source
> code which reports that error.  Are the comments there unclear?

Here's what that region says:

        now = readl (&ehci->regs->frame_index) % mod;

        /* when's the last uframe this urb could start? */
        max = now + mod;

Those two values are pretty clear.

        /* typical case: reuse current schedule. stream is still active,
         * and no gaps from host falling behind (irq delays etc)
         */
        if (likely (!list_empty (&stream->td_list))) {
                start = stream->next_uframe;

I suppose that's when the first TD for this URB is supposed to be sent.

                if (start < now)
                        start += mod;

Meant to handle sequence-space wrap-around?  Does this handle actual 
overruns correctly?

                if (likely ((start + sched->span) < max))
                        goto ready;

I don't understand this at all.  What's sched->span?  Does that simply 
mean the requested time is not so far in the future that you can't add it 
to the schedule yet?

                /* else fell behind; someday, try to reschedule */
                status = -EL2NSYNC;
                goto fail;
        }

And this is the failure path of the unclear test.  All I get from the 
comment is that something fell behind something else.  It's not clear 
who was late, and the "try to reschedule" part is confusing too.  How can 
ehci-hcd try to reschedule an ISO stream that's supposed to follow a 
strict sequence of transmission times?

> Basically the system fell behind in processing the ISO requests,
> I suspect because your driver didn't keep the queue deep enough to
> cover the IRQ latencies.  Keep a few more URBs queued -- or maybe
> just bigger ones -- and the issue ought to go away.

If I understood the previous test right, the caller tried to submit an URB
for too far in the future.  This doesn't jibe with your explanation.

Alan Stern



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
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