From owner-freebsd-current@FreeBSD.ORG Tue Sep 2 18:32:49 2008 Return-Path: Delivered-To: current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id AC8E91065672 for ; Tue, 2 Sep 2008 18:32:49 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from pele.citylink.co.nz (pele.citylink.co.nz [202.8.44.226]) by mx1.freebsd.org (Postfix) with ESMTP id 6AC1F8FC1A for ; Tue, 2 Sep 2008 18:32:49 +0000 (UTC) (envelope-from thompsa@FreeBSD.org) Received: from localhost (localhost [127.0.0.1]) by pele.citylink.co.nz (Postfix) with ESMTP id 59ED42BC5C; Wed, 3 Sep 2008 06:32:48 +1200 (NZST) X-Virus-Scanned: Debian amavisd-new at citylink.co.nz Received: from pele.citylink.co.nz ([127.0.0.1]) by localhost (pele.citylink.co.nz [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 48QAenODF+BC; Wed, 3 Sep 2008 06:32:44 +1200 (NZST) Received: from citylink.fud.org.nz (unknown [202.8.44.45]) by pele.citylink.co.nz (Postfix) with ESMTP; Wed, 3 Sep 2008 06:32:44 +1200 (NZST) Received: by citylink.fud.org.nz (Postfix, from userid 1001) id 05C3E1142A; Wed, 3 Sep 2008 06:32:43 +1200 (NZST) Date: Tue, 2 Sep 2008 11:32:43 -0700 From: Andrew Thompson To: Maksim Yevmenkin Message-ID: <20080902183243.GC12367@citylink.fud.org.nz> References: <20080902174540.GB12367@citylink.fud.org.nz> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.17 (2007-11-01) Cc: current@freebsd.org Subject: Re: m_uiotombuf alignment X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 02 Sep 2008 18:32:49 -0000 On Tue, Sep 02, 2008 at 10:54:08AM -0700, Maksim Yevmenkin wrote: > Andrew, > > > I have a patch here to removing the alignment of the align parameter. I > > can not see why it was added as it up to the caller to specify this, it > > breaks tap(4) on strict alignment machines as m_uiotombuf is called with > > ETHER_ALIGN. Also 'align' isnt a great description of this field, its > > more a padding or data offset. > > hmm... strange... from cvs > > === > > Revision 1.53 > Wed May 4 18:55:02 2005 UTC (3 years, 4 months ago) by emax > Branches: MAIN > > Change m_uiotombuf so it will accept offset at which data should be copied > to the mbuf. Offset cannot exceed MHLEN bytes. This is currently used to > fix Ethernet header alignment problem on alpha and sparc64. Also change all > users of m_uiotombuf to pass proper offset. > > Reviewed by: jmg, sam > Tested by: Sten Spans "sten AT blinkenlights DOT nl" > MFC after: 1 week > > === > > could you please explain how and on which platforms it breaks tap(4)? That revision had the correct behaviour, it was broken in r1.169 Rewrite m_uiotombuf() to use m_getm2() for mbuf allocation and do the uiomove() in a tight loop over the mbuf chain. Add a flags parameter to accept mbuf flags to be passed to m_getm2(). Adjust all callers for the extra parameter. Sponsored by: TCP/IP Optimization Fundraise 2005 Andrew