ixgbe rx & tx locks

John Baldwin jhb at freebsd.org
Wed Sep 26 19:38:34 UTC 2012


On Wednesday, September 26, 2012 3:08:22 pm Ryan Stone wrote:
> On Wed, Sep 26, 2012 at 9:55 AM, John Baldwin <jhb at 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


More information about the freebsd-net mailing list