The original UART chip used in IBM-PC projects was 8250 . It could only store one byte received while the receiver was busy receiving the next byte. This causes a high demand for the efficiency of the serial driver of the operating system, responding to the interruption of "received data". It should be fast enough to read this byte before the receiver overwrites it. Slow speed causes an overflow error and data loss. High interrupt frequencies are also harmful.
This design has been enhanced with a 16550 UART chip . He got a larger buffer, FIFO, giving the OS more time to flush the buffer before the overflow occurs. The serial port driver can program it to generate an interrupt at a certain fill level, which also reduces the interrupt rate.
But chip designs have the same problem as the software, the original 16550 had an error in implementing FIFO. Fixed in 16550A, version 1.1 in software.
The problem was that the driver could not determine if the machine had a buggy version 16550 or good. Simple chips like this do not have the equivalent of GetVersion (). Thus, he provided a property page that allows the user to disable FIFO support, thereby bypassing the error.
The chances that you will have a mistake today are nil. Disabling FIFO is no longer required.
source share