Re: Serial driver hangs

From: Paul Fulghum
Date: Wed Sep 29 2004 - 09:32:11 EST


On Wed, 2004-09-29 at 09:07, Roland CaÃebohm wrote:
> I have added a routine to "struct tty_driver" for restarting
> the RX interrupt after TTY_DONT_FLIP bit is cleared in
> read_chan().

If you are using RTS/CTS flow control,
your scheme might prevent data loss if you also
drop RTS (like driver throttle method) when disabling
the rx IRQ and reasserting RTS (unthrottle) when
reenabling the IRQ. Unfortunately, this may interfere
with the line discipline's use of throttle/unthrottle.

> It seems to take to long time in read_chan(). Do you now what
> is the exact reason of locking the filp buffer with the
> TTY_DONT_FLIP flag? For a short look I would say the buffers
> are safe locked by the spinlock tty->read_lock.

I can't identify the reason.
If you feel brave, remove the setting/clearing
of TTY_DONT_FLIP and see what happens.

--
Paul Fulghum
paulkf@xxxxxxxxxxxxx

-
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/