On Sun, 25 Jul 2004, Tuukka Toivonen wrote: > I'm puzzled with the new behaviour in 2.6.7 kernel; it worked in > 2.6.x (x<=6) and 2.4.x kernels. I'm writing an USB camera driver > which streams frames using isochronous transfer mode. > > The interrupt handler is called every 0.01 second normally (10 packets in > each URB); but if the driver sleeps (by calling > wait_for_event_interruptible) sometimes there is a 0.95 second pause in the > isochronous interrupts, and data sent by the camera is lost. The > wait_for_event_interruptible is called from V4L1 read()/ioctl() function > implementation. > > Between the 0.95 second pause between calling schedule() > (inside wait_for_event_interruptible) and the isochronous > interrupt, there are no other kernel messages (I have > "USB verbose debug messages" enabled)
To narrow down the possible causes, you could try adding a printk() statement to the UHCI driver's interrupt routine. Put it in drivers/usb/host/uhci_hcd.c:uhci_irq() following the fourth line of executable code (the one with the /* Clear it */ comment). This will generate a lot of output, but you will be able to watch it and see if the interrupts stop arriving during the call to wait_for_event_interruptible. If the interrupts do stop, that points to a problem somewhere outside the USB subsystem. Several interrupt-handling bugs in ACPI have been fixed recently; maybe 2.6.8 will work better. It would also explain why have problems in one computer but not another; such things are very sensitive to differences in motherboards and BIOSes. Alan Stern ------------------------------------------------------- This SF.Net email is sponsored by BEA Weblogic Workshop FREE Java Enterprise J2EE developer tools! Get your free copy of BEA WebLogic Workshop 8.1 today. http://ads.osdn.com/?ad_id=4721&alloc_id=10040&op=click _______________________________________________ [EMAIL PROTECTED] To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
