Matthias: After re-reading the USB protocol description, it became clear that the problem you've been having with lost interrupt packets really must be a data toggle issue.
Here's how it works. In one of your bus traces you showed the device sending a DATA1 token with interrupt data that the HCD never received. Assume that the toggle settings were mismatched, so the HC was expecting a DATA0. What would happen in that case? The HC would see the DATA1 PID and assume that the device was resending old data. So the HC would respond with an ACK but ignore the data and leave the transaction active. Sooner or later it would retry. But now the device, having gotten the ACK, would think the host received the interrupt data and thus would clear its output buffer. Having no data, it would just send a bunch of NAKs. As a result the data would be permanently lost, just as you saw. It's not clear what might be causing this mismatch between the toggle settings. The fact that the device was sending DATA1 when the host was expecting DATA0 indicates that the host's toggle was reset somewhere while the device's wasn't. Is it possible that something in the open or release functions in your driver could be doing this? Other things that affect the toggle setting include: set-configuration, set-interface, clear-halt. Maybe by adding printk statements at appropriate places in the driver you can monitor the toggle value and find out where it changes (or fails to change). Alan Stern ------------------------------------------------------- This SF.net email is sponsored by: IBM Linux Tutorials. Become an expert in LINUX or just sharpen your skills. Sign up for IBM's Free Linux Tutorials. Learn everything from the bash shell to sys admin. Click now! http://ads.osdn.com/?ad_id=1278&alloc_id=3371&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel