Newsgroups: comp.protocols.tcp-ip.ibmpc Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!batcomputer!cornell!uw-beaver!fluke!dag From: dag@tc.fluke.COM (David Gunderson) Subject: Re: SLIP failing at high baud rates? Message-ID: <1991Apr22.151501.18590@tc.fluke.COM> Organization: John Fluke Mfg. Co., Inc., Everett, WA References: <9104191316.AA14684@ftp.com> Date: Mon, 22 Apr 91 15:15:01 GMT The reason that you can "lose" interrupts on the PC COM ports is not entirely related to the COM port hardware itself. There are some BIOS implementations (mostly related to display adapters) that feel free to disable interrupts (execuite a CLI instruction) any time they want to. At 19.2K baud, you have approx. 0.5 ms between characters. If interrupts are disabled for longer than this, an incoming character will overrun the last character received before it can be removed from the input buffer. If the COM port interrupt handling software detects overrun, a re-transmit can be requested, but if not, a character is lost. I also had a recent problem with "very fast" machines (a 486 EISA bus machine running 33 MHz). In this case, the UART issued the interrupt request and the interrupt processing routine was entered before the input character was ready in the receive buffer. This caused a problem in the state logic of the UART (in this case, a ASIC clone) where the software thought the interrupt had been cleared and the hardware thought it was still pending. The "FIX???" is to insert delay within the interrupt processing routine, but who wants to do this. I had to to get the program working, but it makes me feel really bad to slow something like that down. All this points out that the PC's implemenation of RS-232 isn't too robust and shouldn't be trusted in critical situations. --David Gunderson