lkml.org 
[lkml]   [2006]   [May]   [22]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Date
    From
    Subject[PATCH] Re: usb-serial ipaq kernel problem
    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 <frank.gevaerts@fks.be>

    --- 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 frank.gevaerts@fks.be
    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
    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2006-05-23 00:07    [W:0.024 / U:1.044 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site