From owner-freebsd-net@FreeBSD.ORG Wed Jan 24 13:10:51 2007 Return-Path: X-Original-To: freebsd-net@freebsd.org 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 542BB16A402 for ; Wed, 24 Jan 2007 13:10:51 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (xorpc.icir.org [192.150.187.68]) by mx1.freebsd.org (Postfix) with ESMTP id 41E5413C43E for ; Wed, 24 Jan 2007 13:10:51 +0000 (UTC) (envelope-from rizzo@icir.org) Received: from xorpc.icir.org (localhost [127.0.0.1]) by xorpc.icir.org (8.12.11/8.13.6) with ESMTP id l0ODAo9H056267; Wed, 24 Jan 2007 05:10:50 -0800 (PST) (envelope-from rizzo@xorpc.icir.org) Received: (from rizzo@localhost) by xorpc.icir.org (8.12.11/8.12.3/Submit) id l0ODAoUg056266; Wed, 24 Jan 2007 05:10:50 -0800 (PST) (envelope-from rizzo) Date: Wed, 24 Jan 2007 05:10:50 -0800 From: Luigi Rizzo To: Randall Stewart Message-ID: <20070124051050.A56064@xorpc.icir.org> References: <45B679F3.3080407@cisco.com> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.2.5.1i In-Reply-To: <45B679F3.3080407@cisco.com>; from rrs@cisco.com on Tue, Jan 23, 2007 at 04:11:15PM -0500 Cc: freebsd-net Subject: Re: mbuf patch with sysctl suggestions too 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: Wed, 24 Jan 2007 13:10:51 -0000 On Tue, Jan 23, 2007 at 04:11:15PM -0500, Randall Stewart wrote: > Hi all: > > Here is iteration 2 of the mbuf patch with limits I > proposed. > > Also note the changes for sysctl stuff that Lugi suggested. > Please let me know what you think :-) ... > + newnmbjclusters = nmbjumbop; > + error = sysctl_int_checked(oidp, &newnmbjclusters, nmbjumbop, > + SYSCTL_NO_LIMIT, req); A few things here: - i don't see much of a point in defining SYSCTL_NO_LIMIT; UINT32_MAX would do perfectly there, and i think it is easier to understand than SYSCTL_NO_LIMIT (which looks like a flag). - here and in other places you do not allow decresaing the value (by putting min = nmbjumbop etc.), and i am not sure why. I understand a reasonable lower bound, but i guess the worst that can happen, when you reduce the limit to something above the current allocation, is that nothing is allocated until you go again below the limit, right ? - given that you don't use the new value if error != 0, perhaps you can save the assignment newnmbjclusters = nmbjumbop; And below: > +/* > + * Handle an int, unsigned, but limited > + * between min and max (unsigned) > + * Two cases: > + * a variable: point arg1 at it. > + * a constant: pass it in arg2. > + * > + */ > + > +extern int nmbjumbo9; > + > +int > +sysctl_int_checked(struct sysctl_oid *oidp, void *val, uint32_t min, uint32_t max, struct sysctl_req *req) > +{ the comment refers to something else and should be fixed e.g. Handle an unsigned int variable with bound checking. Returns 0 (and updates *val) if min <= v <= max; returns EINVAL otherwhise (in which case *val is unchanged) cheers luigi