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
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel