From owner-freebsd-net@FreeBSD.ORG Fri Nov 9 08:51:50 2012 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id 6665D184; Fri, 9 Nov 2012 08:51:50 +0000 (UTC) (envelope-from fabien.thomas@netasq.com) Received: from work.netasq.com (gwlille.netasq.com [91.212.116.1]) by mx1.freebsd.org (Postfix) with ESMTP id 268918FC0A; Fri, 9 Nov 2012 08:51:49 +0000 (UTC) Received: from [10.2.1.1] (unknown [10.2.1.1]) by work.netasq.com (Postfix) with ESMTPSA id 3F4A12705266; Fri, 9 Nov 2012 09:51:48 +0100 (CET) Subject: Re: [patch] reducing arp locking Mime-Version: 1.0 (Apple Message framework v1283) Content-Type: text/plain; charset=iso-8859-1 From: Fabien Thomas In-Reply-To: <509B88B1.3070905@FreeBSD.org> Date: Fri, 9 Nov 2012 09:51:47 +0100 Content-Transfer-Encoding: quoted-printable Message-Id: <49EE4F42-6162-40F4-9DE0-1ACA1289B225@netasq.com> References: <509AEDAC.10002@FreeBSD.org> <509B884F.7040106@networx.ch> <509B88B1.3070905@FreeBSD.org> To: Alexander V. Chernikov X-Mailer: Apple Mail (2.1283) Cc: freebsd-net@FreeBSD.org, freebsd-hackers@FreeBSD.org X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 09 Nov 2012 08:51:50 -0000 Le 8 nov. 2012 =E0 11:25, Alexander V. Chernikov a =E9crit : > On 08.11.2012 14:24, Andre Oppermann wrote: >> On 08.11.2012 00:24, Alexander V. Chernikov wrote: >>> Hello list! >>>=20 >>> Currently we need to acquire 2 read locks to perform simple 6-byte >>> copying from arp record to packet >>> ethernet header. >>>=20 >>> It seems that acquiring lle lock for fast path (main traffic flow) = is >>> not necessary even with >>> current code. >>>=20 >>> My tests shows ~10% improvement with this patch applied. >>>=20 >>> If nobody objects I plan to commit this change at the end of next = week. >>=20 >> This is risky and prone to race conditions. The copy of the MAC = address >> should be done while the table read lock is held to protect against = the > It is done exactly as you say: table read lock is held. How do you protect from entry update if i've a ref to the entry ? You can end up doing bcopy of a partial mac address. la_preempt modification is also write access to an unlocked structure. >=20 >> entry going away. You can either return with table lock held and = drop >> it after the copy, or you could a modified lookup function that takes = a >> pointer for the copy destination, do the copy with the read lock, and = then >> return. If no entry is found an error is returned and obviously no = copy >> is done. >>=20 >=20 >=20 > --=20 > WBR, Alexander >=20 >=20 > _______________________________________________ > freebsd-hackers@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers > To unsubscribe, send any mail to = "freebsd-hackers-unsubscribe@freebsd.org"