Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 29 Nov 2006 12:39:56 -0500
From:      John Baldwin <jhb@freebsd.org>
To:        freebsd-current@freebsd.org
Cc:        Robert Watson <rwatson@freebsd.org>, Munehiro Matsuda <haro@h4.dion.ne.jp>
Subject:   Re: LOR with netisr changes
Message-ID:  <200611291239.57043.jhb@freebsd.org>
In-Reply-To: <456C90F9.5080209@errno.com>
References:  <20061129.015826.74756053.haro@h4.dion.ne.jp> <20061128180811.P95096@fledge.watson.org> <456C90F9.5080209@errno.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 28 November 2006 14:41, Sam Leffler wrote:
> Robert Watson wrote:
> > 
> > On Wed, 29 Nov 2006, Munehiro Matsuda wrote:
> > 
> >> JFYI, I got following LOR started after the netisr changes:
> > 
> > In general, device driver locks should not be held over entry to the
> > network stack.  However, things get a bit tricky in the 802.11 code due
> > to lock sharing, I believe, so it could be a bit more tricky to fix that.
> 
> It's just a bug in the driver.  Driver locks should be dropped when
> packets get passed up the stack.  This issue was pointed out before iwi
> ever was committed but since nothing immediately comes back via the
> bridge (or similar) it's been ignored.

How about this:

Index: if_iwi.c
===================================================================
RCS file: /usr/cvs/src/sys/dev/iwi/if_iwi.c,v
retrieving revision 1.42
diff -u -r1.42 if_iwi.c
--- if_iwi.c    7 Nov 2006 19:03:42 -0000       1.42
+++ if_iwi.c    29 Nov 2006 17:38:12 -0000
@@ -1310,6 +1310,7 @@

                bpf_mtap2(sc->sc_drvbpf, tap, sc->sc_rxtap_len, m);
        }
+       IWI_UNLOCK(sc);

        ni = ieee80211_find_rxnode(ic, mtod(m, struct ieee80211_frame_min *));

@@ -1319,6 +1320,7 @@
        /* node is no longer needed */
        ieee80211_free_node(ni);

+       IWI_LOCK(sc);
        if (sc->sc_softled) {
                /*
                 * Blink for any data frame.  Otherwise do a

(I'm unsure if the net82011 layer protects 'ic' or if the driver is supposed 
to do that.)

-- 
John Baldwin



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200611291239.57043.jhb>