Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 4 May 2015 19:35:00 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-9@freebsd.org
Subject:   svn commit: r282428 - stable/9/sys/net
Message-ID:  <201505041935.t44JZ0J5098333@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Mon May  4 19:34:59 2015
New Revision: 282428
URL: https://svnweb.freebsd.org/changeset/base/282428

Log:
  MFC r281765:
  Activate write-only optimization if bpf device opened with O_WRONLY.
  
  dhclient opens bpf as write-only to send packets. It never reads received
  packets from that descriptor, but processing them in kernel takes time.
  Especially much time takes packet timestamping on systems with expensive
  timecounter, such as bhyve guest, where network speed dropped in half.
  
  Sponsored by:	iXsystems, Inc.

Modified:
  stable/9/sys/net/bpf.c
Directory Properties:
  stable/9/   (props changed)
  stable/9/sys/   (props changed)
  stable/9/sys/net/   (props changed)

Modified: stable/9/sys/net/bpf.c
==============================================================================
--- stable/9/sys/net/bpf.c	Mon May  4 19:33:51 2015	(r282427)
+++ stable/9/sys/net/bpf.c	Mon May  4 19:34:59 2015	(r282428)
@@ -617,7 +617,7 @@ bpf_attachd(struct bpf_d *d, struct bpf_
 	 * Save sysctl value to protect from sysctl change
 	 * between reads
 	 */
-	op_w = V_bpf_optimize_writers;
+	op_w = V_bpf_optimize_writers || d->bd_writer;
 
 	if (d->bd_bif != NULL)
 		bpf_detachd_locked(d);
@@ -880,6 +880,8 @@ bpfopen(struct cdev *dev, int flags, int
 	 * particular buffer method.
 	 */
 	bpf_buffer_init(d);
+	if ((flags & FREAD) == 0)
+		d->bd_writer = 2;
 	d->bd_hbuf_in_use = 0;
 	d->bd_bufmode = BPF_BUFMODE_BUFFER;
 	d->bd_sig = SIGIO;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201505041935.t44JZ0J5098333>