PERFORCE change 131554 for review
Robert Watson
rwatson at FreeBSD.org
Mon Dec 24 14:52:32 PST 2007
http://perforce.freebsd.org/chv.cgi?CH=131554
Change 131554 by rwatson at rwatson_cinnamon on 2007/12/24 22:51:45
Rather than using an environmental variable to trigger use of
zero-copy BPF, instead always enable it in libcap if the kernel
is willing to service it.
Add a new sysctl, net.bpf.zerocopy_enable to enable/disable
zero-copy support. Default to enable, so that if zero-copy
support is compiled into the kernel, we use it by default.
Wee.
Affected files ...
.. //depot/projects/zcopybpf/src/contrib/libpcap/pcap-bpf.c#17 edit
.. //depot/projects/zcopybpf/src/sys/net/bpf.c#35 edit
Differences ...
==== //depot/projects/zcopybpf/src/contrib/libpcap/pcap-bpf.c#17 (text+ko) ====
@@ -805,8 +805,7 @@
*/
#ifdef BIOCSETBUFMODE
bufmode = BPF_BUFMODE_ZBUF;
- if (getenv("BPF_ZEROCOPY") &&
- ioctl(fd, BIOCSETBUFMODE, (caddr_t)&bufmode) == 0) {
+ if (ioctl(fd, BIOCSETBUFMODE, (caddr_t)&bufmode) == 0) {
p->zerocopy = 1;
if (ioctl(fd, BIOCGETZMAX, (caddr_t)&zbufmax) < 0) {
snprintf(ebuf, PCAP_ERRBUF_SIZE, "BIOCGETZMAX: %s",
==== //depot/projects/zcopybpf/src/sys/net/bpf.c#35 (text+ko) ====
@@ -134,6 +134,11 @@
static int bpf_maxinsns = BPF_MAXINSNS;
SYSCTL_INT(_net_bpf, OID_AUTO, maxinsns, CTLFLAG_RW,
&bpf_maxinsns, 0, "Maximum bpf program instructions");
+#ifdef BPF_ZEROCOPY
+static int bpf_zerocopy_enable = 1;
+SYSCTL_INT(_net_bpf, OID_AUTO, zerocopy_enable, CTLFLAG_RW,
+ &bpf_zerocopy_enable, 0, "Enable new zero-copy BPF buffer sessions");
+#endif
SYSCTL_NODE(_net_bpf, OID_AUTO, stats, CTLFLAG_RW,
bpf_stats_sysctl, "bpf statistics portal");
@@ -1305,7 +1310,9 @@
#ifdef BPF_ZEROCOPY
case BPF_BUFMODE_ZBUF:
- break;
+ if (bpf_zerocopy_enable)
+ break;
+ /* FALLSTHROUGH */
#endif
default:
More information about the p4-projects
mailing list