Re: serial flow control appears broken

From: Paul Fulghum
Date: Fri Jul 27 2007 - 19:32:47 EST


On Fri, 2007-07-27 at 13:48 -0700, Lee Howard wrote:
> Here's the output:
>
> type: 4
> line: 1
> line: 760
> irq: 3
> flags: 1358954688
> xmit_fifo_size: 16
> custom_divisor: 0
> baud_base: 115200

OK, the FIFO should be enabled.

What is known:

* The error is a hardware FIFO overrun.
- observed message is in n_tty due to driver setting TTY_OVERRUN

* The RTS/CTS flow control is not involved
- this is done only by the ldisc in response to buffer levels
- you verified crtscts is set
- you did not observed RTS change when 'overflow error' logged
- you did observe RTS change when application stopped reading

So this seems to be a latency issue reading the receive
FIFO in the ISR. The current rx FIFO trigger level
should be 8 bytes (UART_FCR_R_TRIG_10) which gives the
ISR 694usec to get the data at 115200bps.

IIRC, in 2.2.X kernels this defaulted to 4 bytes
(TRIG_01) which gave a little more time to service the interrupt.

How does the data rate affect the frequency of the overrun errors?
Does 57600bps make them go away?

--
Paul




-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/