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

Reply via email to