Subject: Re: com rumblings...
To: Charles M. Hannum <mycroft@MIT.EDU>
From: Garrett D'Amore <>
List: tech-kern
Date: 06/15/2006 13:21:30
Charles M. Hannum wrote:
> On Thu, Jun 15, 2006 at 12:54:53PM -0700, Garrett D'Amore wrote:
>> There is a ring buffer in the middle that is used to transfer between
>> the hard and soft interrupts, but if the soft interrupt doesn't get
>> timely enough service, then even that will fill up.
> It certainly will.  And that's better than dropping random intermittent
> bytes in the hardware interrupt handler -- because in that case you get
> livelock with PPP and SLIP.
> Which is to say, you haven't understood the purpose of the flow control
> architecture in the driver, so please don't mess with it.

I'm not "messing" with it.  In fact, I've not touched it.  I've just
heard some complaints from users, and as the most recent person to touch
com(4), I think some folks I heard were asking me to investigate further.

What I had said earlier was that at least some hardware might not need a
split between the hard and soft interrupt handlers.  I think a ring
buffer is likely still required just to account for the fact that
userland consumers are likely to run slower *yet*.  I've never suggested
removal of the ring buffer.  (I have suggested that for very fast data
rates on slower h/w, it *might* make sense to increase the size of that
buffer.  But that depends on whether we are seeing ibuf floods or silo
overflows.  I still don't know that because I've not see any of the

> As for zs vs. com, notice that their guts are almost identical.  Maybe
> this is because I retooled both of them at the same time...

Maybe.  I should look at it in more detail.  It looks like there are
enough differences that making zs.c just another instantiation of com(4)
might be a bad idea.  (The separate mouse/keyboard streams at least
comes to mind.)

Garrett D'Amore, Principal Software Engineer
Tadpole Computer / Computing Technologies Division,
General Dynamics C4 Systems
Phone: 951 325-2134  Fax: 951 325-2191