On Friday 19 May 2006 2:22 pm, Alan Stern wrote:

> However it does point out a weak area of the Gadget API.  Typically ISO 
> transfers involve time-sensitive data.  That is, if a transfer fails you 
> prefer to ignore the failure rather than spending time to fix it.

And for ISO, the hardware is supposed to go immediately to the next
transfer ... when the controller driver reports such issues to the
gadget driver, the gadget driver already knows "it's ISO" and so it
would at most feed the fact of an error into some algorithm that's
trying to improve data stream robustness.  Maybe it'd use one of
the feedback mechanisms to trigger transmit of a new key frame.


> But the Gadget API doesn't provide any simple way to specify time 
> limits for ISO submissions.  If the gadget driver wants to send 100 
> packets at roughly 1-ms intervals, it can't tell the controller driver to 
> forget about a packet that doesn't complete within its 1-ms window. 

That's a job for hardware, not software.  I think it's why a lot
of the full speed ISO devices are hard-wired at 1-msec intervals;
they discard the ISO data if it's not been collected, switch to
the next packet (double buffered, yes?), and even handle cases like
a missed SOF by synthesizing one and updating the frame counter.


> If  
> a transfer request isn't received from the host, all the remaining 
> packets in the queue will be delayed until the current packet can be sent.
> 
> Or am I misunderstanding something?

I think it's just an issue of hardware quirks.  If the net2280 driver
has that issue, it may need a software workaround.  It's easy to see
how to do that for periodic transfer rates of N-msec (N integral),
but for microframe periods (e.g. one iso packet every other microframe)
that's not quite so obvious...

- Dave


_______________________________________________
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