Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 30 May 2013 11:09:41 +0000 (UTC)
From:      Luigi Rizzo <luigi@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r251131 - head/tools/tools/netmap
Message-ID:  <201305301109.r4UB9ftS045231@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: luigi
Date: Thu May 30 11:09:41 2013
New Revision: 251131
URL: http://svnweb.freebsd.org/changeset/base/251131

Log:
  add a compile-time option to copy packets instead of doing
  the buffer swapping.

Modified:
  head/tools/tools/netmap/bridge.c

Modified: head/tools/tools/netmap/bridge.c
==============================================================================
--- head/tools/tools/netmap/bridge.c	Thu May 30 11:08:16 2013	(r251130)
+++ head/tools/tools/netmap/bridge.c	Thu May 30 11:09:41 2013	(r251131)
@@ -14,7 +14,7 @@
 
 int verbose = 0;
 
-char *version = "$Id: bridge.c 12016 2013-01-23 17:24:22Z luigi $";
+char *version = "$Id$";
 
 static int do_abort = 0;
 
@@ -50,7 +50,12 @@ process_rings(struct netmap_ring *rxring
 	while (limit-- > 0) {
 		struct netmap_slot *rs = &rxring->slot[j];
 		struct netmap_slot *ts = &txring->slot[k];
+#ifdef NO_SWAP
+		char *rxbuf = NETMAP_BUF(rxring, rs->buf_idx);
+		char *txbuf = NETMAP_BUF(txring, ts->buf_idx);
+#else
 		uint32_t pkt;
+#endif
 
 		/* swap packets */
 		if (ts->buf_idx < 2 || rs->buf_idx < 2) {
@@ -58,20 +63,24 @@ process_rings(struct netmap_ring *rxring
 				j, rs->buf_idx, k, ts->buf_idx);
 			sleep(2);
 		}
+#ifndef NO_SWAP
 		pkt = ts->buf_idx;
 		ts->buf_idx = rs->buf_idx;
 		rs->buf_idx = pkt;
-
+#endif
 		/* copy the packet length. */
 		if (rs->len < 14 || rs->len > 2048)
 			D("wrong len %d rx[%d] -> tx[%d]", rs->len, j, k);
 		else if (verbose > 1)
 			D("%s send len %d rx[%d] -> tx[%d]", msg, rs->len, j, k);
 		ts->len = rs->len;
-
+#ifdef NO_SWAP
+		pkt_copy(rxbuf, txbuf, ts->len);
+#else
 		/* report the buffer change. */
 		ts->flags |= NS_BUF_CHANGED;
 		rs->flags |= NS_BUF_CHANGED;
+#endif /* NO_SWAP */
 		j = NETMAP_RING_NEXT(rxring, j);
 		k = NETMAP_RING_NEXT(txring, k);
 	}



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