From owner-freebsd-hardware Wed May 21 00:43:01 1997 Return-Path: Received: (from root@localhost) by hub.freebsd.org (8.8.5/8.8.5) id AAA25456 for hardware-outgoing; Wed, 21 May 1997 00:43:01 -0700 (PDT) Received: from hydrogen.nike.efn.org (resnet.uoregon.edu [128.223.170.28]) by hub.freebsd.org (8.8.5/8.8.5) with ESMTP id AAA25446 for ; Wed, 21 May 1997 00:42:55 -0700 (PDT) Received: (from jmg@localhost) by hydrogen.nike.efn.org (8.8.5/8.8.5) id AAA27537; Wed, 21 May 1997 00:44:05 -0700 (PDT) Message-ID: <19970521004405.04664@hydrogen.nike.efn.org> Date: Wed, 21 May 1997 00:44:05 -0700 From: John-Mark Gurney To: Bruce Evans Cc: brett@lariat.org, HARDWARE@freebsd.org, rberndt@nething.com, WELCHDW@wofford.edu Subject: Re: isa bus and boca multiport boards References: <199705210705.RAA10446@godzilla.zeta.org.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.69 In-Reply-To: <199705210705.RAA10446@godzilla.zeta.org.au>; from Bruce Evans on Wed, May 21, 1997 at 05:05:21PM +1000 Reply-To: John-Mark Gurney Organization: Cu Networking X-Operating-System: FreeBSD 2.2.1-RELEASE i386 X-PGP-Fingerprint: B7 EC EF F8 AE ED A7 31 96 7A 22 B3 D8 56 36 F4 X-Files: The truth is out there X-URL: http://resnet.uoregon.edu/~gurney_j/ Sender: owner-hardware@freebsd.org X-Loop: FreeBSD.org Precedence: bulk Bruce Evans scribbled this message on May 21: > >I was under the impression that this is what was already done, but now that > >I look at it, I see that you're right! The code loops on a variable called > >"unit", incrementing it from 0 to the precompiled constant NSIO. This can > >waste a great deal of time, especially since the interrupts are > >edge-triggered and the list is scanned at least twice per interrupt. > > Many minor improvements are possible, but significant improvements are > difficult to achieve without a hardware register giving a bitmap of the > active interrupts. I believe BocaBoards have register(s) for this. > Someone who has a BocaBoard should implement checking the register. I have a couple 4port boards that have this... I was at one point going to work on this.. but quickly quit as I was just beging kernel work.. and didn't feel like creating a new way to map a siox to portx on the board... but right now I think that if we first break down the code to support only one set of ports per intrupt insteads of scanning 'em all then a small bit of code could be layered on that to support using the register... I'm forming an idea in my head on how to code this... if no one else is going to code this then I'll start work on it RSN... :) > >The edge-catching algorithm is also less efficient than it might be. To > >make sure you haven't missed an edge, you must scan the UARTs and get ALL > >THE WAY AROUND THE LIST ONCE without finding any more ports to service. You > >can then return from the ISR. The two best ways to do this are (a) set a > > I never got around to implementing this. hmm... this shouldn't be that hard to add... I think I'll start testing something that does this... all we can say is that smart cards are infinately better than the old 16x50 uarts in these regards... of course they happen to be quite a bit cheaper... oh well... ttyl.. -- John-Mark Cu Networking Modem/FAX: +1 541 683 6954 Live in Peace, destroy Micro$oft, support free software, run FreeBSD