forked from Minki/linux
USB: keyspan: fix overrun-error reporting
Fix reporting of overrun errors, which are not associated with a
character. Instead insert a null character and report only once.
Fixes: 1da177e4c3
("Linux-2.6.12-rc2")
Cc: stable <stable@vger.kernel.org>
Signed-off-by: Johan Hovold <johan@kernel.org>
This commit is contained in:
parent
5d1678a33c
commit
855515a6d3
@ -311,12 +311,13 @@ static void usa26_indat_callback(struct urb *urb)
|
||||
if ((data[0] & 0x80) == 0) {
|
||||
/* no errors on individual bytes, only
|
||||
possible overrun err */
|
||||
if (data[0] & RXERROR_OVERRUN)
|
||||
err = TTY_OVERRUN;
|
||||
else
|
||||
err = 0;
|
||||
if (data[0] & RXERROR_OVERRUN) {
|
||||
tty_insert_flip_char(&port->port, 0,
|
||||
TTY_OVERRUN);
|
||||
}
|
||||
for (i = 1; i < urb->actual_length ; ++i)
|
||||
tty_insert_flip_char(&port->port, data[i], err);
|
||||
tty_insert_flip_char(&port->port, data[i],
|
||||
TTY_NORMAL);
|
||||
} else {
|
||||
/* some bytes had errors, every byte has status */
|
||||
dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
|
||||
@ -787,13 +788,13 @@ static void usa90_indat_callback(struct urb *urb)
|
||||
if ((data[0] & 0x80) == 0) {
|
||||
/* no errors on individual bytes, only
|
||||
possible overrun err*/
|
||||
if (data[0] & RXERROR_OVERRUN)
|
||||
err = TTY_OVERRUN;
|
||||
else
|
||||
err = 0;
|
||||
if (data[0] & RXERROR_OVERRUN) {
|
||||
tty_insert_flip_char(&port->port, 0,
|
||||
TTY_OVERRUN);
|
||||
}
|
||||
for (i = 1; i < urb->actual_length ; ++i)
|
||||
tty_insert_flip_char(&port->port,
|
||||
data[i], err);
|
||||
data[i], TTY_NORMAL);
|
||||
} else {
|
||||
/* some bytes had errors, every byte has status */
|
||||
dev_dbg(&port->dev, "%s - RX error!!!!\n", __func__);
|
||||
|
Loading…
Reference in New Issue
Block a user