linux-serial.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Lee Howard <faxguy@howardsilvan.com>
To: Robert Hancock <hancockr@shaw.ca>
Cc: linux-serial@vger.kernel.org, tytso@mit.edu,
	rmk@arm.linux.org.uk, linux-kernel@vger.kernel.org
Subject: Re: serial flow control appears broken
Date: Thu, 26 Jul 2007 09:08:17 -0700	[thread overview]
Message-ID: <46A8C6F1.4080309@howardsilvan.com> (raw)
In-Reply-To: <46A84B4A.6070902@shaw.ca>

Robert Hancock wrote:

> Lee Howard wrote:
>
>> Hello.
>>
>> I have fax modems that will, in their proper behavior with certain 
>> features, send up to 64 kilobytes of data to the host DTE all at 
>> once.  (So, the fax modem handles an incoming fax and periodically 
>> will send between 256 bytes and 64 kilobytes of data in bursts.)
>>
>> When the DCE-DTE (modem-to-host) communication rate is established at 
>> 115200 bps data loss occurs systems using at least Linux kernels 
>> 2.6.5 and 2.6.18 (and probably everything in-beween and then some 
>> more).  This is because the modem overflows the host's buffer.  This 
>> is evidenced in kernel logging:
>>
>> Jul 23 14:01:30 gollum kernel: ttyS1: 1 input overrun(s)
>> Jul 23 17:09:45 gollum kernel: ttyS1: 1 input overrun(s)
>>
>> Normally I would blame the modem itself for not honoring the host's 
>> flow control signals.  However, I have worked with the modem 
>> manufacturer closely on this matter for over three months now.  In 
>> that process they have improved the responsiveness of the modem and 
>> have fixed other problems, but the end result is that it truly does 
>> appear that the serial tty driver is not using flow control.  Whether 
>> software flow control (XON/XOFF) or hardware flow control (RTS/CTS) 
>> is used the result is the same.
>>
>> This is evidenced in hardware flow control by a little LED labeled 
>> "RTS" that is on the external modem.  This LED lights up when pin 7 
>> of the DB9 serial connection is given +12Vdc current (signalling 
>> "RTS" is on - that the host can accept data).  The LED goes dark when 
>> the current is removed (signalling that the host cannot accept 
>> data).  This "RTS" LED never flickers at all, as it should, when 
>> receiving these bursts of data - the LED stays lit as long as the 
>> serial cable is connected to the host... and yet I will see those 
>> "input overrun" messages.  Thus, it seems quite clear that the Linux 
>> serial tty driver is not deasserting RTS as it should in hardware 
>> flow control.  (And probably the analogous problem exists in software 
>> flow control, too.)
>>
>> Please tell me what I can do to help you resove and/or remedy this 
>> matter.  Also, please let me know if I have contacted the wrong 
>> people.  (I have cross-posted to linux-kernel as a catch-all.  I am 
>> not subscribed to either linux-serial or linux-kernel mailing lists.  
>> So please CC me in any list responses.)
>>
>> If it is of any value to know (perhaps they have common code?), the 
>> same error occurs on FreeBSD 6.2 as well.   The problem does not 
>> occur on Windows.  The problem does not occur on RedHat 6.0 (kernel 
>> 2.2.5).
>
>
> What kind of serial port and machine is this on? From what I can see, 
> a standard 16550 UART (not a special variant) just doesn't have any 
> support for clearing RTS on its own when its input FIFO gets too full. 
> The kernel would have to do it in that case. I'm not seeing where it 
> would be controlling that automatically (as opposed to manually from 
> the application with TIOCM_RTS). I'm also not sure if the UART gives 
> the kernel enough information for it to even be able to control this 
> line properly automatically.
>
> That's assuming it actually is a 16550 or similar with a 16-byte FIFO 
> at all, which assuming it's a non-ancient PC it should be, but who knows.


Serial: 8250/16550 driver $Revision: 1.90 $ 8 ports, IRQ sharing enabled
ttyS0 at I/O 0x3f8 (irq = 4) is a 16550A
ttyS1 at I/O 0x2f8 (irq = 3) is a 16550A

