Gitweb:     
http://git.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commit;h=00409bb045887ec5e7b9e351bc080c38ab6bfd33
Commit:     00409bb045887ec5e7b9e351bc080c38ab6bfd33
Parent:     134d99e302618eeb102c2a5be1f9e98696288bdd
Author:     Matthias Goebl <[EMAIL PROTECTED]>
AuthorDate: Fri Jan 4 02:19:30 2008 -0800
Committer:  David S. Miller <[EMAIL PROTECTED]>
CommitDate: Fri Jan 4 03:55:40 2008 -0800

    [ISDN] i4l: 'NO CARRIER' message lost after ldisc flush
    
    The ISDN tty layer doesn't produce a 'NO CARRIER' message after hangup.
    
    I suppose it broke when tty_buffer_flush() has been added to
    tty_ldisc_flush() in the commit below.
    
    For isdn_tty_modem_result(RESULT_NO_CARRIER..) the
    message inserted via isdn_tty_at_cout() -> tty_insert_flip_char()
    is flushed immediately by tty_ldisc_flush() -> tty_buffer_flush().
    More annoyingly, the audio abort sequence DLE-ETX is also lost.
    
    This patch fixes only active audio connections, because I assume that nobody
    changes the line discipline for audio.
    
    For non-audio connections the problem remains.
    Maybe we can remove the tty_ldisc_flush() in isdn_tty_modem_result()
    at all because it's done at tty_close?
    
    On Mon, May 07, 2007 at 04:05:57PM -0500, Paul Fulghum wrote:
    > Flush the tty flip buffer when the line discipline
    > input queue is flushed, including the user call
    > tcflush(TCIFLUSH/TCIOFLUSH). This prevents unexpected
    > stale data after a user application calls tcflush().
    >
    > Cc: Alan Cox <[EMAIL PROTECTED]>
    > Cc: Antonino Ingargiola <[EMAIL PROTECTED]>
    > Signed-off-by: Paul Fulghum <[EMAIL PROTECTED]>
    >
    > --- a/drivers/char/tty_io.c       2007-05-04 05:46:55.000000000 -0500
    > +++ b/drivers/char/tty_io.c       2007-05-05 03:23:46.000000000 -0500
    > @@ -1240,6 +1263,7 @@ void tty_ldisc_flush(struct tty_struct *
    >                   ld->flush_buffer(tty);
    >           tty_ldisc_deref(ld);
    >   }
    > + tty_buffer_flush(tty);
    [..]
    
    Signed-off-by: Matthias Goebl <[EMAIL PROTECTED]>
    Signed-off-by: David S. Miller <[EMAIL PROTECTED]>
---
 drivers/isdn/i4l/isdn_tty.c |    5 +++++
 1 files changed, 5 insertions(+), 0 deletions(-)

diff --git a/drivers/isdn/i4l/isdn_tty.c b/drivers/isdn/i4l/isdn_tty.c
index 4e5f87c..24679a3 100644
--- a/drivers/isdn/i4l/isdn_tty.c
+++ b/drivers/isdn/i4l/isdn_tty.c
@@ -2645,7 +2645,12 @@ isdn_tty_modem_result(int code, modem_info * info)
                if ((info->flags & ISDN_ASYNC_CLOSING) || (!info->tty)) {
                        return;
                }
+#ifdef CONFIG_ISDN_AUDIO
+               if ( !info->vonline )
+                       tty_ldisc_flush(info->tty);
+#else
                tty_ldisc_flush(info->tty);
+#endif
                if ((info->flags & ISDN_ASYNC_CHECK_CD) &&
                    (!((info->flags & ISDN_ASYNC_CALLOUT_ACTIVE) &&
                       (info->flags & ISDN_ASYNC_CALLOUT_NOHUP)))) {
-
To unsubscribe from this list: send the line "unsubscribe git-commits-head" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to