On Mon, May 22, 2006 at 02:44:03PM -0700, Greg KH wrote:
> On Mon, May 22, 2006 at 04:30:48PM +0200, Frank Gevaerts wrote:
> > Hi, 
> > 
> > We are having problems with the usb-serial ipaq driver in 2.6.16 (debian
> > backports 2.6.16-1-686, but also reproducible with self-compiled
> > kernel.org kernel)
> > 
> > Sometimes, we get the following on disconnect:
> 
> <snip>
> 
> Can you duplicate this on 2.6.17-rc4?  A number of tty changes went into
> that release that should have fixed this issue.

I'll try it in the morning. In the meantime, we found some other
problems in ipaq.c : apparently pocketpc accepts usb enumeration long
before it accepts usb-serial commands (sometimes 50 or more seconds),
which makes ipaq_open fail. When it fails, the read urb is not killed,
while the associated structures are freed, which gives a panic when
the urb completes. The following patch solves that :
Since changing this, I also have not seen the original problem anymore,
but I will do some more testing tomorrow.

Signed-off-by: Frank Gevaerts <[EMAIL PROTECTED]>

--- linux-2.6.16/drivers/usb/serial/ipaq.c      2006-03-20 06:53:29.000000000 
+0100
+++ linux-2.6.16.ipaq/drivers/usb/serial/ipaq.c 2006-05-23 00:00:33.000000000 
+0200
@@ -59,7 +59,7 @@
 #include "usb-serial.h"
 #include "ipaq.h"
 
-#define KP_RETRIES     100
+#define KP_RETRIES     1000
 
 /*
  * Version Information
@@ -652,12 +652,6 @@
                      usb_rcvbulkpipe(serial->dev, 
port->bulk_in_endpointAddress),
                      port->read_urb->transfer_buffer, 
port->read_urb->transfer_buffer_length,
                      ipaq_read_bulk_callback, port);
-       result = usb_submit_urb(port->read_urb, GFP_KERNEL);
-       if (result) {
-               err("%s - failed submitting read urb, error %d", __FUNCTION__, 
result);
-               goto error;
-       }
-
        /*
         * Send out control message observed in win98 sniffs. Not sure what
         * it does, but from empirical observations, it seems that the device
@@ -671,8 +665,15 @@
                                usb_sndctrlpipe(serial->dev, 0), 0x22, 0x21,
                                0x1, 0, NULL, 0, 100);
                if (result == 0) {
+                       result = usb_submit_urb(port->read_urb, GFP_KERNEL);
+                       if (result) {
+                               err("%s - failed submitting read urb, error 
%d", __FUNCTION__, result);
+                               goto error;
+                       }
+
                        return 0;
                }
+                msleep(100);
        }
        err("%s - failed doing control urb, error %d", __FUNCTION__, result);
        goto error;

> 
> thanks,
> 
> greg k-h
> 

-- 
Frank Gevaerts                                 [EMAIL PROTECTED]
fks bvba - Formal and Knowledge Systems        http://www.fks.be/
Stationsstraat 108                             Tel:  ++32-(0)11-21 49 11
B-3570 ALKEN                                   Fax:  ++32-(0)11-22 04 19


-------------------------------------------------------
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