On Tue, 2 Jul 2013, Ming Lei wrote: > On Mon, Jul 1, 2013 at 10:48 PM, Alan Stern <stern@xxxxxxxxxxxxxxxxxxx> wrote: > > On Mon, 1 Jul 2013, Ming Lei wrote: > > The fact that the delay is small doesn't matter -- what's important is > > that it will be > 0 whereas now there is no delay between completion > > and resubmission (in fact, the resubmission occurs before the > > completion ends). > > Yes, that is the change tasklet is bringing, so looks we need to find a way > to distinguish streaming-on from underrun when stream->td_list becomes > empty in iso_stream_schedule(). The difference will be the URB_ISO_ASAP flag. The flag should be set in the first URB of a new stream. It should not be set in any other URBs, unless the client driver doesn't care about losing synchronization when an underrun occurs. > >> > Thus, for example, even if the pipeline contains only a single URB, > >> > with the current code it will not become empty. But with the new code > >> > it will. If the load on the system is too high, the pipeline could > >> > empty out even if it normally contains two or more URBs. > >> > >> Single URB may not work well too when running complete() in hard > >> irq context. > > > > It could work very well indeed, if the interval between URBs was larger > > than 1 ms. > > It is too fragile so that single isoc URB is seldom used, isn't it? Maybe not for isochronous. Interrupt transfers almost always use a single URB, though, and they don't have any trouble. Alan Stern -- To unsubscribe from this list: send the line "unsubscribe linux-usb" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html