It seems that the CDC-ACM driver can get stuck in a throttling
condition.

This happens when the device is closed while acm->throttle is active;
the ldisc flushes its buffer but the driver remains throttled. If the
device is reopened later, the driver will still be throttled while the
tty ldisc thinks everything is clear.

The proposed patch fixes this by resetting the acm->throttle flag at
device open time. This patch was tested on i386, ohci-hcd with a custom
USB device and appears to fix the problem.

Bye,
  Joris.


diff -ur -U5 linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.c 
linux-2.6.19.2/drivers/usb/class/cdc-acm.c
--- linux-2.6.19.2-orig/drivers/usb/class/cdc-acm.c     2007-01-10 
20:10:37.000000000 +0100
+++ linux-2.6.19.2/drivers/usb/class/cdc-acm.c  2007-02-02 22:58:45.000000000 
+0100
@@ -478,10 +478,12 @@
        }
        for (i = 0; i < acm->rx_buflimit; i++) {
                list_add(&(acm->rb[i].list), &acm->spare_read_bufs);
        }
 
+       acm->throttle = 0;
+
        tasklet_schedule(&acm->urb_task);
 
 done:
 err_out:
        mutex_unlock(&open_mutex);

-------------------------------------------------------------------------
Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier.
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
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