It's a Shuttle HOT-661 motherboard (VIA Apollo Pro Plus mainboard 
chipset).  Both FreeBSD and Linux identify the serial chipset type as 
16550A.

If the application were to use TIOCM_RTS how would it know when to apply 
it or not?  Is there some approach that the application could take to 
manage flow control on the serial port?  What about software flow 
control?  Does the application (and not the driver) need to be managing 
the DC1/DC3 signalling on the host-side?

Thanks,

Lee.

  reply	other threads:[~2007-07-26 16:08 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <fa.Z6O0xFRT69zes0Mg+agt3Uiwux4@ifi.uio.no>
2007-07-26  7:20 ` serial flow control appears broken Robert Hancock
2007-07-26 16:08   ` Lee Howard [this message]
2007-07-26 16:31     ` Alan Cox
2007-07-27  5:53       ` Lee Howard
2007-07-27 11:47         ` Alan Cox
2007-07-27 17:36           ` Lee Howard
2007-07-27 13:45         ` Tilman Schmidt
2007-07-27 19:34           ` Paul Fulghum
2007-07-27 20:48             ` Lee Howard
2007-07-27 23:28               ` Paul Fulghum
2007-07-28  4:51                 ` Lee Howard
2007-07-28  9:18                   ` Russell King
2007-07-28 12:00                   ` Alan Cox
2007-07-28 15:39                     ` Lee Howard
2007-08-01 21:54                       ` Frantisek Rysanek
2007-07-28 16:41                   ` Ray Lee
2007-08-04 18:21                     ` Lee Howard
2007-08-04 22:07                       ` Paul Fulghum
2007-08-05  0:00                         ` Lee Howard
2007-08-05 14:52                           ` Paul Fulghum
2007-07-27 19:34           ` Paul Fulghum
2007-07-27 20:05           ` Lee Howard
2007-07-27 11:32     ` Maciej W. Rozycki
2007-07-27 17:11       ` Lee Howard
2007-07-27 17:41         ` Alan Cox
2007-07-27 17:53         ` Maciej W. Rozycki
2007-07-27 18:11           ` Lee Howard
2007-07-30  9:36             ` Maciej W. Rozycki
2007-07-27 18:22           ` Robert Hancock
2007-07-27 18:46             ` Paul Fulghum
2007-07-27 19:05             ` Paul Fulghum
2007-07-30  9:39               ` Maciej W. Rozycki
2007-07-27 19:14             ` Paul Fulghum
2007-07-28  9:28             ` Russell King
2007-07-30  9:45               ` Maciej W. Rozycki
2007-07-30  9:59                 ` Russell King
2007-08-02 14:57                 ` Mark Lord
2007-08-02 16:14                   ` Robert Hancock
2007-08-02 16:29                     ` Mark Lord
2007-08-02 16:40                       ` Robert Hancock
2007-08-02 17:13                       ` Alan Cox
2007-08-04 19:38                       ` Lee Howard
2007-08-02 16:57                     ` Alan Cox
2007-08-02 17:02                       ` Robert Hancock
2007-08-03  9:32                       ` Maciej W. Rozycki
2007-07-30  9:34             ` Maciej W. Rozycki
2007-08-04 18:19           ` Lee Howard
2007-07-26  1:52 Lee Howard
2007-07-26 12:34 ` Uwe Kleine-König
2007-07-26 16:28   ` Lee Howard
2007-07-26 16:41     ` Alan Cox
2007-07-27  6:17       ` Lee Howard
2007-07-27 11:56         ` Alan Cox
2007-07-27 18:00           ` Lee Howard
2007-07-26 15:51 ` Tosoni
2007-07-26 16:31   ` Lee Howard

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=46A8C6F1.4080309@howardsilvan.com \
    --to=faxguy@howardsilvan.com \
    --cc=hancockr@shaw.ca \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-serial@vger.kernel.org \
    --cc=rmk@arm.linux.org.uk \
    --cc=tytso@mit.edu \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).