On Wed, Feb 13, 2013 at 08:39:31PM -0500, Peter Hurley wrote: > 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); Yeah, I agree. Checking at the call site would perhaps be more clear in this case. Thanks, Johan -- 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