mirror of
https://github.com/torvalds/linux.git
synced 2026-05-23 06:31:58 +02:00
serial: 8250: Use frame time to determine timeout
Rather than using a hard-coded per-character Tx-timeout of 10ms, use the frame time to determine a timeout value. The value is doubled to ensure that a timeout is only hit during unexpected circumstances. Since the frame time may not be available during early printing, the previous 10ms value is kept as a fallback. Signed-off-by: John Ogness <john.ogness@linutronix.de> Reviewed-by: Petr Mladek <pmladek@suse.com> Link: https://lore.kernel.org/r/20250107212702.169493-3-john.ogness@linutronix.de Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
d91f98be26
commit
8d5cfb1fe5
|
|
@ -2081,9 +2081,17 @@ static void serial8250_break_ctl(struct uart_port *port, int break_state)
|
|||
/* Returns true if @bits were set, false on timeout */
|
||||
static bool wait_for_lsr(struct uart_8250_port *up, int bits)
|
||||
{
|
||||
unsigned int status, tmout = 10000;
|
||||
unsigned int status, tmout;
|
||||
|
||||
/*
|
||||
* Wait for a character to be sent. Fallback to a safe default
|
||||
* timeout value if @frame_time is not available.
|
||||
*/
|
||||
if (up->port.frame_time)
|
||||
tmout = up->port.frame_time * 2 / NSEC_PER_USEC;
|
||||
else
|
||||
tmout = 10000;
|
||||
|
||||
/* Wait up to 10ms for the character(s) to be sent. */
|
||||
for (;;) {
|
||||
status = serial_lsr_in(up);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user