It is same as USB driver flow.
Do u know the flow?

-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of
[EMAIL PROTECTED]
Sent: Tuesday, May 23, 2006 5:11 PM
To: linux-usb-devel@lists.sourceforge.net
Subject: linux-usb-devel digest, Vol 1 #5630 - 11 msgs

Send linux-usb-devel mailing list submissions to
        linux-usb-devel@lists.sourceforge.net

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
or, via email, send a message with subject or body 'help' to
        [EMAIL PROTECTED]

You can reach the person managing the list at
        [EMAIL PROTECTED]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of linux-usb-devel digest..."


Today's Topics:

   1. usb: io_edgeport, cleanup to unicode handling (Pete Zaitcev)
   2. usb: encapsulate schedule_work, remove double-calling (Pete
Zaitcev)
   3. usb: Improve Kconfig comment for mct_u232 (Pete Zaitcev)
   4. usb: Syntax cleanup for pl2303 (trailing backslash) (Pete Zaitcev)
   5. usb serial (Pete Zaitcev)
   6. Re: Question about CDC Ethernet/EEM descriptors (Ethan Du)
   7. [PATCH] usb-storage: get rid of the timer during URB submission
(Franck Bui-Huu)
   8. Re: [PATCH] usb-storage: get rid of the timer during
       URB submission (Franck Bui-Huu)
   9. [TEST PATCH] asix.c - Add AX88178 support and fix endian-ness
       issues (David Hollis)

--__--__--

Message: 1
Date: Mon, 22 May 2006 21:49:44 -0700
From: Pete Zaitcev <[EMAIL PROTECTED]>
To: <[EMAIL PROTECTED]>
Cc: <[EMAIL PROTECTED]>, [EMAIL PROTECTED], [EMAIL PROTECTED],
        linux-usb-devel@lists.sourceforge.net
Organization: Red Hat, Inc.
Subject: [linux-usb-devel] usb: io_edgeport, cleanup to unicode handling

Clean up the unicode handling in io_edgeport. Make get_string
size-limited.

Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>

---

Al & Peter, I'd like you to take a look and let me know if you have
any objections. Thanks.
-- Pete

diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/io_edgeport.c
linux-2.6.17-rc2-lem/drivers/usb/serial/io_edgeport.c
--- linux-2.6.17-rc2/drivers/usb/serial/io_edgeport.c   2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/io_edgeport.c
2006-04-23 21:11:19.000000000 -0700
@@ -142,7 +142,7 @@ struct edgeport_port {
 
 /* This structure holds all of the individual device information */
 struct edgeport_serial {
-       char                    name[MAX_NAME_LEN+1];           /*
string name of this device */
+       char                    name[MAX_NAME_LEN+2];           /*
string name of this device */
 
        struct edge_manuf_descriptor    manuf_descriptor;       /* the
manufacturer descriptor */
        struct edge_boot_descriptor     boot_descriptor;        /* the
boot firmware descriptor */
@@ -270,7 +270,7 @@ static void get_manufacturing_desc  (stru
 static void get_boot_desc              (struct edgeport_serial
*edge_serial);
 static void load_application_firmware  (struct edgeport_serial
*edge_serial);
 
-static void unicode_to_ascii           (char *string, __le16 *unicode,
int unicode_size);
+static void unicode_to_ascii(char *string, int buflen, __le16 *unicode,
int unicode_size);
 
 
 //
************************************************************************
@@ -373,7 +373,7 @@ static void update_edgeport_E2PROM (stru
  *  Get string descriptor from device
*
  *
*
 
************************************************************************
/
-static int get_string (struct usb_device *dev, int Id, char *string)
+static int get_string (struct usb_device *dev, int Id, char *string,
int buflen)
 {
        struct usb_string_descriptor StringDesc;
        struct usb_string_descriptor *pStringDesc;
@@ -395,7 +395,7 @@ static int get_string (struct usb_device
                return 0;
        }
 
-       unicode_to_ascii(string,  pStringDesc->wData,
pStringDesc->bLength/2-1);
+       unicode_to_ascii(string, buflen, pStringDesc->wData,
pStringDesc->bLength/2);
 
        kfree(pStringDesc);
        return strlen(string);
@@ -2564,16 +2564,20 @@ static void change_port_settings (struct
  *     ASCII range, but it's only for debugging...
  *     NOTE: expects the unicode in LE format
 
************************************************************************
****/
-static void unicode_to_ascii (char *string, __le16 *unicode, int
unicode_size)
+static void unicode_to_ascii(char *string, int buflen, __le16 *unicode,
int unicode_size)
 {
        int i;
 
-       if (unicode_size <= 0)
+       if (buflen <= 0)        /* never happens, but... */
                return;
+       --buflen;               /* space for nul */
 
-       for (i = 0; i < unicode_size; ++i)
+       for (i = 0; i < unicode_size; i++) {
+               if (i >= buflen)
+                       break;
                string[i] = (char)(le16_to_cpu(unicode[i]));
-       string[unicode_size] = 0x00;
+       }
+       string[i] = 0x00;
 }
 
 
@@ -2603,11 +2607,17 @@ static void get_manufacturing_desc (stru
                dbg("  BoardRev:       %d",
edge_serial->manuf_descriptor.BoardRev);
                dbg("  NumPorts:       %d",
edge_serial->manuf_descriptor.NumPorts);
                dbg("  DescDate:       %d/%d/%d",
edge_serial->manuf_descriptor.DescDate[0],
edge_serial->manuf_descriptor.DescDate[1],
edge_serial->manuf_descriptor.DescDate[2]+1900);
-               unicode_to_ascii (string,
edge_serial->manuf_descriptor.SerialNumber,
edge_serial->manuf_descriptor.SerNumLength/2-1);
+               unicode_to_ascii(string, 30,
+                   edge_serial->manuf_descriptor.SerialNumber,
+                   edge_serial->manuf_descriptor.SerNumLength/2);
                dbg("  SerialNumber: %s", string);
-               unicode_to_ascii (string,
edge_serial->manuf_descriptor.AssemblyNumber,
edge_serial->manuf_descriptor.AssemblyNumLength/2-1);
+               unicode_to_ascii(string, 30,
+                   edge_serial->manuf_descriptor.AssemblyNumber,
+                   edge_serial->manuf_descriptor.AssemblyNumLength/2);
                dbg("  AssemblyNumber: %s", string);
-               unicode_to_ascii (string,
edge_serial->manuf_descriptor.OemAssyNumber,
edge_serial->manuf_descriptor.OemAssyNumLength/2-1);
+               unicode_to_ascii(string, 30,
+                   edge_serial->manuf_descriptor.OemAssyNumber,
+                   edge_serial->manuf_descriptor.OemAssyNumLength/2);
                dbg("  OemAssyNumber:  %s", string);
                dbg("  UartType:       %d",
edge_serial->manuf_descriptor.UartType);
                dbg("  IonPid:         %d",
edge_serial->manuf_descriptor.IonPid);
@@ -2735,11 +2745,11 @@ static int edge_startup (struct usb_seri
        usb_set_serial_data(serial, edge_serial);
 
        /* get the name for the device from the device */
-       if ( (i = get_string(dev, dev->descriptor.iManufacturer,
&edge_serial->name[0])) != 0) {
-               edge_serial->name[i-1] = ' ';
-       }
-
-       get_string(dev, dev->descriptor.iProduct,
&edge_serial->name[i]);
+       i = get_string(dev, dev->descriptor.iManufacturer,
+           &edge_serial->name[0], MAX_NAME_LEN+1);
+       edge_serial->name[i++] = ' ';
+       get_string(dev, dev->descriptor.iProduct,
+           &edge_serial->name[i], MAX_NAME_LEN+2 - i);
 
        dev_info(&serial->dev->dev, "%s detected\n", edge_serial->name);
 


--__--__--

Message: 2
Date: Mon, 22 May 2006 21:58:49 -0700
From: Pete Zaitcev <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: linux-usb-devel@lists.sourceforge.net
Organization: Red Hat, Inc.
Subject: [linux-usb-devel] usb: encapsulate schedule_work, remove
double-calling

I'm going to throw schedule_work away, it's retarded. But for starters,
let's have it encapsulated.

Also, generic and whiteheat were both calling usb_serial_port_softint
and scheduled work. Only one was necessary.

Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>

---

The double-calling looks like a thinko, or an attempt to achieve
lower latency (in which case, a misguided one, IMHO).

diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/cyberjack.c
linux-2.6.17-rc2-lem/drivers/usb/serial/cyberjack.c
--- linux-2.6.17-rc2/drivers/usb/serial/cyberjack.c     2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/cyberjack.c 2006-05-22
21:17:16.000000000 -0700
@@ -469,7 +469,7 @@ static void cyberjack_write_bulk_callbac
 
 exit:
        spin_unlock(&priv->lock);
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static int __init cyberjack_init (void)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/cypress_m8.c
linux-2.6.17-rc2-lem/drivers/usb/serial/cypress_m8.c
--- linux-2.6.17-rc2/drivers/usb/serial/cypress_m8.c    2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/cypress_m8.c
2006-05-22 21:26:24.000000000 -0700
@@ -824,7 +824,7 @@ send:
        priv->bytes_out += count; /* do not count the line control and
size bytes */
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 } /* cypress_send */
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/empeg.c
linux-2.6.17-rc2-lem/drivers/usb/serial/empeg.c
--- linux-2.6.17-rc2/drivers/usb/serial/empeg.c 2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/empeg.c     2006-05-22
21:26:46.000000000 -0700
@@ -335,7 +335,7 @@ static void empeg_write_bulk_callback (s
                return;
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/ftdi_sio.c
linux-2.6.17-rc2-lem/drivers/usb/serial/ftdi_sio.c
--- linux-2.6.17-rc2/drivers/usb/serial/ftdi_sio.c      2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/ftdi_sio.c  2006-05-22
21:27:04.000000000 -0700
@@ -1467,7 +1467,7 @@ static void ftdi_write_bulk_callback (st
                return;
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 } /* ftdi_write_bulk_callback */
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/garmin_gps.c
linux-2.6.17-rc2-lem/drivers/usb/serial/garmin_gps.c
--- linux-2.6.17-rc2/drivers/usb/serial/garmin_gps.c    2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/garmin_gps.c
2006-05-22 21:32:38.000000000 -0700
@@ -1012,7 +1012,7 @@ static void garmin_write_bulk_callback (
                garmin_data_p->flags |= CLEAR_HALT_REQUIRED;
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/generic.c
linux-2.6.17-rc2-lem/drivers/usb/serial/generic.c
--- linux-2.6.17-rc2/drivers/usb/serial/generic.c       2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/generic.c   2006-05-22
21:27:20.000000000 -0700
@@ -298,9 +298,7 @@ void usb_serial_generic_write_bulk_callb
                return;
        }
 
-       usb_serial_port_softint((void *)port);
-
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 EXPORT_SYMBOL_GPL(usb_serial_generic_write_bulk_callback);
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/ipaq.c
linux-2.6.17-rc2-lem/drivers/usb/serial/ipaq.c
--- linux-2.6.17-rc2/drivers/usb/serial/ipaq.c  2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/ipaq.c      2006-05-22
21:27:34.000000000 -0700
@@ -870,7 +870,7 @@ static void ipaq_write_bulk_callback(str
                spin_unlock_irqrestore(&write_list_lock, flags);
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static int ipaq_write_room(struct usb_serial_port *port)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/ipw.c
linux-2.6.17-rc2-lem/drivers/usb/serial/ipw.c
--- linux-2.6.17-rc2/drivers/usb/serial/ipw.c   2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/ipw.c       2006-05-22
21:27:46.000000000 -0700
@@ -376,7 +376,7 @@ static void ipw_write_bulk_callback(stru
        if (urb->status)
                dbg("%s - nonzero write bulk status received: %d",
__FUNCTION__, urb->status);
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static int ipw_write(struct usb_serial_port *port, const unsigned char
*buf, int count)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/ir-usb.c
linux-2.6.17-rc2-lem/drivers/usb/serial/ir-usb.c
--- linux-2.6.17-rc2/drivers/usb/serial/ir-usb.c        2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/ir-usb.c    2006-05-22
21:28:09.000000000 -0700
@@ -408,7 +408,7 @@ static void ir_write_bulk_callback (stru
                urb->actual_length,
                urb->transfer_buffer);
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static void ir_read_bulk_callback (struct urb *urb, struct pt_regs
*regs)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/keyspan.c
linux-2.6.17-rc2-lem/drivers/usb/serial/keyspan.c
--- linux-2.6.17-rc2/drivers/usb/serial/keyspan.c       2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/keyspan.c   2006-05-22
21:29:09.000000000 -0700
@@ -481,7 +481,7 @@ static void usa2x_outdat_callback(struct
        dbg ("%s - urb %d", __FUNCTION__, urb == p_priv->out_urbs[1]); 
 
        if (port->open_count)
-               schedule_work(&port->work);
+               usb_serial_port_softint(port);
 }
 
 static void    usa26_inack_callback(struct urb *urb, struct pt_regs
*regs)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/kl5kusb105.c
linux-2.6.17-rc2-lem/drivers/usb/serial/kl5kusb105.c
--- linux-2.6.17-rc2/drivers/usb/serial/kl5kusb105.c    2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/kl5kusb105.c
2006-05-22 21:29:57.000000000 -0700
@@ -569,8 +569,7 @@ static void klsi_105_write_bulk_callback
                return;
        }
 
-       /* from generic_write_bulk_callback */
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 } /* klsi_105_write_bulk_completion_callback */
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/omninet.c
linux-2.6.17-rc2-lem/drivers/usb/serial/omninet.c
--- linux-2.6.17-rc2/drivers/usb/serial/omninet.c       2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/omninet.c   2006-05-22
21:30:20.000000000 -0700
@@ -320,7 +320,7 @@ static void omninet_write_bulk_callback 
                return;
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/option.c
linux-2.6.17-rc2-lem/drivers/usb/serial/option.c
--- linux-2.6.17-rc2/drivers/usb/serial/option.c        2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/option.c    2006-05-22
21:30:59.000000000 -0700
@@ -365,8 +365,7 @@ static void option_outdat_callback(struc
 
        port = (struct usb_serial_port *) urb->context;
 
-       if (port->open_count)
-               schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static void option_instat_callback(struct urb *urb, struct pt_regs
*regs)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/pl2303.c
linux-2.6.17-rc2-lem/drivers/usb/serial/pl2303.c
--- linux-2.6.17-rc2/drivers/usb/serial/pl2303.c        2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/pl2303.c    2006-05-22
21:31:15.000000000 -0700
@@ -313,7 +313,7 @@ static void pl2303_send(struct usb_seria
                // TODO: reschedule pl2303_send
        }
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 static int pl2303_write_room(struct usb_serial_port *port)
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/usb-serial.c
linux-2.6.17-rc2-lem/drivers/usb/serial/usb-serial.c
--- linux-2.6.17-rc2/drivers/usb/serial/usb-serial.c    2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/usb-serial.c
2006-05-22 21:23:29.000000000 -0700
@@ -521,7 +523,17 @@ exit:
        return -EINVAL;
 }
 
-void usb_serial_port_softint(void *private)
+/*
+ * We would be calling tty_wakeup here, but unfortunately some line
+ * disciplines have an annoying habit of calling tty->write from
+ * the write wakeup callback (e.g. n_hdlc.c).
+ */
+void usb_serial_port_softint(struct usb_serial_port *port)
+{
+       schedule_work(&port->work);
+}
+
+static void usb_serial_port_work(void *private)
 {
        struct usb_serial_port *port = private;
        struct tty_struct *tty;
@@ -784,7 +796,7 @@ int usb_serial_probe(struct usb_interfac
                port->serial = serial;
                spin_lock_init(&port->lock);
                mutex_init(&port->mutex);
-               INIT_WORK(&port->work, usb_serial_port_softint, port);
+               INIT_WORK(&port->work, usb_serial_port_work, port);
                serial->port[i] = port;
        }
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/usb-serial.h
linux-2.6.17-rc2-lem/drivers/usb/serial/usb-serial.h
--- linux-2.6.17-rc2/drivers/usb/serial/usb-serial.h    2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/usb-serial.h
2006-05-22 21:18:47.000000000 -0700
@@ -236,7 +236,7 @@ struct usb_serial_driver {
 
 extern int  usb_serial_register(struct usb_serial_driver *driver);
 extern void usb_serial_deregister(struct usb_serial_driver *driver);
-extern void usb_serial_port_softint(void *private);
+extern void usb_serial_port_softint(struct usb_serial_port *port);
 
 extern int usb_serial_probe(struct usb_interface *iface, const struct
usb_device_id *id);
 extern void usb_serial_disconnect(struct usb_interface *iface);
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/visor.c
linux-2.6.17-rc2-lem/drivers/usb/serial/visor.c
--- linux-2.6.17-rc2/drivers/usb/serial/visor.c 2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/visor.c     2006-05-22
21:31:35.000000000 -0700
@@ -480,7 +480,7 @@ static void visor_write_bulk_callback (s
        --priv->outstanding_urbs;
        spin_unlock_irqrestore(&priv->lock, flags);
 
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 
diff -urp -X dontdiff linux-2.6.17-rc2/drivers/usb/serial/whiteheat.c
linux-2.6.17-rc2-lem/drivers/usb/serial/whiteheat.c
--- linux-2.6.17-rc2/drivers/usb/serial/whiteheat.c     2006-03-27
07:45:23.000000000 -0800
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/whiteheat.c 2006-05-22
21:31:59.000000000 -0700
@@ -1088,9 +1088,7 @@ static void whiteheat_write_callback(str
                return;
        }
 
-       usb_serial_port_softint((void *)port);
-
-       schedule_work(&port->work);
+       usb_serial_port_softint(port);
 }
 
 


--__--__--

Message: 3
Date: Mon, 22 May 2006 22:02:32 -0700
From: Pete Zaitcev <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED], linux-usb-devel@lists.sourceforge.net
Organization: Red Hat, Inc.
Subject: [linux-usb-devel] usb: Improve Kconfig comment for mct_u232

Add a couple of supported devices into the help message.

It's a long story... I promised this comment changed to a user long ago,
so I'd like to have that promise kept. In reality though, nobody is
likely to read this anyway.

Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>

--- linux-2.6.17-rc2/drivers/usb/serial/Kconfig 2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/Kconfig     2006-04-23
21:11:19.000000000 -0700
@@ -407,7 +407,7 @@ config USB_SERIAL_MCT_U232
          Magic Control Technology Corp. (U232 is one of the model
numbers).
 
          This driver also works with Sitecom U232-P25 and D-Link
DU-H3SP USB
-         BAY devices.
+         BAY, Belkin F5U109, and Belkin F5U409 devices.
 
          To compile this driver as a module, choose M here: the
          module will be called mct_u232.


--__--__--

Message: 4
Date: Mon, 22 May 2006 22:05:17 -0700
From: Pete Zaitcev <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: [EMAIL PROTECTED], linux-usb-devel@lists.sourceforge.net
Organization: Red Hat, Inc.
Subject: [linux-usb-devel] usb: Syntax cleanup for pl2303 (trailing
backslash)

Remove the silly trailing backslash.

Signed-off-by: Pete Zaitcev <[EMAIL PROTECTED]>

--- linux-2.6.17-rc2/drivers/usb/serial/pl2303.c        2006-04-23
21:06:18.000000000 -0700
+++ linux-2.6.17-rc2-lem/drivers/usb/serial/pl2303.c    2006-05-22
21:31:15.000000000 -0700
@@ -599,7 +599,7 @@ static void pl2303_close (struct usb_ser
        unsigned int c_cflag;
        int bps;
        long timeout;
-       wait_queue_t wait;
\
+       wait_queue_t wait;
 
        dbg("%s - port %d", __FUNCTION__, port->number);
 


--__--__--

Message: 5
Date: Mon, 22 May 2006 22:23:39 -0700
From: Pete Zaitcev <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Cc: linux-usb-devel@lists.sourceforge.net, [EMAIL PROTECTED]
Organization: Red Hat, Inc.
Subject: [linux-usb-devel] usb serial

Hi, Greg:

I looked at RMK's UART infrastructure and it seemed a little too
fine-grained to me. It does not seem like a good match for things
like edgeport and keyspan. So, my enthusiasm about "us" has diminished.

Also, remember what kind of pain in the butt was the coexistence
of usb-storage and ub, both for me and Matt Dharm. The present situation
is different, because "us" would take over usb-serial completely in
time,
but ub will never take over usb-storage. But even temporarily it's
still a pain.

I think that the right path going forward is to attempt to salvage
usb-serial.

Short term, I have a couple more patchlets, awaiting testing:

 - pl2303 oops on rmmod is a use-after-free caused by the keventd
   taking its sweet time to process work. A flush_scheduled_work
   seems to be missing in our disconnect path.

 - mct_u232 needs a little msleep(), because there's no telling
   when the device actually finished transmitting. But kill_urb
   aborts the transmission, so characters are lost.

I'm going in for a surgery tomorrow, but I expect them to wake me
the same day, so the usb-serial's doom is pretty much sealed regardless.

Cheers,
-- Pete


--__--__--

Message: 6
From: "Ethan Du" <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED], linux-usb-devel@lists.sourceforge.net
Subject: Re: [linux-usb-devel] Question about CDC Ethernet/EEM
descriptors
Date: Tue, 23 May 2006 17:33:17 +0800

Dave:

    Thanks a lot. I still have question here : )
>
> > 2. EEM doesn't have specific descriptor, so how could host control
those
> > broadcast and power  filters?
>
>What filters are you talking about?  The EEM spec doesn't provide any
>details about such things, so it looks to me like there aren't any ...
>
For example, in the absence of software bridging, we may not want to 
transfer multicast packets on the bus. While with software bridging
working, 
we may want all packets transferred. CDC Ethernet use a request 
"SET_ETHERNET_PACKET_FILTER" to do this. How about EEM?

BR.
- Ethan

_________________________________________________________________
Don't just search. Find. Check out the new MSN Search! 
http://search.msn.click-url.com/go/onm00200636ave/direct/01/



--__--__--

Message: 7
Date: Tue, 23 May 2006 11:40:54 +0200
Reply-To: Franck Bui-Huu <[EMAIL PROTECTED]>
To: Alan Stern <[EMAIL PROTECTED]>
CC: Franck Bui-Huu <[EMAIL PROTECTED]>,  [EMAIL PROTECTED], 
 David Brownell <[EMAIL PROTECTED]>,
 USB development list <linux-usb-devel@lists.sourceforge.net>
From: Franck Bui-Huu <[EMAIL PROTECTED]>
Subject: [linux-usb-devel] [PATCH] usb-storage: get rid of the timer
during URB submission


and use completion timeout instead of. It also put the task
in interruptible state instead of uninterruptible one while
waiting for the completion.

Signed-off-by: Franck Bui-Huu <[EMAIL PROTECTED]>


---

 drivers/usb/storage/transport.c |   35
+++++++----------------------------
 1 files changed, 7 insertions(+), 28 deletions(-)

0e7a2a54a4f4e98905c3791c04ab4bc256b20031
 drivers/usb/storage/transport.c |   35
+++++++----------------------------
 1 files changed, 7 insertions(+), 28 deletions(-)

diff --git a/drivers/usb/storage/transport.c
b/drivers/usb/storage/transport.c
index 7ca896a..b18db22 100644
--- a/drivers/usb/storage/transport.c
+++ b/drivers/usb/storage/transport.c
@@ -115,19 +115,6 @@ static void usb_stor_blocking_completion
 
        complete(urb_done_ptr);
 }
- 
-/* This is the timeout handler which will cancel an URB when its
timeout
- * expires.
- */
-static void timeout_handler(unsigned long us_)
-{
-       struct us_data *us = (struct us_data *) us_;
-
-       if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->flags)) {
-               US_DEBUGP("Timeout -- cancelling URB\n");
-               usb_unlink_urb(us->current_urb);
-       }
-}
 
 /* This is the common part of the URB message submission code
  *
@@ -138,7 +125,6 @@ static void timeout_handler(unsigned lon
 static int usb_stor_msg_common(struct us_data *us, int timeout)
 {
        struct completion urb_done;
-       struct timer_list to_timer;
        int status;
 
        /* don't submit URBs during abort/disconnect processing */
@@ -185,22 +171,15 @@ static int usb_stor_msg_common(struct us
                }
        }
  
-       /* submit the timeout timer, if a timeout was requested */
-       if (timeout > 0) {
-               init_timer(&to_timer);
-               to_timer.expires = jiffies + timeout;
-               to_timer.function = timeout_handler;
-               to_timer.data = (unsigned long) us;
-               add_timer(&to_timer);
-       }
-
        /* wait for the completion of the URB */
-       wait_for_completion(&urb_done);
-       clear_bit(US_FLIDX_URB_ACTIVE, &us->flags);
+       timeout = wait_for_completion_interruptible_timeout(
+                       &urb_done, timeout ? : MAX_SCHEDULE_TIMEOUT);
  
-       /* clean up the timeout timer */
-       if (timeout > 0)
-               del_timer_sync(&to_timer);
+       if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->flags) &&
timeout <= 0) {
+               US_DEBUGP("%s -- cancelling URB\n",
+                         timeout == 0 ? "Timeout" : "Signal");
+               usb_unlink_urb(us->current_urb);
+       }
 
        /* return the URB status */
        return us->current_urb->status;
-- 
1.3.3.g8701



--__--__--

Message: 8
Date: Tue, 23 May 2006 12:10:36 +0200
Reply-To: Franck Bui-Huu <[EMAIL PROTECTED]>
To: Franck Bui-Huu <[EMAIL PROTECTED]>
CC: Alan Stern <[EMAIL PROTECTED]>,  [EMAIL PROTECTED], 
 David Brownell <[EMAIL PROTECTED]>,
 USB development list <linux-usb-devel@lists.sourceforge.net>, 
 [EMAIL PROTECTED]
Subject: Re: [linux-usb-devel] [PATCH] usb-storage: get rid of the timer
during
 URB submission
From: Franck Bui-Huu <[EMAIL PROTECTED]>

Franck Bui-Huu wrote:
>       /* wait for the completion of the URB */
> -     wait_for_completion(&urb_done);
> -     clear_bit(US_FLIDX_URB_ACTIVE, &us->flags);
> +     timeout = wait_for_completion_interruptible_timeout(
> +                     &urb_done, timeout ? : MAX_SCHEDULE_TIMEOUT);
>   
> -     /* clean up the timeout timer */
> -     if (timeout > 0)
> -             del_timer_sync(&to_timer);
> +     if (test_and_clear_bit(US_FLIDX_URB_ACTIVE, &us->flags) &&
timeout <= 0) {

Thinking more about it, I'm wondering it the second condition (timeout
<= 0)
is really needed. Do you think so ?


> +             US_DEBUGP("%s -- cancelling URB\n",
> +                       timeout == 0 ? "Timeout" : "Signal");
> +             usb_unlink_urb(us->current_urb);
> +     }
>  
>       /* return the URB status */
>       return us->current_urb->status;



--__--__--

Message: 9
From: David Hollis <[EMAIL PROTECTED]>
To: Ken Yee <[EMAIL PROTECTED]>, Lon Willett <[EMAIL PROTECTED]>, Alan
Hourihane <[EMAIL PROTECTED]>, Jamie Painter
<[EMAIL PROTECTED]>
Cc: linux-usb-devel@lists.sourceforge.net
Date: Tue, 23 May 2006 07:38:11 -0400
Subject: [linux-usb-devel] [TEST PATCH] asix.c - Add AX88178 support and
fix endian-ness
 issues


--=-x6I/yARinv9UN4+dgln1
Content-Type: multipart/mixed; boundary="=-+PJR33xIdNuieYWZ4+Tk"


--=-+PJR33xIdNuieYWZ4+Tk
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable

Attached is a patch for testing newly added AX88178 support.  For this
attempt, I have followed the mechanisms used in the OpenBSD if_axe.c
driver instead of using the initialization code provided by ASIX
themselves.  It's much simpler and seems to function, though my testing
has been extremely limited.  I have a Buffalo test sample device that
seems to be functioning OK on a 10mb link at a hotel.  I have not tested
it at 100 or 1000 at this time.  The LED's do not operate correctly, the
100 and 1000 LED typically stay lit, sometimes they blink.  I'm
connected at 10MB, so that should be the only light lit.

If some of the other folks could give it a try on various speed
networks, that would really be helpful.  I've tried to include a decent
amount of debug info in the initialization and link_reset() functions to
help point out issues if any do arise.

Things that definitely need some testing:
100MB
1000GB
Jumbo Frames - this most likely doesn't work
Reconnecting at different speeds, duplexes

Give it a try and let me know if it actually works or not.  Please do
not consider this even remotely production.

--=20
David Hollis <[EMAIL PROTECTED]>

--=-+PJR33xIdNuieYWZ4+Tk
Content-Description:
Content-Disposition: inline; filename=asix.c-ax88178_support.patch
Content-Type: text/x-patch; charset=UTF-8
Content-Transfer-Encoding: base64

LS0tIGEvbGludXgvZHJpdmVycy91c2IvbmV0L2FzaXguYwkyMDA2LTA1LTEzIDEwOjI2OjU4
LjAw
MDAwMDAwMCAtMDQwMA0KKysrIGIvbGludXgvZHJpdmVycy91c2IvbmV0L2FzaXguYwkyMDA2
LTA1
LTIzIDAwOjU3OjEwLjAwMDAwMDAwMCAtMDQwMA0KQEAgLTE5LDggKzE5LDggQEANCiAgKiBG
b3Vu
ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAg
MDIx
MTEtMTMwNyAgVVNBDQogICovDQogDQotLy8gI2RlZmluZQlERUJVRwkJCS8vIGVycm9yIHBh
dGgg
bWVzc2FnZXMsIGV4dHJhIGluZm8NCi0vLyAjZGVmaW5lCVZFUkJPU0UJCQkvLyBtb3JlOyBz
dWNj
ZXNzIG1lc3NhZ2VzDQorI2RlZmluZQlERUJVRwkJCS8vIGVycm9yIHBhdGggbWVzc2FnZXMs
IGV4
dHJhIGluZm8NCisjZGVmaW5lCVZFUkJPU0UJCQkvLyBtb3JlOyBzdWNjZXNzIG1lc3NhZ2Vz
DQog
DQogI2luY2x1ZGUgPGxpbnV4L2NvbmZpZy5oPg0KICNpbmNsdWRlIDxsaW51eC9tb2R1bGUu
aD4N
CkBAIC00Nyw2ICs0Nyw3IEBADQogI2RlZmluZSBBWF9DTURfV1JJVEVfRUVQUk9NCQkweDBj
DQog
I2RlZmluZSBBWF9DTURfV1JJVEVfRU5BQkxFCQkweDBkDQogI2RlZmluZSBBWF9DTURfV1JJ
VEVf
RElTQUJMRQkJMHgwZQ0KKyNkZWZpbmUgQVhfQ01EX1JFQURfUlhfQ1RMCQkweDBmDQogI2Rl
Zmlu
ZSBBWF9DTURfV1JJVEVfUlhfQ1RMCQkweDEwDQogI2RlZmluZSBBWF9DTURfUkVBRF9JUEcw
MTIJ
CTB4MTENCiAjZGVmaW5lIEFYX0NNRF9XUklURV9JUEcwCQkweDEyDQpAQCAtMTA1LDYgKzEw
Niwx
MiBAQA0KIAkgQVg4ODc3Ml9NRURJVU1fVFhfRkNfRU5BQkxFIHwgQVg4ODc3Ml9NRURJVU1f
MTAw
TUIgfCBcDQogCSBBWDg4NzcyX01FRElVTV9SRVNFUlZFRCB8IEFYODg3NzJfTUVESVVNX1JY
X0VO
QUJMRSApDQogDQorI2RlZmluZSBBWDg4MTc4X01FRElVTV8xMDBNQgkJMHgwMDAyDQorI2Rl
Zmlu
ZSBBWDg4MTc4X01FRElVTV9HSUdBQklUCQkweDAxMDANCisjZGVmaW5lIEFYODgxNzhfTUVE
SVVN
X0ZVTExfRFVQTEVYCTB4MDIwMA0KKw0KKyNkZWZpbmUgQVg4ODE3OF9NRURJVU1fREVGQVVM
VAkJ
MHgwMzc2DQorDQogI2RlZmluZSBBWF9FRVBST01fTUFHSUMJCQkweGRlYWRiZWVmDQogDQog
Lyog
VGhpcyBzdHJ1Y3R1cmUgY2Fubm90IGV4Y2VlZCBzaXplb2YodW5zaWduZWQgbG9uZyBbNV0p
IEFL
QSAyMCBieXRlcyAqLw0KQEAgLTEyOCwxMCArMTM1LDEwIEBAIHN0YXRpYyBpbnQgYXNpeF9y
ZWFk
X2NtZChzdHJ1Y3QgdXNibmV0ICoNCiAJCXVzYl9yY3ZjdHJscGlwZShkZXYtPnVkZXYsIDAp
LA0K
IAkJY21kLA0KIAkJVVNCX0RJUl9JTiB8IFVTQl9UWVBFX1ZFTkRPUiB8IFVTQl9SRUNJUF9E
RVZJ
Q0UsDQotCQl2YWx1ZSwNCi0JCWluZGV4LA0KKwkJY3B1X3RvX2xlMTYodmFsdWUpLA0KKwkJ
Y3B1
X3RvX2xlMTYoaW5kZXgpLA0KIAkJZGF0YSwNCi0JCXNpemUsDQorCQljcHVfdG9fbGUxNihz
aXpl
KSwNCiAJCVVTQl9DVFJMX0dFVF9USU1FT1VUKTsNCiB9DQogDQpAQCAtMTQzLDEwICsxNTAs
MTAg
QEAgc3RhdGljIGludCBhc2l4X3dyaXRlX2NtZChzdHJ1Y3QgdXNibmV0IA0KIAkJdXNiX3Nu
ZGN0
cmxwaXBlKGRldi0+dWRldiwgMCksDQogCQljbWQsDQogCQlVU0JfRElSX09VVCB8IFVTQl9U
WVBF
X1ZFTkRPUiB8IFVTQl9SRUNJUF9ERVZJQ0UsDQotCQl2YWx1ZSwNCi0JCWluZGV4LA0KKwkJ
Y3B1
X3RvX2xlMTYodmFsdWUpLA0KKwkJY3B1X3RvX2xlMTYoaW5kZXgpLA0KIAkJZGF0YSwNCi0J
CXNp
emUsDQorCQljcHVfdG9fbGUxNihzaXplKSwNCiAJCVVTQl9DVFJMX1NFVF9USU1FT1VUKTsN
CiB9
DQogDQpAQCAtMjEyLDE0ICsyMTksNzAgQEAgc3RhdGljIGludCBhc2l4X3N3X3Jlc2V0KHN0
cnVj
dCB1c2JuZXQgKg0KIAlyZXR1cm4gcmV0Ow0KIH0NCiANCitzdGF0aWMgdTE2IGFzaXhfcmVh
ZF9y
eF9jdGwoc3RydWN0IHVzYm5ldCAqZGV2KQ0KK3sNCisJdTE2IHJldCA9IDA7DQorCXZvaWQg
KmJ1
ZjsNCisNCisJYnVmID0ga21hbGxvYygyLCBHRlBfS0VSTkVMKTsNCisJaWYgKCFidWYpDQor
CQln
b3RvIG91dDE7DQorDQorCWlmICgocmV0ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYX0NNRF9S
RUFE
X1JYX0NUTCwNCisJCQkJICAgIDAsIDAsIDIsIGJ1ZikpIDwgMikgew0KKwkJZGV2ZGJnKGRl
diwg
IkVycm9yIHJlYWRpbmcgUlhfQ1RMIHJlZ2lzdGVyOiAlMDJ4IiwgcmV0KTsNCisJCWdvdG8g
b3V0
MjsNCisJfQ0KKwlyZXQgPSBsZTE2X3RvX2NwdSgqKCh1MTYgKilidWYpKTsNCitvdXQyOg0K
Kwlr
ZnJlZShidWYpOw0KK291dDE6DQorCXJldHVybiByZXQ7DQorfQ0KKw0KIHN0YXRpYyBpbnQg
YXNp
eF93cml0ZV9yeF9jdGwoc3RydWN0IHVzYm5ldCAqZGV2LCB1MTYgbW9kZSkNCiB7DQogCWlu
dCBy
ZXQ7DQogDQogCXJldCA9IGFzaXhfd3JpdGVfY21kKGRldiwgQVhfQ01EX1dSSVRFX1JYX0NU
TCwg
bW9kZSwgMCwgMCwgTlVMTCk7DQogCWlmIChyZXQgPCAwKQ0KLSAgICAgICAgICAgICAgICBk
ZXZk
YmcoZGV2LCAiRmFpbGVkIHRvIHdyaXRlIFJYX0NUTCBtb2RlOiAlMDJ4IiwgcmV0KTsNCisg
ICAg
ICAgICAgICAgICAgZGV2ZGJnKGRldiwgIkZhaWxlZCB0byB3cml0ZSBSWF9DVEwgbW9kZSB0
byAw
eCUwNHg6ICUwMngiLCANCisJCSAgICAgICBtb2RlLCByZXQpOw0KKw0KKwlyZXR1cm4gcmV0
Ow0K
K30NCisNCitzdGF0aWMgdTE2IGFzaXhfcmVhZF9tZWRpdW1fc3RhdHVzKHN0cnVjdCB1c2Ju
ZXQg
KmRldikNCit7DQorCXUxNiByZXQgPSAwOw0KKwl2b2lkICpidWY7DQorDQorCWJ1ZiA9IGtt
YWxs
b2MoMiwgR0ZQX0tFUk5FTCk7DQorCWlmICghYnVmKQ0KKwkJZ290byBvdXQxOw0KIA0KKwlp
ZiAo
KHJldCA9IGFzaXhfcmVhZF9jbWQoZGV2LCBBWF9DTURfUkVBRF9NRURJVU1fU1RBVFVTLA0K
KwkJ
CQkgICAgMCwgMCwgMiwgYnVmKSkgPCAyKSB7DQorCQlkZXZkYmcoZGV2LCAiRXJyb3IgcmVh
ZGlu
ZyBNZWRpdW0gU3RhdHVzIHJlZ2lzdGVyOiAlMDJ4IiwgcmV0KTsNCisJCWdvdG8gb3V0MjsN
CisJ
fQ0KKwlyZXQgPSBsZTE2X3RvX2NwdSgqKCh1MTYgKilidWYpKTsNCitvdXQyOg0KKwlrZnJl
ZShi
dWYpOw0KK291dDE6DQorCXJldHVybiByZXQ7DQorfQ0KKw0KK3N0YXRpYyBpbnQgYXNpeF93
cml0
ZV9ncGlvKHN0cnVjdCB1c2JuZXQgKmRldiwgdTE2IHZhbHVlLCBpbnQgc2xlZXApDQorew0K
Kwlp
bnQgcmV0Ow0KKw0KKwlyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9H
UElP
UywgdmFsdWUsIDAsIDAsIE5VTEwpOw0KKwlpZiAocmV0IDwgMCkNCisgICAgICAgICAgICAg
ICAg
ZGV2ZGJnKGRldiwgIkZhaWxlZCB0byB3cml0ZSBHUElPIHZhbHVlIDB4JTA0eDogJTAyeCIs
IA0K
KwkJICAgICAgIHZhbHVlLCByZXQpOw0KKw0KKwltc2xlZXAoc2xlZXApOw0KIAlyZXR1cm4g
cmV0
Ow0KIH0NCiANCkBAIC0zMzQsMTMgKzM5Nyw3IEBAIHN0YXRpYyBpbnQgYXNpeF9tZGlvX3Jl
YWQo
c3RydWN0IG5ldF9kZXYNCiAJCQkJKF9fdTE2KWxvYywgMiwgKHUxNiAqKSZyZXMpOw0KIAlh
c2l4
X3NldF9od19taWkoZGV2KTsNCiANCi0JcmV0dXJuIHJlcyAmIDB4ZmZmZjsNCi19DQotDQot
Lyog
c2FtZSBhcyBhYm92ZSwgYnV0IGNvbnZlcnRzIHJlc3VsdGluZyB2YWx1ZSB0byBjcHUgYnl0
ZSBv
cmRlciAqLw0KLXN0YXRpYyBpbnQgYXNpeF9tZGlvX3JlYWRfbGUoc3RydWN0IG5ldF9kZXZp
Y2Ug
Km5ldGRldiwgaW50IHBoeV9pZCwgaW50IGxvYykNCi17DQotCXJldHVybiBsZTE2X3RvX2Nw
dShh
c2l4X21kaW9fcmVhZChuZXRkZXYscGh5X2lkLCBsb2MpKTsNCisJcmV0dXJuIGxlMTZfdG9f
Y3B1
KHJlcyAmIDB4ZmZmZik7DQogfQ0KIA0KIHN0YXRpYyB2b2lkDQpAQCAtMzU1LDEzICs0MTIs
NiBA
QCBhc2l4X21kaW9fd3JpdGUoc3RydWN0IG5ldF9kZXZpY2UgKm5ldGRlDQogCWFzaXhfc2V0
X2h3
X21paShkZXYpOw0KIH0NCiANCi0vKiBzYW1lIGFzIGFib3ZlLCBidXQgY29udmVydHMgbmV3
IHZh
bHVlIHRvIGxlMTYgYnl0ZSBvcmRlciBiZWZvcmUgd3JpdGluZyAqLw0KLXN0YXRpYyB2b2lk
DQot
YXNpeF9tZGlvX3dyaXRlX2xlKHN0cnVjdCBuZXRfZGV2aWNlICpuZXRkZXYsIGludCBwaHlf
aWQs
IGludCBsb2MsIGludCB2YWwpDQotew0KLQlhc2l4X21kaW9fd3JpdGUoIG5ldGRldiwgcGh5
X2lk
LCBsb2MsIGNwdV90b19sZTE2KHZhbCkgKTsNCi19DQotDQogc3RhdGljIGludCBheDg4MTcy
X2xp
bmtfcmVzZXQoc3RydWN0IHVzYm5ldCAqZGV2KQ0KIHsNCiAJdTE2IGxwYTsNCkBAIC0zNzAs
OCAr
NDIwLDggQEAgc3RhdGljIGludCBheDg4MTcyX2xpbmtfcmVzZXQoc3RydWN0IHVzYg0KIAl1
OCBt
b2RlOw0KIA0KIAltb2RlID0gQVhfTUVESVVNX1RYX0FCT1JUX0FMTE9XIHwgQVhfTUVESVVN
X0ZM
T1dfQ09OVFJPTF9FTjsNCi0JbHBhID0gYXNpeF9tZGlvX3JlYWRfbGUoZGV2LT5uZXQsIGRl
di0+
bWlpLnBoeV9pZCwgTUlJX0xQQSk7DQotCWFkdiA9IGFzaXhfbWRpb19yZWFkX2xlKGRldi0+
bmV0
LCBkZXYtPm1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UpOw0KKwlscGEgPSBhc2l4X21kaW9f
cmVh
ZChkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfTFBBKTsNCisJYWR2ID0gYXNpeF9t
ZGlv
X3JlYWQoZGV2LT5uZXQsIGRldi0+bWlpLnBoeV9pZCwgTUlJX0FEVkVSVElTRSk7DQogCXJl
cyA9
IG1paV9ud2F5X3Jlc3VsdChscGF8YWR2KTsNCiAJaWYgKHJlcyAmIExQQV9EVVBMRVgpDQog
CQlt
b2RlIHw9IEFYX01FRElVTV9GVUxMX0RVUExFWDsNCkBAIC01NDQsOCArNTk0LDggQEAgc3Rh
dGlj
IGludCBheDg4MTcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZA0KIAlkZXYtPm5ldC0+c2V0X211
bHRp
Y2FzdF9saXN0ID0gYXNpeF9zZXRfbXVsdGljYXN0Ow0KIAlkZXYtPm5ldC0+ZXRodG9vbF9v
cHMg
PSAmYXg4ODE3Ml9ldGh0b29sX29wczsNCiANCi0JYXNpeF9tZGlvX3dyaXRlX2xlKGRldi0+
bmV0
LCBkZXYtPm1paS5waHlfaWQsIE1JSV9CTUNSLCBCTUNSX1JFU0VUKTsNCi0JYXNpeF9tZGlv
X3dy
aXRlX2xlKGRldi0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UsDQorCWFz
aXhf
bWRpb193cml0ZShkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfQk1DUiwgQk1DUl9S
RVNF
VCk7DQorCWFzaXhfbWRpb193cml0ZShkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlf
QURW
RVJUSVNFLA0KIAkJQURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BIHwgQURWRVJUSVNF
X1BB
VVNFX0NBUCk7DQogCW1paV9ud2F5X3Jlc3RhcnQoJmRldi0+bWlpKTsNCiANCkBAIC01NzMs
NiAr
NjIzLDcgQEAgc3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZA0KIHsN
CiAJ
aW50IHJldDsNCiAJdm9pZCAqYnVmOw0KKwl1MTYgcnhfY3RsOw0KIA0KIAl1c2JuZXRfZ2V0
X2Vu
ZHBvaW50cyhkZXYsaW50Zik7DQogDQpAQCAtNTgzLDExICs2MzQsOSBAQCBzdGF0aWMgaW50
IGF4
ODg3NzJfYmluZChzdHJ1Y3QgdXNibmV0ICpkDQogCQlnb3RvIG91dDE7DQogCX0NCiANCi0J
aWYg
KChyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9HUElPUywNCi0JCQkJ
ICAg
ICAweDAwQjAsIDAsIDAsIGJ1ZikpIDwgMCkNCisJaWYgKChyZXQgPSBhc2l4X3dyaXRlX2dw
aW8o
ZGV2LCAweDAwQjAsIDUpKSA8IDApDQogCQlnb3RvIG91dDI7DQogDQotCW1zbGVlcCg1KTsN
CiAJ
aWYgKChyZXQgPSBhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9TV19QSFlfU0VMRUNULA0K
IAkJ
CQkweDAwMDEsIDAsIDAsIGJ1ZikpIDwgMCkgew0KIAkJZGJnKCJTZWxlY3QgUEhZICMxIGZh
aWxl
ZDogJWQiLCByZXQpOw0KQEAgLTYwNiw5ICs2NTUsMTQgQEAgc3RhdGljIGludCBheDg4Nzcy
X2Jp
bmQoc3RydWN0IHVzYm5ldCAqZA0KIAkJZ290byBvdXQyOw0KIA0KIAltc2xlZXAoMTUwKTsN
Ci0J
aWYgKChyZXQgPSBhc2l4X3dyaXRlX3J4X2N0bChkZXYsIDB4MDApKSA8IDApDQorCXJ4X2N0
bCA9
IGFzaXhfcmVhZF9yeF9jdGwoZGV2KTsNCisJZGJnKCJSWF9DVEwgaXMgMHglMDR4IGFmdGVy
IHNv
ZnR3YXJlIHJlc2V0IiwgcnhfY3RsKTsNCisJaWYgKChyZXQgPSBhc2l4X3dyaXRlX3J4X2N0
bChk
ZXYsIDB4MDAwMCkpIDwgMCkNCiAJCWdvdG8gb3V0MjsNCiANCisJcnhfY3RsID0gYXNpeF9y
ZWFk
X3J4X2N0bChkZXYpOw0KKwlkYmcoIlJYX0NUTCBpcyAweCUwNHggc2V0dGluZyB0byAweDAw
MDAi
LCByeF9jdGwpOw0KKw0KIAkvKiBHZXQgdGhlIE1BQyBhZGRyZXNzICovDQogCW1lbXNldChi
dWYs
IDAsIEVUSF9BTEVOKTsNCiAJaWYgKChyZXQgPSBhc2l4X3JlYWRfY21kKGRldiwgQVg4ODc3
Ml9D
TURfUkVBRF9OT0RFX0lELA0KQEAgLTYxOCwxNiArNjcyLDYgQEAgc3RhdGljIGludCBheDg4
Nzcy
X2JpbmQoc3RydWN0IHVzYm5ldCAqZA0KIAl9DQogCW1lbWNweShkZXYtPm5ldC0+ZGV2X2Fk
ZHIs
IGJ1ZiwgRVRIX0FMRU4pOw0KIA0KLQlpZiAoKHJldCA9IGFzaXhfc2V0X3N3X21paShkZXYp
KSA8
IDApDQotCQlnb3RvIG91dDI7DQotDQotCWlmICgoKHJldCA9IGFzaXhfcmVhZF9jbWQoZGV2
LCBB
WF9DTURfUkVBRF9NSUlfUkVHLA0KLQkgICAgICAJCQkweDAwMTAsIDIsIDIsIGJ1ZikpIDwg
MCkN
Ci0JCQl8fCAoKigodTE2ICopYnVmKSAhPSAweDAwM2IpKSB7DQotCQlkYmcoIlJlYWQgUEhZ
IHJl
Z2lzdGVyIDIgbXVzdCBiZSAweDNiMDA6ICVkIiwgcmV0KTsNCi0JCWdvdG8gb3V0MjsNCi0J
fQ0K
LQ0KIAkvKiBJbml0aWFsaXplIE1JSSBzdHJ1Y3R1cmUgKi8NCiAJZGV2LT5taWkuZGV2ID0g
ZGV2
LT5uZXQ7DQogCWRldi0+bWlpLm1kaW9fcmVhZCA9IGFzaXhfbWRpb19yZWFkOw0KQEAgLTYz
Nyw2
ICs2ODEsMTIgQEAgc3RhdGljIGludCBheDg4NzcyX2JpbmQoc3RydWN0IHVzYm5ldCAqZA0K
IAlk
ZXYtPm5ldC0+ZG9faW9jdGwgPSBhc2l4X2lvY3RsOw0KIAlkZXYtPm1paS5waHlfaWQgPSBh
c2l4
X2dldF9waHlpZChkZXYpOw0KIA0KKwlpZiAoKHJldCA9IGFzaXhfbWRpb19yZWFkKGRldi0+
bmV0
LA0KKwkJCWRldi0+bWlpLnBoeV9pZCwgTUlJX1BIWVNJRDEpKSAhPSAweDAwM2IpIHsNCisJ
CWRi
ZygiUmVhZCBQSFlTSUQxIG11c3QgYmUgMHgwMDNiLiAgUmVhZDogJTA0eCIsIHJldCk7DQor
CQln
b3RvIG91dDI7DQorCX0NCisNCiAJaWYgKChyZXQgPSBhc2l4X3N3X3Jlc2V0KGRldiwgQVhf
U1dS
RVNFVF9QUkwpKSA8IDApDQogCQlnb3RvIG91dDI7DQogDQpAQCAtNjUwLDggKzcwMCw4IEBA
IHN0
YXRpYyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmQNCiAJZGV2LT5uZXQtPnNl
dF9t
dWx0aWNhc3RfbGlzdCA9IGFzaXhfc2V0X211bHRpY2FzdDsNCiAJZGV2LT5uZXQtPmV0aHRv
b2xf
b3BzID0gJmF4ODg3NzJfZXRodG9vbF9vcHM7DQogDQotCWFzaXhfbWRpb193cml0ZV9sZShk
ZXYt
Pm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfQk1DUiwgQk1DUl9SRVNFVCk7DQotCWFzaXhf
bWRp
b193cml0ZV9sZShkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfQURWRVJUSVNFLA0K
Kwlh
c2l4X21kaW9fd3JpdGUoZGV2LT5uZXQsIGRldi0+bWlpLnBoeV9pZCwgTUlJX0JNQ1IsIEJN
Q1Jf
UkVTRVQpOw0KKwlhc2l4X21kaW9fd3JpdGUoZGV2LT5uZXQsIGRldi0+bWlpLnBoeV9pZCwg
TUlJ
X0FEVkVSVElTRSwNCiAJCQlBRFZFUlRJU0VfQUxMIHwgQURWRVJUSVNFX0NTTUEpOw0KIAlt
aWlf
bndheV9yZXN0YXJ0KCZkZXYtPm1paSk7DQogDQpAQCAtNjY3LDEzICs3MTcsMTIwIEBAIHN0
YXRp
YyBpbnQgYXg4ODc3Ml9iaW5kKHN0cnVjdCB1c2JuZXQgKmQNCiAJCWRiZygiV3JpdGUgSVBH
LElQ
RzEsSVBHMiBmYWlsZWQ6ICVkIiwgcmV0KTsNCiAJCWdvdG8gb3V0MjsNCiAJfQ0KLQlpZiAo
KHJl
dCA9IGFzaXhfc2V0X2h3X21paShkZXYpKSA8IDApDQotCQlnb3RvIG91dDI7DQogDQogCS8q
IFNl
dCBSWF9DVEwgdG8gZGVmYXVsdCB2YWx1ZXMgd2l0aCAyayBidWZmZXIsIGFuZCBlbmFibGUg
Y2Fj
dHVzICovDQogCWlmICgocmV0ID0gYXNpeF93cml0ZV9yeF9jdGwoZGV2LCAweDAwODgpKSA8
IDAp
DQogCQlnb3RvIG91dDI7DQogDQorCXJ4X2N0bCA9IGFzaXhfcmVhZF9yeF9jdGwoZGV2KTsN
CisJ
ZGJnKCJSWF9DVEwgaXMgMHglMDR4IGFmdGVyIGFsbCBpbml0aWFsaXphdGlvbnMiLCByeF9j
dGwp
Ow0KKw0KKwlyeF9jdGwgPSBhc2l4X3JlYWRfbWVkaXVtX3N0YXR1cyhkZXYpOw0KKwlkYmco
Ik1l
ZGl1bSBTdGF0dXMgaXMgMHglMDR4IGFmdGVyIGFsbCBpbml0aWFsaXphdGlvbnMiLCByeF9j
dGwp
Ow0KKw0KKwlrZnJlZShidWYpOw0KKw0KKwkvKiBBc2l4IGZyYW1pbmcgcGFja3MgbXVsdGlw
bGUg
ZXRoIGZyYW1lcyBpbnRvIGEgMksgdXNiIGJ1bGsgdHJhbnNmZXIgKi8NCisJaWYgKGRldi0+
ZHJp
dmVyX2luZm8tPmZsYWdzICYgRkxBR19GUkFNSU5HX0FYKSB7DQorCQkvKiBoYXJkX210dSAg
aXMg
c3RpbGwgdGhlIGRlZmF1bHQgLSB0aGUgZGV2aWNlIGRvZXMgbm90IHN1cHBvcnQNCisJCSAg
IGp1
bWJvIGV0aCBmcmFtZXMgKi8NCisJCWRldi0+cnhfdXJiX3NpemUgPSAyMDQ4Ow0KKwl9DQor
DQor
CXJldHVybiAwOw0KKw0KK291dDI6DQorCWtmcmVlKGJ1Zik7DQorb3V0MToNCisJcmV0dXJu
IHJl
dDsNCit9DQorDQorc3RhdGljIGludCBheDg4MTc4X2JpbmQoc3RydWN0IHVzYm5ldCAqZGV2
LCBz
dHJ1Y3QgdXNiX2ludGVyZmFjZSAqaW50ZikNCit7DQorCWludCByZXQ7DQorCXZvaWQgKmJ1
ZjsN
CisJdTE2IGVlcHJvbTsNCisJaW50IGdwaW8wID0gMDsNCisJaW50IHBoeW1vZGUgPSAwOw0K
Kw0K
Kwl1c2JuZXRfZ2V0X2VuZHBvaW50cyhkZXYsaW50Zik7DQorDQorCWJ1ZiA9IGttYWxsb2Mo
Niwg
R0ZQX0tFUk5FTCk7DQorCWlmKCFidWYpIHsNCisJCWRiZyAoIkNhbm5vdCBhbGxvY2F0ZSBt
ZW1v
cnkgZm9yIGJ1ZmZlciIpOw0KKwkJcmV0ID0gLUVOT01FTTsNCisJCWdvdG8gb3V0MTsNCisJ
fQ0K
Kw0KKwlhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9FTkFCTEUsIDAsIDAsIDAs
IE5V
TEwpOw0KKwlhc2l4X3JlYWRfY21kKGRldiwgQVhfQ01EX1JFQURfRUVQUk9NLCAweDAwMTcs
IDAs
IDIsICZlZXByb20pOw0KKwlhc2l4X3dyaXRlX2NtZChkZXYsIEFYX0NNRF9XUklURV9ESVNB
QkxF
LCAwLCAwLCAwLCBOVUxMKTsNCisNCisJZGJnKCJFRVBST00gaW5kZXggMHgxNyBpcyAweCUw
NHgi
LCBlZXByb20pOw0KKw0KKwlpZiAoZWVwcm9tID09IDB4ZmZmZikgew0KKwkJcGh5bW9kZSA9
IDA7
DQorCQlncGlvMCA9IDE7DQorCX0gZWxzZSB7DQorCQlwaHltb2RlID0gZWVwcm9tICYgNzsN
CisJ
CWdwaW8wID0gKGVlcHJvbSAmIDB4ODApID8gMCA6IDE7DQorCX0NCisJZGJnKCJHUElPMDog
JWQs
IFBoeU1vZGU6ICVkIiwgZ3BpbzAsIHBoeW1vZGUpOw0KKw0KKwlhc2l4X3dyaXRlX2dwaW8o
ZGV2
LCAweDAwOGMsIDQwKTsNCisJaWYgKChlZXByb20gPj4gOCkgIT0gMSkgew0KKwkJYXNpeF93
cml0
ZV9ncGlvKGRldiwgMHgwMDNjLCAzMCk7DQorCQlhc2l4X3dyaXRlX2dwaW8oZGV2LCAweDAw
MWMs
IDMwMCk7DQorCQlhc2l4X3dyaXRlX2dwaW8oZGV2LCAweDAwM2MsIDMwKTsNCisJfSBlbHNl
IHsN
CisJCWRiZygiZ3BpbyBwaHltb2RlID09IDEgcGF0aCIpOw0KKwkJYXNpeF93cml0ZV9ncGlv
KGRl
diwgMHgwMDA0LCAzMCk7DQorCQlhc2l4X3dyaXRlX2dwaW8oZGV2LCAweDAwMGMsIDMwKTsN
CisJ
fQ0KKw0KKwlhc2l4X3N3X3Jlc2V0KGRldiwgMCk7DQorCW1zbGVlcCgxNTApOw0KKw0KKwlh
c2l4
X3N3X3Jlc2V0KGRldiwgQVhfU1dSRVNFVF9QUkwgfCBBWF9TV1JFU0VUX0lQUEQpOw0KKwlt
c2xl
ZXAoMTUwKTsNCisNCisJYXNpeF93cml0ZV9yeF9jdGwoZGV2LCAwKTsNCisNCisJLyogR2V0
IHRo
ZSBNQUMgYWRkcmVzcyAqLw0KKwltZW1zZXQoYnVmLCAwLCBFVEhfQUxFTik7DQorCWlmICgo
cmV0
ID0gYXNpeF9yZWFkX2NtZChkZXYsIEFYODg3NzJfQ01EX1JFQURfTk9ERV9JRCwNCisJCQkJ
MCwg
MCwgRVRIX0FMRU4sIGJ1ZikpIDwgMCkgew0KKwkJZGJnKCJGYWlsZWQgdG8gcmVhZCBNQUMg
YWRk
cmVzczogJWQiLCByZXQpOw0KKwkJZ290byBvdXQyOw0KKwl9DQorCW1lbWNweShkZXYtPm5l
dC0+
ZGV2X2FkZHIsIGJ1ZiwgRVRIX0FMRU4pOw0KKw0KKwkvKiBJbml0aWFsaXplIE1JSSBzdHJ1
Y3R1
cmUgKi8NCisJZGV2LT5taWkuZGV2ID0gZGV2LT5uZXQ7DQorCWRldi0+bWlpLm1kaW9fcmVh
ZCA9
IGFzaXhfbWRpb19yZWFkOw0KKwlkZXYtPm1paS5tZGlvX3dyaXRlID0gYXNpeF9tZGlvX3dy
aXRl
Ow0KKwlkZXYtPm1paS5waHlfaWRfbWFzayA9IDB4ZmY7DQorCWRldi0+bWlpLnJlZ19udW1f
bWFz
ayA9IDB4ZmY7DQorCWRldi0+bWlpLnN1cHBvcnRzX2dtaWkgPSAxOw0KKwlkZXYtPm5ldC0+
ZG9f
aW9jdGwgPSBhc2l4X2lvY3RsOw0KKwlkZXYtPm1paS5waHlfaWQgPSBhc2l4X2dldF9waHlp
ZChk
ZXYpOw0KKwlkZXYtPm5ldC0+c2V0X211bHRpY2FzdF9saXN0ID0gYXNpeF9zZXRfbXVsdGlj
YXN0
Ow0KKwlkZXYtPm5ldC0+ZXRodG9vbF9vcHMgPSAmYXg4ODc3Ml9ldGh0b29sX29wczsNCisN
CisJ
YXNpeF9tZGlvX3dyaXRlKGRldi0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9CTUNSLCBC
TUNS
X1JFU0VUKTsNCisJYXNpeF9tZGlvX3dyaXRlKGRldi0+bmV0LCBkZXYtPm1paS5waHlfaWQs
IE1J
SV9BRFZFUlRJU0UsDQorCQkJQURWRVJUSVNFX0FMTCB8IEFEVkVSVElTRV9DU01BKTsNCisJ
bWlp
X253YXlfcmVzdGFydCgmZGV2LT5taWkpOw0KKw0KKwlpZiAoKHJldCA9IGFzaXhfd3JpdGVf
Y21k
KGRldiwgQVhfQ01EX1dSSVRFX01FRElVTV9NT0RFLA0KKwkJCQlBWDg4MTc4X01FRElVTV9E
RUZB
VUxULCAwLCAwLCBidWYpKSA8IDApIHsNCisJCWRiZygiV3JpdGUgbWVkaXVtIG1vZGUgcmVn
aXN0
ZXI6ICVkIiwgcmV0KTsNCisJCWdvdG8gb3V0MjsNCisJfQ0KKw0KKwlpZiAoKHJldCA9IGFz
aXhf
d3JpdGVfcnhfY3RsKGRldiwgMHgwMDk4KSkgPCAwKQ0KKwkJZ290byBvdXQyOw0KKw0KIAlr
ZnJl
ZShidWYpOw0KIA0KIAkvKiBBc2l4IGZyYW1pbmcgcGFja3MgbXVsdGlwbGUgZXRoIGZyYW1l
cyBp
bnRvIGEgMksgdXNiIGJ1bGsgdHJhbnNmZXIgKi8NCkBAIC03OTQsOCArOTUxLDggQEAgc3Rh
dGlj
IGludCBheDg4NzcyX2xpbmtfcmVzZXQoc3RydWN0IHVzYg0KIAl1MTYgbW9kZTsNCiANCiAJ
bW9k
ZSA9IEFYODg3NzJfTUVESVVNX0RFRkFVTFQ7DQotCWxwYSA9IGFzaXhfbWRpb19yZWFkX2xl
KGRl
di0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9MUEEpOw0KLQlhZHYgPSBhc2l4X21kaW9f
cmVh
ZF9sZShkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfQURWRVJUSVNFKTsNCisJbHBh
ID0g
YXNpeF9tZGlvX3JlYWQoZGV2LT5uZXQsIGRldi0+bWlpLnBoeV9pZCwgTUlJX0xQQSk7DQor
CWFk
diA9IGFzaXhfbWRpb19yZWFkKGRldi0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9BRFZF
UlRJ
U0UpOw0KIAlyZXMgPSBtaWlfbndheV9yZXN1bHQobHBhfGFkdik7DQogDQogCWlmICgocmVz
ICYg
TFBBX0RVUExFWCkgPT0gMCkNCkBAIC04MDcsNiArOTY0LDQ2IEBAIHN0YXRpYyBpbnQgYXg4
ODc3
Ml9saW5rX3Jlc2V0KHN0cnVjdCB1c2INCiAJcmV0dXJuIDA7DQogfQ0KIA0KK3N0YXRpYyBp
bnQg
YXg4ODE3OF9saW5rX3Jlc2V0KHN0cnVjdCB1c2JuZXQgKmRldikNCit7DQorCXUxNiBscGE7
DQor
CXUxNiBhZHY7DQorCXUxNiBscGEyOw0KKwlpbnQgbWVkaWE7DQorCWludCBkdXBsZXg7DQor
CXUx
NiBtb2RlOw0KKw0KKwltaWlfY2hlY2tfbWVkaWEoJmRldi0+bWlpLCAxLCAxKTsNCisNCisJ
bW9k
ZSA9IEFYODgxNzhfTUVESVVNX0RFRkFVTFQ7DQorDQorCWFkdiA9IGFzaXhfbWRpb19yZWFk
KGRl
di0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9BRFZFUlRJU0UpOw0KKwlscGEgPSBhc2l4
X21k
aW9fcmVhZChkZXYtPm5ldCwgZGV2LT5taWkucGh5X2lkLCBNSUlfTFBBKTsNCisJbHBhMiA9
IGFz
aXhfbWRpb19yZWFkKGRldi0+bmV0LCBkZXYtPm1paS5waHlfaWQsIE1JSV9TVEFUMTAwMCk7
DQor
DQorCWRldmRiZyhkZXYsICJheDg4MTc4X2xpbmtfcmVzZXQoKSBscGE9MHglMDR4LCBhZHY9
MHgl
MDR4LCBscGEyPTB4JTA0eCIsIGxwYSwgYWR2LCBscGEyKTsNCisNCisJbWVkaWEgPSBtaWlf
bndh
eV9yZXN1bHQobHBhICYgYWR2KTsNCisJZHVwbGV4ID0gKG1lZGlhICYgQURWRVJUSVNFX0ZV
TEwp
ID8gMSA6IDA7DQorCWlmIChscGEyICYgTFBBXzEwMDBGVUxMKQ0KKwkJZHVwbGV4ID0gMTsN
CisN
CisJaWYgKGxwYTIgJiAoTFBBXzEwMDBGVUxMIHwgTFBBXzEwMDBIQUxGKSkNCisJCW1vZGUg
Jj0g
QVg4ODE3OF9NRURJVU1fR0lHQUJJVDsNCisJZWxzZSBpZiAobWVkaWEgJiAoQURWRVJUSVNF
XzEw
MEZVTEwgfCBBRFZFUlRJU0VfMTAwSEFMRikpDQorCQltb2RlICY9IEFYODgxNzhfTUVESVVN
XzEw
ME1COw0KKwllbHNlDQorCQltb2RlICY9IH5BWDg4MTc4X01FRElVTV8xMDBNQjsNCisNCisJ
aWYg
KCFkdXBsZXgpDQorCQltb2RlICY9IH5BWDg4MTc4X01FRElVTV9GVUxMX0RVUExFWDsNCisN
CisJ
ZGV2ZGJnKGRldiwgImF4ODgxNzhfbGlua19yZXNldCgpIHNldHRpbmcgbW9kZSB0byAweCUw
NHgi
LCBtb2RlKTsNCisJYXNpeF93cml0ZV9jbWQoZGV2LCBBWF9DTURfV1JJVEVfTUVESVVNX01P
REUs
IG1vZGUsIDAsIDAsIE5VTEwpOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQogc3RhdGljIGNv
bnN0
IHN0cnVjdCBkcml2ZXJfaW5mbyBheDg4MTd4X2luZm8gPSB7DQogCS5kZXNjcmlwdGlvbiA9
ICJB
U0lYIEFYODgxN3ggVVNCIDIuMCBFdGhlcm5ldCIsDQogCS5iaW5kID0gYXg4ODE3Ml9iaW5k
LA0K
QEAgLTg1OCw2ICsxMDU1LDE3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8g
YXg4
ODc3Ml8NCiAJLnR4X2ZpeHVwID0gYXg4ODc3Ml90eF9maXh1cCwNCiB9Ow0KIA0KK3N0YXRp
YyBj
b25zdCBzdHJ1Y3QgZHJpdmVyX2luZm8gYXg4ODE3OF9pbmZvID0gew0KKwkuZGVzY3JpcHRp
b24g
PSAiQVNJWCBBWDg4MTc4IFVTQiAyLjAgRXRoZXJuZXQiLA0KKwkuYmluZCA9IGF4ODgxNzhf
Ymlu
ZCwNCisJLnN0YXR1cyA9IGFzaXhfc3RhdHVzLA0KKwkubGlua19yZXNldCA9IGF4ODgxNzhf
bGlu
a19yZXNldCwNCisJLnJlc2V0ID0gYXg4ODc3Ml9saW5rX3Jlc2V0LA0KKwkuZmxhZ3MgPSBG
TEFH
X0VUSEVSIHwgRkxBR19GUkFNSU5HX0FYLA0KKwkucnhfZml4dXAgPSBheDg4NzcyX3J4X2Zp
eHVw
LA0KKwkudHhfZml4dXAgPSBheDg4NzcyX3R4X2ZpeHVwLA0KK307DQorDQogc3RhdGljIGNv
bnN0
IHN0cnVjdCB1c2JfZGV2aWNlX2lkCXByb2R1Y3RzIFtdID0gew0KIHsNCiAJLy8gTGlua3N5
cyBV
U0IyMDBNDQpAQCAtOTE5LDYgKzExMjcsMTAgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB1c2Jf
ZGV2
aWNlX2lkCXByb2R1Yw0KIAkvLyAwUTAgY2FibGUgZXRoZXJuZXQNCiAJVVNCX0RFVklDRSAo
MHgx
NTU3LCAweDc3MjApLA0KIAkuZHJpdmVyX2luZm8gPSAodW5zaWduZWQgbG9uZykgJmF4ODg3
NzJf
aW5mbywNCit9LCB7DQorCS8vIEFTSVggQVg4ODE3OCAxMC8xMDAvMTAwMA0KKwlVU0JfREVW
SUNF
ICgweDBiOTUsIDB4MTc4MCksDQorCS5kcml2ZXJfaW5mbyA9ICh1bnNpZ25lZCBsb25nKSAm
YXg4
ODE3OF9pbmZvLA0KIH0sDQogCXsgfSwJCS8vIEVORA0KIH07DQo=


--=-+PJR33xIdNuieYWZ4+Tk--

--=-x6I/yARinv9UN4+dgln1
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.3 (GNU/Linux)

iD8DBQBEcvQixasLqOyGHncRAqnqAJ0Xu3ep7Q0wMW2j6PUEVfNznpQUCgCeJUx0
oZWZBZCaX5Mlf+l2XLDroA0=
=sQnw
-----END PGP SIGNATURE-----

--=-x6I/yARinv9UN4+dgln1--





--__--__--

_______________________________________________
linux-usb-devel@lists.sourceforge.net
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel


End of linux-usb-devel Digest




********************** Legal Disclaimer ****************************
"This email may contain confidential and privileged material for the sole use 
of the intended recipient.  Any unauthorized review, use or distribution by 
others is strictly prohibited.  If you have received the message in error, 
please advise the sender by reply email and delete the message. Thank you."
**********************************************************************



-------------------------------------------------------
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&kid0709&bid&3057&dat1642
_______________________________________________
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