On 10/8/06, Christopher Monty Montgomery <[EMAIL PROTECTED]> wrote:

> Right now, that attempt would be outright rejected.  ehci-sched will
> not (and never would) schedule into the currently active frame.  In
> fact, it would not schedule into any frame within 'SCHEDULE_SLOP' of
> the active frame.  I did not change that behavior.

Actually, I erred slightly above; the original ehci would not perform
initial scheduling less than SCHEDULE_SLOP frames out, but if a
schedule had already been planned, it would not do any checks before
filling a slot.  So it would try to schedule current frame, I believe.

So, I did change the behavior and that's an error in my code; it
should not be enforcing that were' *always* at least SCHEDULE_SLOP
deep.  Chalk up one more bug in the patchset.

More importantly, this might explain why low latency never worked.
There were always constant xruns that ALSA didn't detect.  Please
sanity check this thinking, but it explains what I observed (every
submission had to reschedule)...

When sample and playback are lockstep (read 64 samples, process, write
them for playback, read next 64 samples, process, write them for
playback), we will only ever be one URB deep.  There will never be
another URB waiting.  So, every read and every write will complete the
'last' URB and shut the stream down.  Not only does that force
rescheduling, but it also means that due to the SLOP, it could not
possibly be scheduled for the next slot.  There would always be a gap.

Is this a plausible explanation?  I can put a little time in tomorrow
demonstrating one way or the other with certainty if so...

Monty







>
> > No way to know until the
> > > microframe is finished.  The only way ehci-hcd can make an accurate report
> > > in this case is to _always_ report that the slot was missed -- not even
> > > _try_ to add it into the hardware schedule -- even if it might have been
> > > possible for the slot to be filled.
>
> ...or check the uframe clock when the schedule is complete and if it
> still precedes the slot...
>
> [or are you worried about caching and propogation of changes?]
>
> > Actually that's a good description of the case where that -EXDEV fault
> > might reasonably be reported at completion.
>
> Yes, agreed, if we really can't reliably figure it out ahead of time.
>
> > And I was wrong about EHCI (at least) reporting that ... since that's
> > the initial value for each (micro)frame's transfer status, EHCI will
> > report that when collecting an ITD that sitll has ITD_ACTIVE set.
> > But, hmm bug!, not (yet) SITDs with SITD_ACTIVE.  (Monty, that would
> > seem to be something you might fix in one of your patchsets ... it's
> > trivial, but I don't want to create needless problems for your patches!)
>
> Yes, good catch.  I'll make that change.
>
> Monty
>
> >
> > - Dave
> >
> >
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
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