Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Dec 2001 02:06:23 +0200
From:      "misho" <misho@interbgc.com>
To:        <net@FreeBSD.ORG>
Subject:   Re: HEADS-UP: net polling code now in STABLE.
Message-ID:  <000b01c17eb3$018dcac0$eee209d9@cablebg.net>
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>

next in thread | previous in thread | raw e-mail | index | archive | help
yes,

you are right

regards,
misho

----- Original Message -----
From: "Luigi Rizzo" <luigi@FreeBSD.ORG>
To: "misho" <misho@interbgc.com>
Cc: <net@FreeBSD.ORG>
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?000b01c17eb3$018dcac0$eee209d9>