Subject: Re: RTS/CTS flow control
To: None <bsd@blkhole.resun.com>
From: Ignatios Souvatzis <ignatios@cs.uni-bonn.de>
List: port-amiga
Date: 07/15/1997 10:58:08
Don Phillips <bsd@blkhole.resun.com> wrote:
> Does anybody know if RTS/CTS flow control has been fully implemented in
> the serial port (ser.c) and/or A2232 multi-port serial cards?  If it
> hasn't and the modem on the port is set for hardware flow control, it
> might explain some of the overruns that I'm seeing (silo overflows.)  I am
> aware of the options to change the size of the silos, and to defer the
> level 6 interrupts, but deferring the level 6 interrupts seems to have the
> unpleasant side effect of really messing up the clock.

Ok, one last time:

the only interupt which is  at Lev. 5 is the serial receive interupt.

The only thing it does is read the data byte and status bits from the 
hardware, as one 16bit read, and write them to a ringbuffer without looking
at them, as one 16bit write. Nothing more (this is why the NetBSD serial
driver performs better than the Commodore serial driver :-).

This should take something like, uh, interupt overhead + 5 microseconds
(guessed). You won't see any effect on the clock because of that; at 100Hz
clock interupt rate, a 5 microsecond, + 1us for register save/restore, jitter
won't be noticable.

On the other hand, the clock interupt does a lot of work in a BSD system, and
can very well mess up the serial reception, if the hardware can only buffer
one character (at 38400 bps: 3840 interupts/s, that is, 260us _absolute
maximum_ for higher level interupts or uninteruptible instructions, or
6500 cycles (on a A3000: 68030@25MHz). This isn't much. Even a 68060
cache push might be too much for this ;-)

Regards,
	-is