On Wed, 2013-02-13 at 18:27 +0100, Johan Hovold wrote: > Move port drain-delay handling to a separate function. > --- > drivers/tty/tty_port.c | 29 ++++++++++++++++++----------- > 1 file changed, 18 insertions(+), 11 deletions(-) > > diff --git a/drivers/tty/tty_port.c b/drivers/tty/tty_port.c > index ffe3689..0a5e955 100644 > --- a/drivers/tty/tty_port.c > +++ b/drivers/tty/tty_port.c > @@ -407,6 +407,23 @@ int tty_port_block_til_ready(struct tty_port *port, > } > EXPORT_SYMBOL(tty_port_block_til_ready); > > +static void tty_port_drain_delay(struct tty_port *port, struct tty_struct *tty) > +{ > + unsigned int bps = tty_get_baud_rate(tty); > + long timeout; > + if (!port->drain_delay) > + return; ^^^^^^^^^^^^ How about drop this and ... > + if (bps > 1200) { > + timeout = (HZ * 10 * port->drain_delay) / bps; > + timeout = max_t(long, timeout, HZ / 10); > + } else { > + timeout = 2 * HZ; > + } > + schedule_timeout_interruptible(timeout); > +} > + > int tty_port_close_start(struct tty_port *port, > struct tty_struct *tty, struct file *filp) > { > @@ -445,17 +462,7 @@ int tty_port_close_start(struct tty_port *port, > if (test_bit(ASYNCB_INITIALIZED, &port->flags) && > port->closing_wait != ASYNC_CLOSING_WAIT_NONE) > tty_wait_until_sent_from_close(tty, port->closing_wait); > - if (port->drain_delay) { > - unsigned int bps = tty_get_baud_rate(tty); > - long timeout; > - > - if (bps > 1200) > - timeout = max_t(long, > - (HZ * 10 * port->drain_delay) / bps, HZ / 10); > - else > - timeout = 2 * HZ; > - schedule_timeout_interruptible(timeout); > - } > + tty_port_drain_delay(port, tty); .... if (port->drain_delay) tty_port_drain_delay(port, tty); > /* Flush the ldisc buffering */ > tty_ldisc_flush(tty); > -- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html