tty: serial: men_z135_uart: Wakeup UART after transmitting
authorJohannes Thumshirn <johannes.thumshirn@men.de>
Mon, 16 Jun 2014 05:33:38 +0000 (07:33 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Jul 2014 00:35:42 +0000 (17:35 -0700)
Call uart_write_wakeup() after writing the hardware FIFO and updateing the FIFO
pointers.

This fixes high latency and jitter on PPP over Serial links.

Reported-by: Jun Shih <Jun.Shih@pason.com>
Tested-by: Jun Shih <Jun.Shih@pason.com>
Signed-off-by: Johannes Thumshirn <johannes.thumshirn@men.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/tty/serial/men_z135_uart.c

index c9d18548783a480054b050f18d92e16724d62da8..30e9e60bc5cdd8b85c7d8278dec91ad7e2e5beb4 100644 (file)
@@ -308,9 +308,6 @@ static void men_z135_handle_tx(struct men_z135_port *uart)
        if (port->x_char)
                goto out;
 
-       if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
-               uart_write_wakeup(port);
-
        /* calculate bytes to copy */
        qlen = uart_circ_chars_pending(xmit);
        if (qlen <= 0)
@@ -357,6 +354,9 @@ static void men_z135_handle_tx(struct men_z135_port *uart)
 
        port->icount.tx += n;
 
+       if (uart_circ_chars_pending(xmit) < WAKEUP_CHARS)
+               uart_write_wakeup(port);
+
 irq_en:
        if (!uart_circ_empty(xmit))
                men_z135_reg_set(uart, MEN_Z135_CONF_REG, MEN_Z135_IER_TXCIEN);