On Fri, 22 Aug 2003, Karsten Wiese wrote: > the FIX is to initialise status in uhci_submit_bulk() like this: > /* 3 errors if there is a timeout else 0; > UHCI Spec says: 0 == unlimited errors > VIA-chip 1106:3038 needs 0 for urbs that should not timeout! > */ > status = TD_CTRL_ACTIVE | ((urb->timeout ? 3 : 0) << > TD_CTRL_C_ERR_SHIFT);
I have seen these sort of errors when there was an EMI spike. I got this with a device which is self powered and has a connection to the ground of the power supply cable. The spike was induced in the ground loop of PC, device and USB cable. This spike maybe last 10 ms. If an USB transfer gets no NAK from the device due to the spike, the transfer is retried and the error count decremented. My VIA controller does all 3 retries very fast, back-to-back. So the third try timed out before the spike was gone. 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). Greg, how about doing an additional retry in the HCD? It will make the whole USB more reliable. 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