Hello,

While trying to write a linux driver for my USB device on kernel 2.4.30, I
noticed that doing an usb_unlink_urb on a bulk IN endpoint, and then
submitting a new urb later, causes the next packet of data on that
endpoint to be lost. I see the packet on my USB bus analyzer, but I don't
get the completion callback in the driver.

It appears to be caused by the fact that Linux has performed the data
toggle on that endpoint even though there was never any data received.
When the packet comes in, it decides that it has the wrong toggle bit, and
discards it.

I can work around this by replacing the usb_unlink_urb() by the following
sequence:

        usb_unlink_urb()
        usb_submit_urb()
        usb_unlink_urb()

That works, but it's not very elegant.

Regards,
Arlet





-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel

Reply via email to