Subject: Re: More com driver changes; need testers
To: None <gson@araneus.fi>
From: Markus Kilbinger <kilbi@rad.rwth-aachen.de>
List: port-i386
Date: 05/01/1997 18:05:07
>>>>> "Andreas" == Andreas Gustafsson <gson@araneus.fi> writes:
Andreas> Markus Kilbinger <kilbi@rad.rwth-aachen.de> said:
>> Hmm, I tried the patch, but it didn't change anything
>> obviously. There are still lost chars on output decreasing
>> dramatically the final transmission rate even at a serial speed
>> down to 38400 baud.
Andreas> I was also recently suffering from lost output characters
Andreas> on a com port, after upgrading (!) the port from a 16450
Andreas> to a 16550.
Andreas> The reason for this lossage appears to be that the com
Andreas> driver always fills the _whole_ 16550 output FIFO with
Andreas> data whenever it gets a "transmitter ready" interrupt.
Andreas> Since there is no way of stopping transmission of the
Andreas> data once it has been loaded into the FIFO, it means that
Andreas> if CTS drops immediately after the FIFO has been filled,
Andreas> up to 16 characters will still be transmitted before the
Andreas> flow control takes effect. This is more than enough to
Andreas> overflow the input buffer on some devices.
That would reflect my impression.
Andreas> I see no way around this problem other than reducing the
Andreas> amount of data loaded into the FIFO on each transmit
Andreas> interrupt. On my own system, I simply reduced it to a
Andreas> single character; that cured the problem for me. Here's
Andreas> the patch I'm using (against the stock 1.2 com.c):
'Cause I'm using the -current sources I thought that reducing the
'...fifolen' from '16' to '1' for a 16550a would be equivalent to that
patch, but it didn't help, too :-(.
Markus.