From owner-freebsd-net Thu Dec 6 16: 4: 8 2001 Delivered-To: freebsd-net@freebsd.org Received: from ns1.interbgc.com (mail.interbgc.com [217.9.224.3]) by hub.freebsd.org (Postfix) with SMTP id 4705837B419 for ; Thu, 6 Dec 2001 16:03:58 -0800 (PST) Received: (qmail 86451 invoked by uid 1005); 7 Dec 2001 00:03:51 -0000 Received: from misho@interbgc.com by keeper.interbgc.com with qmail-scanner-1.01 (uvscan: v4.0.50/v4173. . Clean. Processed in 1.234889 secs); 07 Dec 2001 00:03:51 -0000 Received: from unknown (HELO joiner) (217.9.226.238) by mail.interbgc.com with SMTP; 7 Dec 2001 00:03:50 -0000 Message-ID: <000b01c17eb3$018dcac0$eee209d9@cablebg.net> Reply-To: "misho" From: "misho" To: References: <20011203221742.A50473@iguana.aciri.org> <3C0CBE2D.1050505@gmx.net> <20011204175148.B58039@iguana.aciri.org> <3C0E3856.2000507@gmx.net> <20011205082203.A63639@iguana.aciri.org> <000c01c17e00$ce170740$eee209d9@cablebg.net> <20011205190017.A68166@iguana.aciri.org> Subject: Re: HEADS-UP: net polling code now in STABLE. Date: Fri, 7 Dec 2001 02:06:23 +0200 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 5.50.4522.1200 X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4522.1200 Sender: owner-freebsd-net@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org yes, you are right regards, misho ----- Original Message ----- From: "Luigi Rizzo" To: "misho" Cc: Sent: Thursday, December 06, 2001 5:00 AM Subject: Re: HEADS-UP: net polling code now in STABLE. > On Thu, Dec 06, 2001 at 04:50:46AM +0200, misho wrote: > > Hi Luigi, > > > > I found this bug several days ago, but I don;t have free time to send you > > simple patch. > > In my opinion it;s better to disable interrupts in xxx_intr() code when > > device is in polling mode. > > Something like this: > > I have committed a proper fix yesterday. > > The code you propose is a safety belt to mask bugs, but *_intr() > could still be called because other devices are sharing the interrupt > line (this is actually very common when you have many interfaces). > > As a matter of fact, calling *_stop() or writing to I/O registers > when you get some unwanted interrupts is a bad thing because the > operations involved can be very time consuming. > > cheers > luigi > > > /* > > * Process interface interrupts. > > */ > > static void > > fxp_intr(void *xsc) > > { > > struct fxp_softc *sc = xsc; > > u_int8_t statack; > > > > #ifdef DEVICE_POLLING > > struct ifnet *ifp = &sc->sc_if; > > > > if (ifp->if_ipending & IFF_POLLING) { > > /* this shouldn't happen, we are in polling mode > > * disable interrupts > > */ > > CSR_WRITE_1(sc, FXP_CSR_SCB_INTRCNTL, FXP_SCB_INTR_DISABLE); > > return; > > } > > if (ether_poll_register(fxp_poll, ifp)) { > To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-net" in the body of the message