From owner-freebsd-pf@FreeBSD.ORG Wed Jun 12 18:51:56 2013 Return-Path: Delivered-To: freebsd-pf@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by hub.freebsd.org (Postfix) with ESMTP id 03D7FF2B; Wed, 12 Jun 2013 18:51:56 +0000 (UTC) (envelope-from to.my.trociny@gmail.com) Received: from mail-ea0-x235.google.com (mail-ea0-x235.google.com [IPv6:2a00:1450:4013:c01::235]) by mx1.freebsd.org (Postfix) with ESMTP id 681A11AF8; Wed, 12 Jun 2013 18:51:55 +0000 (UTC) Received: by mail-ea0-f181.google.com with SMTP id a15so4797087eae.12 for ; Wed, 12 Jun 2013 11:51:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:date:from:to:cc:subject:message-id:references:mime-version :content-type:content-disposition:in-reply-to:user-agent; bh=nzJWzPfbZiN38NgmXEaeWAE6cSz7/u5FLWNehCuniqw=; b=LrJwP0UudCuacgVlnnA16L7nwLOMeRNGwqiDykjJljDo2OqFdtVV+yZw5CJZH6byKj i+q6huBRxeGnC4v7zzdsay73rfp764G/a/Tosq77cwox3+gD9WQCaIjuw61lIHKGeTWu BJ00f07a5qy+uCalDrck0Q+prsV4+CsuNPtdhH6BkvresqKd9hFDWjVTxCYOUSPO1YAZ irWJrofUxV55N724D2dHvETGEZBN1xfM876XmBXu0E4udQUXSBuluEDjZKd5NbdxSqxF LPHbF4Yu0hCIliV4IuURt0MrQXRuUnGKEIMy3kNjaG7M4mViwLEiuew3RCmaCZpglipy IIEA== X-Received: by 10.14.206.193 with SMTP id l41mr20842899eeo.154.1371063114472; Wed, 12 Jun 2013 11:51:54 -0700 (PDT) Received: from localhost ([178.150.115.244]) by mx.google.com with ESMTPSA id c5sm38641403eeu.8.2013.06.12.11.51.52 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Wed, 12 Jun 2013 11:51:53 -0700 (PDT) Sender: Mikolaj Golub Date: Wed, 12 Jun 2013 21:51:51 +0300 From: Mikolaj Golub To: Nikos Vassiliadis Subject: Re: de-virtualize pf sysctls Message-ID: <20130612185150.GA6553@gmail.com> References: <51B33B8B.9050006@gmx.com> <51B344B8.9090109@gmx.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <51B344B8.9090109@gmx.com> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: freebsd-pf@freebsd.org X-BeenThere: freebsd-pf@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Technical discussion and general questions about packet filter \(pf\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 12 Jun 2013 18:51:56 -0000 On Sat, Jun 08, 2013 at 04:50:32PM +0200, Nikos Vassiliadis wrote: > On 06/08/2013 04:11 PM, Nikos Vassiliadis wrote: > > Hi, > > > > Please review this patch. These two variables are RO-tunables and > > cannot be changed at runtime. As such, it is not useful to > > virtualize them. This looks correct to me. Also, it looks like V_pf_hashmask and V_pf_srchashmask can be de-virtualized then. > > Sorry for the noise, > > I missed something in the previous patch. > > > > Index: sys/netpfil/pf/pf.c > =================================================================== > --- sys/netpfil/pf/pf.c (revision 251514) > +++ sys/netpfil/pf/pf.c (working copy) > @@ -359,15 +359,13 @@ VNET_DEFINE(u_long, pf_srchashmask); > > SYSCTL_NODE(_net, OID_AUTO, pf, CTLFLAG_RW, 0, "pf(4)"); > > -VNET_DEFINE(u_long, pf_hashsize); > -#define V_pf_hashsize VNET(pf_hashsize) > -SYSCTL_VNET_UINT(_net_pf, OID_AUTO, states_hashsize, CTLFLAG_RDTUN, > - &VNET_NAME(pf_hashsize), 0, "Size of pf(4) states hashtable"); > +static u_long pf_hashsize; > +static u_long pf_srchashsize; > > -VNET_DEFINE(u_long, pf_srchashsize); > -#define V_pf_srchashsize VNET(pf_srchashsize) > -SYSCTL_VNET_UINT(_net_pf, OID_AUTO, source_nodes_hashsize, CTLFLAG_RDTUN, > - &VNET_NAME(pf_srchashsize), 0, "Size of pf(4) source nodes hashtable"); > +SYSCTL_UINT(_net_pf, OID_AUTO, states_hashsize, CTLFLAG_RDTUN, > + &pf_hashsize, 0, "Size of pf(4) states hashtable"); > +SYSCTL_UINT(_net_pf, OID_AUTO, source_nodes_hashsize, CTLFLAG_RDTUN, > + &pf_srchashsize, 0, "Size of pf(4) source nodes hashtable"); > > VNET_DEFINE(void *, pf_swi_cookie); > > @@ -698,12 +696,12 @@ pf_initialize() > struct pf_srchash *sh; > u_int i; > > - TUNABLE_ULONG_FETCH("net.pf.states_hashsize", &V_pf_hashsize); > - if (V_pf_hashsize == 0 || !powerof2(V_pf_hashsize)) > - V_pf_hashsize = PF_HASHSIZ; > - TUNABLE_ULONG_FETCH("net.pf.source_nodes_hashsize", &V_pf_srchashsize); > - if (V_pf_srchashsize == 0 || !powerof2(V_pf_srchashsize)) > - V_pf_srchashsize = PF_HASHSIZ / 4; > + TUNABLE_ULONG_FETCH("net.pf.states_hashsize", &pf_hashsize); > + if (pf_hashsize == 0 || !powerof2(pf_hashsize)) > + pf_hashsize = PF_HASHSIZ; > + TUNABLE_ULONG_FETCH("net.pf.source_nodes_hashsize", &pf_srchashsize); > + if (pf_srchashsize == 0 || !powerof2(pf_srchashsize)) > + pf_srchashsize = PF_HASHSIZ / 4; > > V_pf_hashseed = arc4random(); > > @@ -717,11 +715,11 @@ pf_initialize() > V_pf_state_key_z = uma_zcreate("pf state keys", > sizeof(struct pf_state_key), pf_state_key_ctor, NULL, NULL, NULL, > UMA_ALIGN_PTR, 0); > - V_pf_keyhash = malloc(V_pf_hashsize * sizeof(struct pf_keyhash), > + V_pf_keyhash = malloc(pf_hashsize * sizeof(struct pf_keyhash), > M_PFHASH, M_WAITOK | M_ZERO); > - V_pf_idhash = malloc(V_pf_hashsize * sizeof(struct pf_idhash), > + V_pf_idhash = malloc(pf_hashsize * sizeof(struct pf_idhash), > M_PFHASH, M_WAITOK | M_ZERO); > - V_pf_hashmask = V_pf_hashsize - 1; > + V_pf_hashmask = pf_hashsize - 1; > for (i = 0, kh = V_pf_keyhash, ih = V_pf_idhash; i <= V_pf_hashmask; > i++, kh++, ih++) { > mtx_init(&kh->lock, "pf_keyhash", NULL, MTX_DEF); > @@ -735,9 +733,9 @@ pf_initialize() > V_pf_limits[PF_LIMIT_SRC_NODES].zone = V_pf_sources_z; > uma_zone_set_max(V_pf_sources_z, PFSNODE_HIWAT); > uma_zone_set_warning(V_pf_sources_z, "PF source nodes limit reached"); > - V_pf_srchash = malloc(V_pf_srchashsize * sizeof(struct pf_srchash), > + V_pf_srchash = malloc(pf_srchashsize * sizeof(struct pf_srchash), > M_PFHASH, M_WAITOK|M_ZERO); > - V_pf_srchashmask = V_pf_srchashsize - 1; > + V_pf_srchashmask = pf_srchashsize - 1; > for (i = 0, sh = V_pf_srchash; i <= V_pf_srchashmask; i++, sh++) > mtx_init(&sh->lock, "pf_srchash", NULL, MTX_DEF); > > _______________________________________________ > freebsd-pf@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-pf > To unsubscribe, send any mail to "freebsd-pf-unsubscribe@freebsd.org" -- Mikolaj Golub