On Saturday 23 August 2003 12:19, Martin Diehl wrote:

[Retry problem on VIA controllers]

> I was just going to write a similar reply. IMHO this is an issue which is
> generally underestimated. Any long-living transfer might run into this
> problem. F.e. if there is an INT IN scheduled to poll some input activity,
> this transfer might be active for seconds, minutes or even longer. All it
> needs is three spikes on the wire to make the urb failing with EILSEQ.
>
> Ok, seems VIA does the retries fast enough so a single spike could be
> sufficient. This explains why this is sometimes seen with VIA but not
> Intel. However the issue is still there anyway. It's just depending on how
> noisy the environment is.

Yes.

> IMHO it's the drivers job to be prepared to get these errors and recover
> appropriately. IIRC there is also an Application Note on Cypress' website
> describing this issue and how driver should be prepared to handle this,
> particularly for long-living transfers.

> > I think it would be wise to add another level of retries on top of the
> > controller timeout, in the HCD. If you have no HCD support for this sort
> > of failure, you can try to use a kernel timer and retry the URB from
> > within your driver. (Note that for this to work, the device must be able
> > to resend the information from the last transfer).
>
> Not sure about this. This might get pretty messy with queued requests.
> IMHO when the urb gets stopped due to error retry count reached, the HCD
> should just stop further urbs queued for this endpoint and let the driver
> recover.

Have you had a deep look inside it?

At HCD level, recovering is easy because I can continue at the exact location 
of the error. This might not be possible inside the device driver. Also,
data recovery from the destroyed paket may not be possible if the device
has no intact copy of the data at retry time.

And there is another benefit of doing it in HCD: all device drivers will get 
the desired behaviour at once. Make the life easy for device driver writers!

best regards
Wolfgang M�es



-------------------------------------------------------
This SF.net email is sponsored by: VM Ware
With VMware you can run multiple operating systems on a single machine.
WITHOUT REBOOTING! Mix Linux / Windows / Novell virtual machines
at the same time. Free trial click here:http://www.vmware.com/wl/offer/358/0
_______________________________________________
[EMAIL PROTECTED]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to