On Wed, 15 Sep 2004 [EMAIL PROTECTED] wrote: > This is a description of each file attached to this post: > lspci.log lspci output, to give information on the USB controllers > that I use. > uhci-*.log Multiple copy of the content of /proc/driver/uhci/mycontroller. > Each step is described bellow. > usb-chief-traces.usb USB Chief analyser (from CATC) traces. > This log contains the USB traffic between the host and my > device > while reproducing the problem. > I can convert that file or provide you a viewer if you want. > In this log, the packet #99806 is lost, the packet #123824 is > received successfully (see bellow).
I don't have a viewer, but it doesn't matter. The uhci-*.log files were enough to show where the error is. As I suspected, it's a problem with the way data toggles are handled. > This is probably more that you asked but I would like to be sure that > you'll have > enough information to reproduce/solve the problem. > I have tested with an OHCI controller, everything looks working perfectly. > See the > lspci.log file, to get the reference of that controller. Try using the patch below and tell me if it helps. Alan Stern ===== drivers/usb/host/uhci-hcd.c 1.130 vs edited ===== --- 1.130/drivers/usb/host/uhci-hcd.c 2004-09-13 12:46:40 -04:00 +++ edited/drivers/usb/host/uhci-hcd.c 2004-09-15 12:14:06 -04:00 @@ -1477,7 +1477,7 @@ { struct list_head *head, *tmp; struct urb_priv *urbp = (struct urb_priv *)urb->hcpriv; - int prevactive = 1; + int prevactive = 0; uhci_dec_fsbr(uhci, urb); /* Safe since it checks */ @@ -1485,14 +1485,20 @@ * Now we need to find out what the last successful toggle was * so we can update the local data toggle for the next transfer * - * There's 3 way's the last successful completed TD is found: + * There are 2 ways the last successful completed TD is found: * * 1) The TD is NOT active and the actual length < expected length * 2) The TD is NOT active and it's the last TD in the chain + * + * and a third way the first uncompleted TD is found: + * * 3) The TD is active and the previous TD is NOT active * * Control and Isochronous ignore the toggle, so this is safe * for all types + * + * FIXME: The toggle fixups won't be 100% reliable until we + * change over to using a single queue for each endpoint. */ head = &urbp->td_list; tmp = head->next; ------------------------------------------------------- This SF.Net email is sponsored by: thawte's Crypto Challenge Vl Crack the code and win a Sony DCRHC40 MiniDV Digital Handycam Camcorder. More prizes in the weekly Lunch Hour Challenge. Sign up NOW http://ad.doubleclick.net/clk;10740251;10262165;m _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel