bde 19df5781b8 Tweaked the siointr1() so that it works better at 921600 bps, especially
with multiple ports on a shared interrupt demultiplexed by the puc_intr()
handler.

siointr1() first read as much input as possible and then checked all
possibly-relevant status registers, partly for robustness and partly
for historical reasons.  This is very bad if it is called for every
port sharing an interrupt like puc_intr() does.  It can spend too long
reading all the input for some ports when the interrupt is for a more
urgent event on another, or just too long checking all the status
registers when there are lots of ports.  The inter-character time is
too long for reading all the input even when the interrupt is for a
transmitter interrupt on the same port, and at 921600 bps the inter-char
time is 10.85 usec and was often exceeded with just 2 ports, leaving
the transmitters idle for about 6% of the time.

The tweak is to break out of the read loop after reading 1 char if
output can be done.  This avoids most of the idle transmitter time for
2 active ports at 921600 bps bidirectional on the test system.  It
also reduces overhead by about 20%.  More complete fixes use the
programmable tx low watermark on 16950's and reduce overhead by another
65%.
2003-11-17 07:21:19 +00:00
..
2003-10-10 22:49:40 +00:00
2003-11-07 03:01:48 +00:00
2003-09-02 17:30:40 +00:00
2003-11-14 18:02:25 +00:00
2003-11-02 20:13:39 +00:00
2003-11-13 06:29:40 +00:00
2003-09-02 17:30:40 +00:00
2003-09-02 17:30:40 +00:00
2003-11-16 22:33:42 +00:00
2003-10-18 17:28:36 +00:00
2003-11-14 05:13:00 +00:00
2003-11-03 15:58:58 +00:00
2003-09-02 17:30:40 +00:00
2003-09-02 17:30:40 +00:00
2003-10-18 17:26:13 +00:00
2003-11-04 06:30:59 +00:00
2003-11-11 22:15:17 +00:00
2003-09-02 17:30:40 +00:00
2003-09-02 17:30:40 +00:00
2003-09-02 17:30:40 +00:00
2003-11-06 08:09:29 +00:00
2003-11-16 13:13:16 +00:00