serial: core: Perform RTS signalling before soft flow ctrl
authorPeter Hurley <peter@hurleysoftware.com>
Mon, 11 Jan 2016 04:24:02 +0000 (20:24 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 28 Jan 2016 22:17:42 +0000 (14:17 -0800)
When throttling, time is of the essence; try RTS signalling before
soft flow control, which will take longer.

Signed-off-by: Peter Hurley <peter@hurleysoftware.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/serial_core.c

index fa7f442424cf0ecb22525a39184b531cabcad96d..be9359fdf5c718557f9f0b21700281959d6c35c1 100644 (file)
@@ -641,11 +641,11 @@ static void uart_throttle(struct tty_struct *tty)
                mask &= ~port->status;
        }
 
-       if (mask & UPSTAT_AUTOXOFF)
-               uart_send_xchar(tty, STOP_CHAR(tty));
-
        if (mask & UPSTAT_AUTORTS)
                uart_clear_mctrl(port, TIOCM_RTS);
+
+       if (mask & UPSTAT_AUTOXOFF)
+               uart_send_xchar(tty, STOP_CHAR(tty));
 }
 
 static void uart_unthrottle(struct tty_struct *tty)
@@ -664,11 +664,11 @@ static void uart_unthrottle(struct tty_struct *tty)
                mask &= ~port->status;
        }
 
-       if (mask & UPSTAT_AUTOXOFF)
-               uart_send_xchar(tty, START_CHAR(tty));
-
        if (mask & UPSTAT_AUTORTS)
                uart_set_mctrl(port, TIOCM_RTS);
+
+       if (mask & UPSTAT_AUTOXOFF)
+               uart_send_xchar(tty, START_CHAR(tty));
 }
 
 static void uart_get_info(struct tty_port *port, struct serial_struct *retinfo)