> I'm puzzled about this thread.  As I understand the discussion, seems that
> someone is using an interrupt out for a small amount of data and, for some
> unknown reason, the last data packet is being resent on each "interrupt"
> interval. ...

There are some known reasons this failure mode might happen ...


> So, if the hardware is working correctly, the only thing that should cause
> the last packet to be resent is if the driver has made a mistake.

Yes.  Such as not unlinking the interrupt URB when all the INTR-OUT
data had been sent.  (Such a mistake is somewhat understandable,
considering the history of INTR-OUT transfers, and the fact that it's
currently rude to unlink these portably.)  But if this were happening
for an INTR-IN transfer, I'd suspect a device firmare bug.


> BTW, the purpose of the interrupt endpoint is to provide guaranteed latency.
> When combined with an allowed packet size, this just happens to give
> guaranteed bandwidth.  However, because of the possibility of errors and
> retries, the bandwidth is not the guaranteed throughput but simply a
> guarantee of access to bandwidth.

So likewise, it's not exactly a "guarantee" of latency ... at least, not
from the perspective of the drivers that want it!   Neither maximum
latency (due to error recovery) nor minimum latency (period 20
often shrinks to 16) is guaranteed for interrupt transfers.  :)

But that's a good clarification.  Both kinds of periodic transfer
(INTR and ISO) pre-schedule transfers, so best (and typical) cases
see better latency and throughput.  Since ISO doesn't retry, it gets
more consistent driver-visible latency, but the cost is more reports
of failed transfers.  But in both cases, the bandwidth is reserved,
so if there are no errors at least bus-level latency is guaranteed.

- Dave



_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to