From owner-svn-src-projects@FreeBSD.ORG Sat Dec 8 01:11:56 2012 Return-Path: Delivered-To: svn-src-projects@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [69.147.83.52]) by hub.freebsd.org (Postfix) with ESMTP id D142A8E0; Sat, 8 Dec 2012 01:11:56 +0000 (UTC) (envelope-from jkim@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) by mx1.freebsd.org (Postfix) with ESMTP id ABF818FC13; Sat, 8 Dec 2012 01:11:56 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.5/8.14.5) with ESMTP id qB81Bu0S028997; Sat, 8 Dec 2012 01:11:56 GMT (envelope-from jkim@svn.freebsd.org) Received: (from jkim@localhost) by svn.freebsd.org (8.14.5/8.14.5/Submit) id qB81Bteq028993; Sat, 8 Dec 2012 01:11:55 GMT (envelope-from jkim@svn.freebsd.org) Message-Id: <201212080111.qB81Bteq028993@svn.freebsd.org> From: Jung-uk Kim Date: Sat, 8 Dec 2012 01:11:55 +0000 (UTC) To: src-committers@freebsd.org, svn-src-projects@freebsd.org Subject: svn commit: r244010 - in projects/bpfjit/sys: net netgraph X-SVN-Group: projects MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-projects@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "SVN commit messages for the src " projects" tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 08 Dec 2012 01:11:57 -0000 Author: jkim Date: Sat Dec 8 01:11:55 2012 New Revision: 244010 URL: http://svnweb.freebsd.org/changeset/base/244010 Log: Disable bpfjit by default. Only allow toggling when a filter is set. Modified: projects/bpfjit/sys/net/bpf.c projects/bpfjit/sys/net/bpfjit.c projects/bpfjit/sys/net/bpfjit.h projects/bpfjit/sys/netgraph/ng_bpf.c Modified: projects/bpfjit/sys/net/bpf.c ============================================================================== --- projects/bpfjit/sys/net/bpf.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpf.c Sat Dec 8 01:11:55 2012 (r244010) @@ -1776,10 +1776,11 @@ bpf_setf(struct bpf_d *d, struct bpf_pro } #ifdef BPFJIT /* Filter is copied inside fcode and is perfectly valid. */ - jfunc = bpfjit_generate_code(fcode, flen); - - if (jfunc == NULL && bootverbose) - printf("bpf_setf: failed to compile filter\n"); + if (bpfjit_enable != 0) { + jfunc = bpfjit_generate_code(fcode, flen); + if (jfunc == NULL && bootverbose) + printf("bpf_setf: failed to compile filter\n"); + } #endif } @@ -2062,10 +2063,10 @@ bpf_tap(struct bpf_if *bp, u_char *pkt, * the interface pointers on the mbuf to figure it out. */ #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf(pkt, pktlen, pktlen); - else + } else #endif slen = bpf_filter(d->bd_rfilter, pkt, pktlen, pktlen); if (slen != 0) { @@ -2123,10 +2124,10 @@ bpf_mtap(struct bpf_if *bp, struct mbuf continue; ++d->bd_rcount; #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf((u_char *)m, pktlen, 0); - else + } else #endif slen = bpf_filter(d->bd_rfilter, (u_char *)m, pktlen, 0); if (slen != 0) { @@ -2188,10 +2189,10 @@ bpf_mtap2(struct bpf_if *bp, void *data, continue; ++d->bd_rcount; #ifdef BPFJIT - bf = bpfjit_disable == 0 ? d->bd_bfilter : NULL; - if (bf != NULL) + if (d->bd_bfilter != NULL) { + bf = d->bd_bfilter; slen = bf((u_char *)&mb, pktlen, 0); - else + } else #endif slen = bpf_filter(d->bd_rfilter, (u_char *)&mb, pktlen, 0); if (slen != 0) { Modified: projects/bpfjit/sys/net/bpfjit.c ============================================================================== --- projects/bpfjit/sys/net/bpfjit.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpfjit.c Sat Dec 8 01:11:55 2012 (r244010) @@ -58,10 +58,10 @@ uint32_t m_xword(const struct mbuf *, ui uint32_t m_xhalf(const struct mbuf *, uint32_t, int *); uint32_t m_xbyte(const struct mbuf *, uint32_t, int *); -int bpfjit_disable = 0; +int bpfjit_enable = 0; SYSCTL_NODE(_net, OID_AUTO, bpfjit, CTLFLAG_RW, 0, "BPF just-in-time compiler"); -SYSCTL_INT(_net_bpfjit, OID_AUTO, disable, CTLFLAG_RW, &bpfjit_disable, 0, - "disable BPF just-in-time compiler"); +SYSCTL_INT(_net_bpfjit, OID_AUTO, enable, CTLFLAG_RW, &bpfjit_enable, 0, + "enable BPF just-in-time compiler"); #else Modified: projects/bpfjit/sys/net/bpfjit.h ============================================================================== --- projects/bpfjit/sys/net/bpfjit.h Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/net/bpfjit.h Sat Dec 8 01:11:55 2012 (r244010) @@ -49,7 +49,7 @@ #endif #ifdef _KERNEL -extern int bpfjit_disable; +extern int bpfjit_enable; #endif /* Modified: projects/bpfjit/sys/netgraph/ng_bpf.c ============================================================================== --- projects/bpfjit/sys/netgraph/ng_bpf.c Sat Dec 8 00:47:03 2012 (r244009) +++ projects/bpfjit/sys/netgraph/ng_bpf.c Sat Dec 8 01:11:55 2012 (r244010) @@ -451,7 +451,7 @@ ng_bpf_rcvdata(hook_p hook, item_p item) /* Run packet through filter */ #ifdef BPFJIT - if (bpfjit_disable == 0 && hip->jit_prog != NULL) { + if (hip->jit_prog != NULL) { if (data) len = (hip->jit_prog)(data, totlen, totlen); else @@ -545,7 +545,7 @@ ng_bpf_setprog(hook_p hook, const struct const hinfo_p hip = NG_HOOK_PRIVATE(hook); struct ng_bpf_hookprog *hp; #ifdef BPFJIT - bpfjit_function_t jit_prog; + bpfjit_function_t jit_prog = NULL; #endif int size; @@ -560,8 +560,10 @@ ng_bpf_setprog(hook_p hook, const struct if (hp == NULL) return (ENOMEM); bcopy(hp0, hp, size); + #ifdef BPFJIT - jit_prog = bpfjit_generate_code(hp->bpf_prog, hp->bpf_prog_len); + if (bpfjit_enable != 0) + jit_prog = bpfjit_generate_code(hp->bpf_prog, hp->bpf_prog_len); #endif /* Free previous program, if any, and assign new one */