On Mon, May 13, 2002, David Brownell <[EMAIL PROTECTED]> wrote:
> ... or at least deserving of deletion in the 2.5 series.
>
> For starters, it's always been superfluous. "audio.c" has always
> done ISO streaming without using urb->next. It just queues a
> bunch of ISO urbs, and the completion handler resubmits them
>
> Here's how the ISO transfers are handled today by device drivers
> that use urb->next:
>
> - Prepare a bunch of ISO urbs
> - Set them up in a ring using urb->next
> - Queue all the driver's ISO URBs at once
>
> Host controller drivers, after issuing urb->complete for an ISO
> urb with an urb->next value:
>
> - Make sure the ring isn't broken (*)
> - If not, resubmit the URB (**)
> - Swallow all errors
>
> (*) There are some minor differences in how the HCDs do this
> check. Some have ring size limits, some don't insist on
> having a ring. Portable drivers don't rely on such differences.
> (**) This isn't like the interrupt case, which can get lots of short
> circuiting.
>
>
> PROBLEMS with that current scheme include:
> - Clearly the urb->next is superfluous. The real work
> is queuing ISO urbs (like for bulk, and often control).
> - Swallowing errors is an evil principle. Better to have
> clean reporting paths.
> - Having that second mechanism for URB queuing has
> just confused new developers.
> - Those HCD differences aren't current problems, but
> they should still go away.
> - Removing urb->next support would simplify the host
> controller drivers.
I completely and wholeheartedly agree.
> > It sounds like we should probably move some of the checks from
> > hcd_submit_urb into usb_submit_urb so they cover all of the HCD's?
>
> Ideally, _all_ of the checks would move. The ONLY trouble spots I know
> of today relate to ISO.
>
> My proposal is as follows:
>
> - Drivers should stop using urb->next, and should instead
> just re-queue ISO urbs in their completion handlers. They
> can then at least detect the resubmit errors that would be
> swallowed today.
>
> - At the same time they should change to init urb->interval
> correctly.
>
> - In usbcore, delete the urb->next field. And make all the
> HCDs stop using it.
>
> - At some point move the hcd_submit_urb logic
> into usb_submit_urb, geting rid of that particular
> entry point in the hcd layer. (That will let the "old
> style" hcds get rid of many/most submit-path error
> checks ... roughly at the same time they start to
> use urb->interval for iso.)
>
> Right now, HCDs using hcd_submit_urb() will report errors if
> there are urb->next values, or urb->interval isn't set.
>
> So far as I know, these change would only affect the USB vide
> drivers -- audio behaves already -- and the "old style" HCD.
> ("ohci-hcd" is set already.)
>
> So you can see how small the effect on device drivers is, I
> attach a patch showing how to make the 2.4 version of
> "cpia_usb" work this way. (I've got a 2.5 version too, but
> nobody would see that work because of the other issues
> preventing USB video from working on 2.5 ... :)
Could you explain what urb->interval is used for with respect to ISO
URB's?
It's still documented (Documentation/usb/URB.txt) as being significant
for Interrupt URB's only and I can't think how it would apply to ISO
URB's?
JE
_______________________________________________________________
Have big pipes? SourceForge.net is looking for download mirrors. We supply
the hardware. You get the recognition. Email Us: [EMAIL PROTECTED]
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel