On Monday 09 October 2006 7:46 pm, Alan Stern wrote:
> On Mon, 9 Oct 2006, David Brownell wrote:
> 
> > > > > I don't like the idea of having two separate pathways for reporting 
> > > > > the
> > > > > same kind of error.  If one reporting technique is reliable and 
> > > > > another
> > > > > isn't, why keep the unreliable one?
> > 
> > Both mechanisms being dicussed are reliable within their domains.
> 
> That's a very wishy-washy comment.  "This technique doesn't always work, 
> but whenever it does work it is reliable."

Not trying for accurate paraphrases, are we then ... ?  That's not at
all what I said; neither in meaning nor in intent.

Could you explain just why it is you so dislike the notion of reporting
faults at submit time ("early") when that's possible?  


> The lengths of underruns are generally biased toward low numbers, right?  
> The most common length is 0 (no underrun), and the next most common is 1 
> slot.

Zero is not an underrun and would not be reported as such!!

And yes, well written drivers won't hit underruns very often at all,
and any happening would be "short".  Not necessarily just one slot;
when the slots are one microframe apart, there'd be more variability.


> Now I don't have hard numbers to support this, but I rather suspect that 
> the amount of work involved in returning an error code and then doing a 
> special jump forward by 1 slot is more than the amount of work involved in 
> simply accepting the data, queuing it uselessly, and blindly moving on.

Hmm, "queueing uselessly" is not the same as ISO_ASAP ... you're talking
about a different ISO scheduling policy here.  Consider two ISO urbs U1
and U2, with packets P1a..P1g and P2a..P2g respectively, intended to go in
slots 1..14 as S(1) = P1a, ... S(7) = P1g, S(8) = P2a, ... S(14) = P2g.

Now assume that after slot 7 there's a dropout of 2 frames.  There are
two ways I think we're talking about, after S8 = empty, S9 = empty:

  ISO_ASAP:     S(10) = P2a, S(11) = P2b, ................... S(16) = P2g
  "uselessly":  S(10) = P2c, S(11) = p2d, ... S(14) = P2g

So at some level the question is just "who implements the skip" involved
in forcing that "useless" notion:  HCD (new sched policy), or driver.
And similarly, whether the system needs to waste time computing the data
that will have been skipped.

For the moment, I'm assuming "not the HCD", to avoid defining and
implementing another ISO policy ... one that would apply only on a
particular resubmit/fault path (and thus be error prone), pruning
out some of the packets the driver said to transmit.


> In any case, missed slots do _not_ turn into delayed/out-of-phase data.  
> They are just missed, or as you say, pure dropouts.

Only if you assume there's a new ISO scheduling policy.  ISO_ASAP *would*
turn into delayed/out-of-phase data, since nothing would be pruned.  If
you consider a series of URBs 0-9 with some dropouts:

        0123456789              ... no dropouts
        0_1_2_3_4_5_6_7_8_9     ... dropouts are "_", no pruning
        0_2_4_6_8_              ... dropouts are "_", with pruning

That second case is strict application of ISO_ASAP, without any code
to prune out phase errors.  The third case assumes someone (and in
my model, not the HCD) does that pruning.


> > I don't know that Linux makes use of the explicit feedback channel that's
> > implemented by interrupt transfers going the opposite direction to the
> > ISO transfers, but such mechanisms are certainly spelled out in the USB
> > spec ... and they clearly spend extra processing to achieve more accurate
> > synchronization.
> 
> I'm not sure what you mean.  The only synchronization mechanism I remember 
> in the USB spec has to do with synchronizing the clocks of multiple host 
> controllers.  That's not directly related to what we're discussing...

See section 5.12.4 of the usb 2.0 spec where different feedback models
for iso endpoints are discussed; all of section 5.12 is relevant.

- 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