Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 26 Sep 2012 15:38:11 -0400
From:      John Baldwin <jhb@freebsd.org>
To:        Ryan Stone <rysto32@gmail.com>
Cc:        freebsd-net@freebsd.org, Jack Vogel <jfvogel@gmail.com>, Vijay Singh <vijju.singh@gmail.com>
Subject:   Re: ixgbe rx & tx locks
Message-ID:  <201209261538.11588.jhb@freebsd.org>
In-Reply-To: <CAFMmRNwUpO-=PvdPVisrD%2BkicS5WA-cn%2BXsdjRGt5JfSokRSjQ@mail.gmail.com>
References:  <CALCNsJSSQSWV7vNVR-Sn8CPDKbUBBLpSH0b-HYMJo3SXvkOY=w@mail.gmail.com> <201209260955.14417.jhb@freebsd.org> <CAFMmRNwUpO-=PvdPVisrD%2BkicS5WA-cn%2BXsdjRGt5JfSokRSjQ@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Wednesday, September 26, 2012 3:08:22 pm Ryan Stone wrote:
> On Wed, Sep 26, 2012 at 9:55 AM, John Baldwin <jhb@freebsd.org> wrote:
> > You only have to drop the RX lock around if_input() if you use the same lock
> > for both TX and RX (as if_transmit() / if_start() can be invoked while locks
> > in the network stack are held).
> 
> Last time I checked(FreeBSD 8.2), this is not true.  The problematic
> (and convoluted) ordering is:
> 
> ix:rx -> udp -> udpinp -> in_multi_mtx -> ix:core -> ix:rx

Hmm, I'm not sure where the 'in_multi_mtx -> ix:core' bit comes from.
I think that is the broken part of this.  The SIOCADDMULTI and SIOCDELMULTI
ioctls are invoked without any stack locks held, so it shouldn't come from
there.

-- 
John Baldwin



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