Subject: Re: More com driver changes; need testers
To: Andreas Gustafsson <gson@araneus.fi>
From: Ken Hornstein <kenh@cmf.nrl.navy.mil>
List: port-i386
Date: 05/01/1997 12:36:19
>The reason for this lossage appears to be that the com driver always
>fills the _whole_ 16550 output FIFO with data whenever it gets a
>"transmitter ready" interrupt.  Since there is no way of stopping
>transmission of the data once it has been loaded into the FIFO, it
>means that if CTS drops immediately after the FIFO has been filled, 
>up to 16 characters will still be transmitted before the flow control 
>takes effect.  This is more than enough to overflow the input buffer on 
>some devices.

That's an excellent analysis.  However, I looked at the 16550 datasheet
from National Semiconductor, and, from my reading of it, writing a "1"
into bit 2 of the FIFO control register will clear the transmit FIFO.
But there doesn't seem to be a way to know how many characters are left
in the FIFO, so I'm not sure that's a solution (I suppose you could make
a guess based on the baud rate and the elapsed time, but that would be
heinous :-) ).

--Ken