From: Paul Fulghum <paulkf@microgate.com>
To: Lennart Sorensen <lsorense@csclub.uwaterloo.ca>
Cc: linux-kernel@vger.kernel.org
Subject: Re: Strange problem with tty layer
Date: Wed, 24 Jan 2007 15:20:53 -0600 [thread overview]
Message-ID: <45B7CDB5.7020909@microgate.com> (raw)
In-Reply-To: <20070124204009.GA7584@csclub.uwaterloo.ca>
Lennart Sorensen wrote:
> I have confirmed that the driver does in fact receive all the
> characters, and that they are correct, and that they are being passed to
> the tty layer using tty_insert_flip_string, and that it returns that all
> the characters have been passed to the tty layer. The user space
> application however still doesn't see the last few characters (when it
> fails).
>
> The problem seems to occour every few hours of testing on a 266MHz Geode
> SC1200. When I change the clock to 133MHz, it happens every few minutes
> instead (so much more frequently). I suspect there is some race
> condition that allows the tty layer to not get around to processing all
> the data in the buffer, even when asked for data by the application
> (which is waiting on the serial port using select, with a 4s timeout).
In 2.6.16 the tty buffering pushes data to the line
discipline without regard to tty->receive_room.
If the line discipline can't keep up, the data gets dropped.
I observed this data loss at higher speeds when
placing the system under heavy load.
2.6.18 added code to respect tty->receive_room.
This may or may not be your problem, but you should
be able to check by adding a conditional printk
to drivers/char/tty_io.c:flush_to_ldisc()
If tty->receive_room is less than the size of the buffer
passed to disc->receive_buf() then you are losing data.
--
Paul Fulghum
Microgate Systems, Ltd.
next prev parent reply other threads:[~2007-01-24 21:20 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-01-24 20:40 Strange problem with tty layer Lennart Sorensen
2007-01-24 21:20 ` Paul Fulghum [this message]
2007-01-24 21:48 ` Lennart Sorensen
2007-01-25 15:16 ` Lennart Sorensen
2007-01-26 14:20 ` Lennart Sorensen
2007-01-26 14:51 ` Paul Fulghum
2007-01-26 14:56 ` Lennart Sorensen
2007-01-26 15:06 ` Paul Fulghum
2007-01-26 16:08 ` Lennart Sorensen
2007-01-29 19:27 ` Lennart Sorensen
2007-02-17 16:09 ` Lennart Sorensen
-- strict thread matches above, loose matches on Subject: below --
2007-01-24 21:19 Kilau, Scott
2007-01-24 21:34 ` Lennart Sorensen
2007-01-25 14:31 ` Russell King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=45B7CDB5.7020909@microgate.com \
--to=paulkf@microgate.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lsorense@csclub.uwaterloo.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.