Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 5 Jun 1997 06:43:58 +1000
From:      Bruce Evans <bde@zeta.org.au>
To:        gurney_j@resnet.uoregon.edu, straka@inficad.com
Cc:        current@FreeBSD.ORG
Subject:   Re: sio driver performance
Message-ID:  <199706042043.GAA16361@godzilla.zeta.org.au>

next in thread | raw e-mail | index | archive | help
>> When receiving sustained 115200 baud data, an interrupt rate of 
>> over 26,000/sec is indicated with about 15% of the processor going 
>> to service interrupts.
>> 
>> It appears as though the fifo is not working for the receive. In an
>> attempt to exhonerate the hardware, I swapped in another 16550 card
>> I had laying around and got the similar results.

It works for most users.  Possible problems:

- noisy cables may cause a modem status interrupt for every character
  (or every changed bit?).
- a parity mismatch may cause a line status interrupt for every character.
  This problem is easy to reproduce using `stty parenb ...' to change the
  default of 8 bits-no parity to 9 bits-1 parity bit.
- a hardware bug on UMC8669F devices that prevents initialization of the
  fifo trigger level while data is arriving.  These devices also have a
  h/w bug that prevents initialization of the speed while data is arriving.
  Both bugs are more common in tests than in normal operation.  I always
  see the fifo bug here if I start the transmitter first.  FreeBSD
  transmitters do a perfect job of keeping the data flowing, so the
  receiver never has a chance to recover :-).

>it actually is working quite nicely... if it wasn't you would see
>115,200 * 2 interrupts/sec if the fifo isn't working...  but what
>you are probably seeing is that the recieve fifo is set to 8bytes
>instead of 14bytes (115200*2/26000 ~= 8.8615...)...

Nope.  See other replies.

>also, it's a know fact that the 16550's are kinda heavy on overhead
>(not as bad as a parallel port though)...  if you want to do many
>ports at full speed you really should invest in a smarter card,
>like a Digiboard/Cyclom/Riscom/Stallion smart board that has larger
>buffers and usually supports mapped memory access...

The overheads for most of these boards (all except possibly Digiboard
and the 'i' version of Stallion) are just as large as for 16550's.
cd180's and cd1400's have smaller fifos (12 bytes instead of 16).
Memory mapped access is not significantly faster, at least for ISA
boards...

Bruce



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199706042043.GAA16361>