aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/usb/class/cdc-acm.h
diff options
context:
space:
mode:
authorLadislav Michl <ladis@linux-mips.org>2016-11-18 13:11:26 -0500
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2016-11-21 05:36:16 -0500
commit1aba579f3cf51fd0fe0b4d46cc13823fd1200acb (patch)
tree1a522a1fc4aa36b8ed75eecfb5e05f8fa67afead /drivers/usb/class/cdc-acm.h
parentd305394ee8c4132bcea0bb36fd6a360a415376bf (diff)
cdc-acm: handle read pipe errors
Read urbs are submitted back only on success, causing read pipe running out of urbs after few errors. No more characters can be read from tty device then until it is reopened and no errors are reported. Fix that by always submitting urbs back and clearing stall on -EPIPE. Signed-off-by: Ladislav Michl <ladis@linux-mips.org> Acked-by: Oliver Neukum <oneukum@suse.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/class/cdc-acm.h')
-rw-r--r--drivers/usb/class/cdc-acm.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/drivers/usb/class/cdc-acm.h b/drivers/usb/class/cdc-acm.h
index eca5a5f80a54..c980f11cdf56 100644
--- a/drivers/usb/class/cdc-acm.h
+++ b/drivers/usb/class/cdc-acm.h
@@ -103,6 +103,9 @@ struct acm {
103 spinlock_t write_lock; 103 spinlock_t write_lock;
104 struct mutex mutex; 104 struct mutex mutex;
105 bool disconnected; 105 bool disconnected;
106 unsigned long flags;
107# define EVENT_TTY_WAKEUP 0
108# define EVENT_RX_STALL 1
106 struct usb_cdc_line_coding line; /* bits, stop, parity */ 109 struct usb_cdc_line_coding line; /* bits, stop, parity */
107 struct work_struct work; /* work queue entry for line discipline waking up */ 110 struct work_struct work; /* work queue entry for line discipline waking up */
108 unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */ 111 unsigned int ctrlin; /* input control lines (DCD, DSR, RI, break, overruns) */