From: gt7080a@prism.gatech.EDU (Nathan I. Laredo)
Newsgroups: comp.os.linux
Subject: Character loss is only less frequent now, not gone.
Date: 25 Jul 92 05:13:39 GMT
Organization: Georgia Institute of Technology

Just when I thought all the serial problems were gone with 
the new irq routines, once I downloaded a large enough file
I found the errors were still there, only now less frequently.
Instead of happening every 30 seconds it's happening every 
three minutes in my download, although sometimes it only took
one minute to get an error.   This is using a 14.4k v32bis/v.42bis
link with a 19200 DTE rate (38400 was simply too error prone).

The system load was as follows:
 12:59pm  up 2 days, 17:44,  1 user,  load average: 0.05, 0.05, 0.01

so it's not attributable to doing other things as it usually is.

I've included my rzlog for a 6807187 byte file at the end of this 
file for reference.  The transfer took a total of 1.1 hours, so 
the transfer rate was not excessive at all, or outside acceptable
ranges for my particular UART on a 486DX-50 machine.

I believe that here a dos-style approach to serial i/o would be
a good idea.  That being on each serial interrupt, find out which
port generated the interrupt and store the character in the appropriate
buffer and return.  This would also have the side effect of implementing
IRQ sharing if the same handler was used for all ports only checking 
to see which has the interrupt bit set.  This could be accomplished
by a read of the byte at each portbase+3.   Right now I just don't have
the time to implement this, but I would imagine that it'd serve to
both reduce code and also make routines a lot faster at the same time
making those people (I'm not included here) who want irq sharing of
serial ports happy.   This would take me less than a day to implement,
but I thought I'd share the idea so more people might be able to work
on it so that I can neglect it like my studies... Right now I just don't
have the time.

--
Nathan Laredo, gt7080a@prism.gatech.edu
Georgia Institute of Technology, Atlanta, Georgia, 30332

[RZLOG for 6.8MB download follows, total time 1.1 hours roughly]

argv[0]=rz Progname=rz
rz ready. Type "sz file ..." to your modem program
Incoming: man.tar.Z 6807187 5234143701 100644
YMODEM header: 6807187 5234143701 100644
 550912 ZMODEM CRC-32    Retry 0: Bad CRC
 877568 ZMODEM CRC-32    Retry 0: Bad CRC
 960512 ZMODEM CRC-32    Retry 0: Bad CRC
1435648 ZMODEM CRC-32    Retry 0: Bad CRC
1518592 ZMODEM CRC-32    Retry 0: Bad CRC
1647616 ZMODEM CRC-32    Retry 0: Bad CRC
1727488 ZMODEM CRC-32    Retry 0: Bad CRC
1956864 ZMODEM CRC-32    Retry 0: Bad CRC
Retry 0: Got ZNAK
2280448 ZMODEM CRC-32    Retry 0: Bad CRC
3492864 ZMODEM CRC-32    Retry 0: Bad CRC
3723264 ZMODEM CRC-32    Retry 0: Bad CRC
4147200 ZMODEM CRC-32    Retry 0: Bad CRC
4867072 ZMODEM CRC-32    Retry 0: Bad CRC
5687296 ZMODEM CRC-32    Retry 0: Bad CRC
6307840 ZMODEM CRC-32    Retry 0: Bad CRC
6582272 ZMODEM CRC-32    Retry 0: Bad CRC
6806528 ZMODEM CRC-32    rz 3.17 10-30-91 finished.

[end of rzlog, please don't include it in replies]
-- nil
-- 
Anguna V. Ynerqb
Trbetvn Vafgvghgr bs Grpuabybtl, Ngynagn Trbetvn, 30332
hhpc:	  ...!{qrpink,ucynof,apne,cheqhr,ehgtref}!tngrpu!cevfz!tg7080n
Vagrearg: tg7080n@cevfz.tngrpu.rqh
Newsgroups: comp.os.linux