From owner-freebsd-net@FreeBSD.ORG Fri Aug 22 02:46:01 2008 Return-Path: Delivered-To: net@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 169CD1065686; Fri, 22 Aug 2008 02:46:01 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from out3.smtp.messagingengine.com (out3.smtp.messagingengine.com [66.111.4.27]) by mx1.freebsd.org (Postfix) with ESMTP id DCBA08FC0A; Fri, 22 Aug 2008 02:46:00 +0000 (UTC) (envelope-from bms@FreeBSD.org) Received: from compute1.internal (compute1.internal [10.202.2.41]) by out1.messagingengine.com (Postfix) with ESMTP id D34D215A231; Thu, 21 Aug 2008 22:27:13 -0400 (EDT) Received: from heartbeat1.messagingengine.com ([10.202.2.160]) by compute1.internal (MEProxy); Thu, 21 Aug 2008 22:27:13 -0400 X-Sasl-enc: 8GHuAt3xm/LGTp47OoPbROihskpIucGBQP9kn+zB9wwr 1219372033 Received: from empiric.lon.incunabulum.net (82-35-112-254.cable.ubr07.dals.blueyonder.co.uk [82.35.112.254]) by mail.messagingengine.com (Postfix) with ESMTPSA id 1CBC020FF5; Thu, 21 Aug 2008 22:27:13 -0400 (EDT) Message-ID: <48AE23FF.9070009@FreeBSD.org> Date: Fri, 22 Aug 2008 03:27:11 +0100 From: "Bruce M. Simpson" User-Agent: Thunderbird 2.0.0.14 (X11/20080514) MIME-Version: 1.0 To: gnn@freebsd.org References: <20080821203519.GA51534@onelab2.iet.unipi.it> In-Reply-To: X-Enigmail-Version: 0.95.6 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Luigi Rizzo , net@freebsd.org Subject: Re: Small patch to multicast code... X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 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, 22 Aug 2008 02:46:01 -0000 gnn@freebsd.org wrote: >> The only thing i can think of is that it's the UDP checksum, >> residing beyond hlen, which is overwritten somewhere in the >> call to if_simloop -- in which case perhaps a better fix is >> to m_pullup() the udp header as well ? >> > > It is the checksum that gets trashed, yes. > ... > The m_*() routines actually have reasonable comments, it just seems > the wrong one was used here. > Actually, m_copy() has been legacy for some time now -- see comments. I'd be concerned that the change to m_dup() (which makes a full mbuf chain copy) rather than m_copym() (which bumps refcounts) is going to eat into the mbuf clusters on fast links, though it's an easy band-aid for the problem. I agree with Luigi that some of the API contract for mbuf(9) doesn't hold any more now that we have TSO and other offload. cheers BMS