From: Frank Lofaro (ftlofaro@unlv.edu)
Date: 06/30/93


From: ftlofaro@unlv.edu (Frank Lofaro)
Subject: 16550A FIFO IRQ setting question and ideas
Date: Wed, 30 Jun 1993 06:27:29 GMT

When doing a trace on a kermit process under Linux, data often came
in in 8 byte chunks. I figured this might be related to the set-up of
the FIFO's on the UART, i.e. how many bytes must be received before an
IRQ is triggered. I looked through serial.c and serial.h and noticed
that there is a FIFO control register which can set the FIFO trigger
to either 1, 4, 8, or 14 bytes. It was set to 8, I changed the
definition of the setup command to use a 14 byte trigger instead of
an 8 byte trigger. Was this a good way to do it, or should I have
gotten setserial, or changed some other file or something? Was this a
good thing to do? It seems to work as far as I can tell. (tested both
with ordinary logins and term/txconn sessions).

What are the advantages/disadvantages of a high or low trigger rate? I
believe high would favor higher throughput, and low would favor low
delay. If less bytes than the trigger come in, when is the FIFO
drained? Thanks for any info you can give.

I am using a USRobotics Sportster 9600/PC Internal modem, with a built
in 16550A (a nice touch, I've heard it is really needed for
multi-tasking high-speed serial communication). A very good modem, by
the way.

P.S. It would be nice to have a list of all "magic" constants and
flags in the kernel, of which the UART FIFO trigger is but one of many.
It would make kernel tuning much easier.