From owner-svn-src-all@FreeBSD.ORG Thu Oct 31 19:09:18 2013 Return-Path: Delivered-To: svn-src-all@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 40DB5198 for ; Thu, 31 Oct 2013 19:09:18 +0000 (UTC) (envelope-from andre@freebsd.org) Received: from c00l3r.networx.ch (c00l3r.networx.ch [62.48.2.2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id A5824296F for ; Thu, 31 Oct 2013 19:09:17 +0000 (UTC) Received: (qmail 81027 invoked from network); 31 Oct 2013 19:39:25 -0000 Received: from c00l3r.networx.ch (HELO [127.0.0.1]) ([62.48.2.2]) (envelope-sender ) by c00l3r.networx.ch (qmail-ldap-1.03) with SMTP for ; 31 Oct 2013 19:39:25 -0000 Message-ID: <5272AAC4.4030700@freebsd.org> Date: Thu, 31 Oct 2013 20:08:52 +0100 From: Andre Oppermann User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.0.1 MIME-Version: 1.0 To: Luigi Rizzo Subject: Re: svn commit: r257455 - head/sys/net References: <201310311546.r9VFkAIb049844@svn.freebsd.org> <20131031180336.GA62132@onelab2.iet.unipi.it> In-Reply-To: <20131031180336.GA62132@onelab2.iet.unipi.it> 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 X-BeenThere: svn-src-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the entire src tree \(except for " user" and " projects" \)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 31 Oct 2013 19:09:18 -0000 On 31.10.2013 19:03, Luigi Rizzo wrote: > On Thu, Oct 31, 2013 at 03:46:10PM +0000, Andre Oppermann wrote: >> Author: andre >> Date: Thu Oct 31 15:46:10 2013 >> New Revision: 257455 >> URL: http://svnweb.freebsd.org/changeset/base/257455 >> >> Log: >> Make struct ifnet readable and comprehensible again by grouping >> and ordering related variables, fields and locks next to each >> other. Add more comments to variables. > > >> Over time 'ifnet' has accumlated a lot of additional pointers and >> functionality in an unstructured way making it quite hard to read >> and understand while obfuscating relationships between fields and >> variables. >> >> Quantify the structure size and how bloated it has become. >> >> This is only a mechanical change in preparation for upcoming >> work to make ifnet opaque to drivers and to separate out the >> interface queuing. > > as you do the above I think it would make sense to replace > all int/short/long with fixed-size fields as appropriate > (and large enough) to make it easier to reason about things > such as 'how many flags can i stuff into a field'. > > The "large enough" part refers to two things: > - bitfields containing flags or capabilities have a tendency > to overflow (not just in freebsd, linux has the same) > requiring KBI changes. We should probably go for 64 bits > unless there are compelling space reasons (not for ifnet). Gleb will handle most of that and it is going to be part of the making ifnet opaque to drivers. > - it is useful if certain opaque fields (flow ids, cookies...) > can store pointers. Once again, make them at least 64 bit helps A number of mbuf header fields have this property now. :) -- Andre