From owner-svn-src-head@FreeBSD.ORG Sun Apr 26 10:32:18 2009 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id C4551106564A; Sun, 26 Apr 2009 10:32:18 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by mx1.freebsd.org (Postfix) with ESMTP id 938218FC14; Sun, 26 Apr 2009 10:32:18 +0000 (UTC) (envelope-from bms@incunabulum.net) Received: from compute2.internal (compute2.internal [10.202.2.42]) by out1.messagingengine.com (Postfix) with ESMTP id 21116322AFD; Sun, 26 Apr 2009 06:32:18 -0400 (EDT) Received: from heartbeat2.messagingengine.com ([10.202.2.161]) by compute2.internal (MEProxy); Sun, 26 Apr 2009 06:32:18 -0400 X-Sasl-enc: 1WBoM+ZOKj76ZY9Hb6r7mO7MjwmRp0BhsAz/MIlvAwZO 1240741937 Received: from [192.168.123.18] (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTPSA id B8A7A54501; Sun, 26 Apr 2009 06:32:16 -0400 (EDT) Message-ID: <49F4382E.7030105@incunabulum.net> Date: Sun, 26 Apr 2009 11:32:14 +0100 From: Bruce Simpson User-Agent: Thunderbird 2.0.0.21 (Windows/20090302) MIME-Version: 1.0 To: Robert Watson References: <200904212243.n3LMhW48027008@svn.freebsd.org> <49EEDB9C.8080409@incunabulum.net> <49EEE63F.2060706@incunabulum.net> In-Reply-To: Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: svn-src-head@freebsd.org, svn-src-all@freebsd.org, src-committers@freebsd.org Subject: Re: svn commit: r191367 - head/sys/net X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Apr 2009 10:32:19 -0000 Robert Watson wrote: > ... >> >> Now that Giant is nuked, the netisr could be eliminated and the ifnet >> rlock taken as it is before dispatching an entire chain. I only >> implemented a netisr to allow the code to be back-ported, however I >> don't care about back-porting any more -- it's too much effort and >> the time/funding budget doesn't justify that amount of work. > > Have you thought about registering a callback with the > ifnet_departure_event event handler to handle interfaces disappearing? The igmp_domifdetach() function will already do an IF_DRAIN() for the link-scope queue, so registering a departure event handler would probably just introduce another point of possible race. ;-) Now that Giant has gone away, and the lock recursion in the lower half of IP to do with IN_MULTI_LOCK() has been eliminated, it might make more sense to ditch the netisr -- I only used it as 7.x was my initial target, but of course time grinds on, as does development. As of today, the MLDv2 code builds in my p4 branch, and I need to rewrite mtest so it can grok IPv6 properly. http://perforce.freebsd.org/depotTreeBrowser.cgi?FSPC=//depot/user/bms/netdev/sys/netinet6&HIDEDEL=NO As things currently stand, I don't plan to back-port the IGMPv3 or MLDv2 code to previous FreeBSD versions, but it would make sense to leave the netisr in SVN history so that I (or someone else) can do that if there's demand for it (probably not, as ABIs get broken, though there are ways around that). Once MLDv2 is in SVN, I'd feel better about eliminating the use of the netisr entirely in 8.x. MLDv1 as implemented in KAME has a little kludge in it to introduce jitter on the link-scope 'solicited multicast' group membership reports -- this exists mostly to support IPv6's Duplicate Address Detection (DAD) mechanism. MLDv2 does not require this jitter -- it's built into the MLDv2 protocol already, as state change reports are deferred to give the local node a chance to merge them, and these ones only get seen when IPv6 is initially attached to an ifnet. BTW: Thanks so much for tackling the ifdead stuff, this is a big help towards streamlining against possible races such as the ones Sam saw with the 802.11 VAP code right after SSM went in. Also, thanks for catching the use-after-free in mainline, I have now patched this in the MLDv2 fork. cheers, BMS