Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 03 Jul 2000 18:24:24 +0300
From:      Boris Karnaukh <bk532@iname.com>
Cc:        freebsd-mobile@FreeBSD.ORG
Subject:   Re: "interrupt-level buffer overflows" with Xircom RealPort Modem 56
Message-ID:  <3960B028.1AE4DC34@iname.com>
References:  <38A44C3D.6B2B39A6@we.lc.ehu.es>

next in thread | previous in thread | raw e-mail | index | archive | help
"Jose M. Alcaide" wrote:
> 
> Hello,
> 
> I have just purchased a Xircom RealPort Modem 56 (PCMCIA). I easily
> got it working as sio1 adding an entry to pccard.conf. However,
> messages like these appeared on the console while I was testing
> the modem from user-ppp (term), typing commands such as "AT&V" or
> "ATI11", which give some lines of output:
> 
> sio1: 31 more interrupt-level buffer overflows (total 31)
> sio1: 273 more interrupt-level buffer overflows (total 273)
> sio1: 437 more interrupt-level buffer overflows (total 710)
> 
> ... and so on.
> 
> After reading the sio(4) manpage and briefly examining sio.c, I disabled
> the FIFO with sio flags 0x20, and the messages went away. However,
> this modem supposedly has (or emulates) a 16550A, which has a 16-byte FIFO.
> I also tried sio flags 0x08 (polled output) and 0x08000000 (8-byte FIFO)
> to no avail. Only disabling the FIFO works, but this could affect
> performance.
> 
> The laptop is new, a Dell Inspiron 3700 with a Celeron 433, so that
> this is not a CPU speed problem. And a PCMCIA Ethernet card works
> fine, so that this is not a general interrupt processing problem.
> 
> A final note: I had "AUTO_EOI1" enabled in the kernel, but removing it
> did not make any effect on the buffer overflows.
> 
> Any ideas? Is anyone using other similar Xircom modems, and having this
> same problem?
> 

As you can see in sio.c, size of input buffer for com port is determined
using simple formula:
        cp4ticks = speed / 10 / hz * 4;
        for (ibufsize = 128; ibufsize < cp4ticks;)
                ibufsize <<= 1;

According to this formula we find 512 byte buffer for serial port on
115200. I think it's slightly overoptimistic. According to my own
experience from DOS era, sometimes I had to setup buffers in FOSSIL
driver (anyone knows what it was?-) to 4096 bytes.

So i've replaced in mentioned above formula 4 with 8 and these
"interrupt-level overflows" gone away. Maybe someone will apply similar
change to source tree.

-- 
<Signed>
Boris Karnaukh 	(mailto:bk532@iname.com)


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-mobile" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3960B028.1AE4DC34>