tty: Sort out the USB sysrq changes that wrecked performance
We can't go around calling all sorts of magic per character functions at full rate 3G data speed. Signed-off-by: Alan Cox <alan@linux.intel.com> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
d6be791cbd
commit
4cd1de0afa
|
@ -424,10 +424,17 @@ static void flush_and_resubmit_read_urb(struct usb_serial_port *port)
|
|||
if (!tty)
|
||||
goto done;
|
||||
|
||||
/* Push data to tty */
|
||||
for (i = 0; i < urb->actual_length; i++, ch++) {
|
||||
if (!usb_serial_handle_sysrq_char(port, *ch))
|
||||
tty_insert_flip_char(tty, *ch, TTY_NORMAL);
|
||||
/* The per character mucking around with sysrq path it too slow for
|
||||
stuff like 3G modems, so shortcircuit it in the 99.9999999% of cases
|
||||
where the USB serial is not a console anyway */
|
||||
if (!port->console || !port->sysrq)
|
||||
tty_insert_flip_string(tty, ch, urb->actual_length);
|
||||
else {
|
||||
/* Push data to tty */
|
||||
for (i = 0; i < urb->actual_length; i++, ch++) {
|
||||
if (!usb_serial_handle_sysrq_char(port, *ch))
|
||||
tty_insert_flip_char(tty, *ch, TTY_NORMAL);
|
||||
}
|
||||
}
|
||||
tty_flip_buffer_push(tty);
|
||||
tty_kref_put(tty);
|
||||
|
|
Loading…
Reference in New Issue