summaryrefslogtreecommitdiff
path: root/packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
diff options
context:
space:
mode:
Diffstat (limited to 'packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff')
-rw-r--r--packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff22
1 files changed, 22 insertions, 0 deletions
diff --git a/packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff b/packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
new file mode 100644
index 0000000000..bfc1af9db9
--- /dev/null
+++ b/packages/linux/linux-mtx-1-2.4.27/32-usbserial-stalled-hack.diff
@@ -0,0 +1,22 @@
+--- linux-2.4.27-mtx1/drivers/usb/serial/usbserial.c 2005-08-28 20:23:40.000000000 +0200
++++ linux-2.4.27-mtx1/drivers/usb/serial/usbserial.c 2005-08-28 20:23:12.000000000 +0200
+@@ -499,6 +499,19 @@
+ /* get_usb_serial checks port->tty, so cannot be used */
+ serial = port->serial;
+ if (port->write_busy) {
++
++ /*-- how is the status of the outgoing urb? --*/
++ /*-- did we miss a callback? --*/
++ /*-- problem with the hack below is that we may */
++ /* corrup structures we currently walk thru */
++ if (port->write_urb && port->write_urb->status != -EINPROGRESS) {
++ if (port->write_urb->complete)
++ port->write_urb->complete(port->write_urb);
++ else
++ dbg("%s: URB %p has no complete function\n", __FUNCTION__, port->write_urb);
++ }
++
++
+ dbg("%s - port %d busy", __FUNCTION__, port->number);
+ pos = pos->next;
+ continue;