Path: utzoo!utgpu!attcan!uunet!lll-winken!lll-tis!helios.ee.lbl.gov!pasteur!agate!labrea!decwrl!hplabs!motsj1!mcdchg!ddsw1!igloo!learn From: learn@igloo.UUCP (william vajk) Newsgroups: comp.unix.microport Subject: Igloopatch Keywords: serial port relief Message-ID: <1058@igloo.UUCP> Date: 20 Oct 88 01:31:26 GMT Organization: igloo, Northbrook, IL Lines: 94 That darned serial driver problem under microport. Haven't we heard enough about it yet ? Not really. I waited a year after I got microport, and with some promise of a fixed driver, I ordered my upgrade to 2.2. The serial drivers were still damaged. Igloo would not maintain a newsfeed with other activity on the system. I tried a different serial card (recommended by microport) which didn't help. I received the newest latest and greatest driver, which was supposed to fix everything, it didn't. I had, in there somewhere, been told it was my hardware, which was replaced. I moved up to Denninger's autobaud getty to improve the connectability of the telebit at 9600, but still there were lost characters and lost feeds. And there were complaints by users of lost characters. And cu was practically worthless. And 9600 baud attempted logins from ddsw1 (login id dduucp) showed in ps as dduup regularly when the system had other activity, not even a severe load. Think of it, potentially every 5th character lost. On top of all this rode the suggestion that there were intelligent serial cards on the market. I balked at the price and the concept. Microport should, by all rights, be fixable without adding many hundreds of dollars to the cost of the machinery and someone else's software. Then came a discussion reflecting the _wonder_ that any form of unix would run as well as it does under the '286 chip and all the reasons why it shouldn't be able to. One fine day, I read a suggestion by John Zeeff about using a 16550A chip in place of the 16450 as the former contains an FIFO which could be used to queue incoming characters while the cpu was busy elsewhere. Sounded like a great idea, and a third party xenix driver was created, and porting the code to microport was begun. A couple of revisions of that port, which is still in process of fine tuning, were tested on igloo. There are some minor problems in initializing it to talk to a modem. I saw quite a nice demonstration on a null modem line using my hardware. I'll, for the moment, leave announcement of this continuing effort to the authors of the driver. As a result of the new third party driver project, a friend and igloo user, John Welch decided to design and create an inexpensive dumb serial card to take advantage of the 16550A chip and the new driver. In the course of discussions, I badgered him to look at the specs on the chip to determine if there weren't some simple initialization sequence which could be invoked to turn on the FIFO feature, one which could perhaps make the chip self sustaining. Several hours later, not only was it determined that yes, indeed there is such a feature, but the code was also written and installed on igloo. The replacement of the 16450 by a 16550A took only the effort of plugging in the new chip in place of the old. Standard cautions against electrical static are advised. Briefly explained, the software John uses to initialize the chip sets a depth of FIFO fillup to 8 characters, and the cpu is interrupted, all this utilizing the semi-intelligent merits of the 16550A itself, no cpu specific horsepower required. It also appears that an x-off is issued out the port.a The 16550A handles flow control whenever its buffer is about to overflow. Testing of this feature began immediately. I polled at 9600 baud, logged in on the other phone line, and did a 10 minute screen dump (cat * in a directory with only readable text files.) Normally, the effects of logging in would by themselves have been enough to lose the newsfeed, let alone a continuous screen dump. Yes, most assuredly, one could visually note the slowdown in the newsfeed, with some brief off-on intervals on a semi-regular basis, but the newsfeed itself continued. The newsfeed complete, I cu'd out and logged back in to igloo on a loopback thru ma bell. With the system heavily loaded by the unbatching going on (and 16 bit uncompress, etc) I catted the same files as before. Yes, the screen was somewhat jerky, as one would expect, but not a single character was lost. I then logged into chinet using igloo's cu, and was able to determine that even talking to a fast machine resulted in no lost characters while igloo was still under a decent load. Yes, the screen was somewhat jerky at 2400 baud, but one miracle at a time is quite sufficient. Doubtless, addition of a new driver will make matters better and the third party driver I mentioned earlier holds some promise of improving performance while running 16450's. In the meantime, the problems I have with the serial drivers have been repaired at minimal cost by another third party. Now, if only someone would undertake to fix the two drive problem. There's been some mention that the fix is included in the new upgrade. I'll take that final plunge. I've flamed at microport for a long time regarding these issues. I now rest my case regarding the serial drivers. That has been fixed inexpensively. Thanks to John Zeeff for calling the new chip to our attention, and to John Welch for digging into the matter and writing a the code that works. John Welch is of the opinion, as am I, that there has been enough suffering at the hands of microport already, and that this little piece of software should be placed in the public domain. The source code follows in another article. Neither of us makes any representations about it other than it is doing a fine job at igloo. Use it at your own risk. Bill Vajk learn@igloo