Hi Johannes,
while fiddling with interrupt in/out in 2.3.99pre6, I found what I
believe is a bug in uhci.c. My interrupt transfers were going at twice
the rate they should have. The device under test was a low-speed
joystick with pretty sick D/A converters (constantly sending jittery
reports). I had an Interrupt Transfer set up to get a packet and store
the data coming in. As an experiment, I added code which increments a
counter, and when it reaches 125 it prints the number of jiffies for
those 125 reports.
The device under test is, as mentioned, low-speed USB, with an interval
of 10ms. This value gets rounded down to the 8ms queue, right? So, for
125 transfers back to back I would expect 1000ms (or 100 jiffies on my
Celeron). Well, the AFS usb-uhci gave me very precisely that number,
while your uhci gave me 50. The same also happens for interrupt out
(that's when I really noticed it - the joystick didn't feel right). I
haven't tried on OHCI yet.
Attached is a patch against 2.3.99pre6 which fixes this issue - however,
as I am not very familiar with neither your code nor the UHCI low-level
specs, it might introduce problems. Please review carefully -
fortunately it's a one-liner ;-)
Thanks,
..tom
PS: Your driver honors the completion routine returning with an interval
of 0 as I expect, with terminating the interrupt-transfer-recycling,
whereas the AFS usb-uhci does continue to do transfers. That'll be my
next area of investigation.
int_speed.diff
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]