From owner-cvs-src-old@FreeBSD.ORG Wed Mar 4 03:53:06 2009 Return-Path: Delivered-To: cvs-src-old@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 330F51065680 for ; Wed, 4 Mar 2009 03:53:06 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from repoman.freebsd.org (repoman.freebsd.org [IPv6:2001:4f8:fff6::29]) by mx1.freebsd.org (Postfix) with ESMTP id 20F278FC17 for ; Wed, 4 Mar 2009 03:53:06 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.14.3/8.14.3) with ESMTP id n243r6vR013512 for ; Wed, 4 Mar 2009 03:53:06 GMT (envelope-from bms@repoman.freebsd.org) Received: (from svn2cvs@localhost) by repoman.freebsd.org (8.14.3/8.14.3/Submit) id n243r655013511 for cvs-src-old@freebsd.org; Wed, 4 Mar 2009 03:53:06 GMT (envelope-from bms@repoman.freebsd.org) Message-Id: <200903040353.n243r655013511@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: svn2cvs set sender to bms@repoman.freebsd.org using -f From: Bruce M Simpson Date: Wed, 4 Mar 2009 03:45:34 +0000 (UTC) To: cvs-src-old@freebsd.org X-FreeBSD-CVS-Branch: HEAD Subject: cvs commit: src/sys/netinet ip_output.c X-BeenThere: cvs-src-old@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: **OBSOLETE** CVS commit messages for the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 04 Mar 2009 03:53:06 -0000 bms 2009-03-04 03:45:34 UTC FreeBSD src repository Modified files: sys/netinet ip_output.c Log: SVN rev 189359 on 2009-03-04 03:45:34Z by bms In ip_output(), do not acquire the IN_MULTI_LOCK(), and do not attempt to perform a group lookup. This is a socket layer lock, and the bottom half of IP really has no business taking it. Use the value of the in_mcast_loop sysctl to determine if we should loop back by default, in the absence of any multicast socket options. Because the check on group membership is now deferred to the input path, an m_copym() is now required. This should increase multicast send performance where the source has not requested loopback, although this has not been benchmarked or measured. It is also a necessary change for IN_MULTI_LOCK to become non-recursive, which is required in order to implement IGMPv3 in a thread-safe way. Revision Changes Path 1.300 +14 -17 src/sys/netinet/ip_output.c