On Mon, Jul 01, 2002, Clemens Ladisch <[EMAIL PROTECTED]> wrote: > In Linux 2.4.18 with usb-uhci (v1.275), the following code will create > a TD with wrong toggle bit: > > urb->pipe = rcvbulkpipe( ... ); > urb->dev = dev; > usb_submit_urb(urb); > > /* optionally: receive some data and resubmit the urb */ > > usb_unlink_urb(urb); > > urb->dev = dev; > usb_submit_urb(urb); > > The submit call before the unlink will toggle the D0/D1 bit in > dev->toggle[]. The call after the unlink will then use the toggled bit > although the TD of the unlinked URB hasn't been completed successfully. > Consequently, the next packet to be received will be lost. > > (the code may look silly, but it is the equivalent of executing > insmod; ... rmmod; insmod) > > The same happens with uhci (v1.1).
Are you sure the TD didn't complete? uhci.c explicitly checks for that situation. While I won't claim it's completely bugfree, I think it's right. How did you determine the data toggle was the problem? A bus analyzer? JE ------------------------------------------------------- Sponsored by: ThinkGeek at http://www.ThinkGeek.com/ _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel