svn commit: r265421 - stable/10/sys/dev/cxgbe

Navdeep Parhar np at FreeBSD.org
Tue May 6 04:22:07 UTC 2014


Author: np
Date: Tue May  6 04:22:06 2014
New Revision: 265421
URL: http://svnweb.freebsd.org/changeset/base/265421

Log:
  MFC r260210 (by adrian@):
  Add an option to enable or disable the small RX packet copying that
  is done to improve performance of small frames.
  
  When doing RX packing, the RX copying isn't necessarily required.

Modified:
  stable/10/sys/dev/cxgbe/adapter.h
  stable/10/sys/dev/cxgbe/t4_main.c
  stable/10/sys/dev/cxgbe/t4_sge.c
Directory Properties:
  stable/10/   (props changed)

Modified: stable/10/sys/dev/cxgbe/adapter.h
==============================================================================
--- stable/10/sys/dev/cxgbe/adapter.h	Tue May  6 04:22:01 2014	(r265420)
+++ stable/10/sys/dev/cxgbe/adapter.h	Tue May  6 04:22:06 2014	(r265421)
@@ -643,6 +643,8 @@ struct adapter {
 	const char *last_op;
 	const void *last_op_thr;
 #endif
+
+	int sc_do_rxcopy;
 };
 
 #define ADAPTER_LOCK(sc)		mtx_lock(&(sc)->sc_lock)

Modified: stable/10/sys/dev/cxgbe/t4_main.c
==============================================================================
--- stable/10/sys/dev/cxgbe/t4_main.c	Tue May  6 04:22:01 2014	(r265420)
+++ stable/10/sys/dev/cxgbe/t4_main.c	Tue May  6 04:22:06 2014	(r265421)
@@ -4207,6 +4207,10 @@ t4_sysctls(struct adapter *sc)
 	oid = device_get_sysctl_tree(sc->dev);
 	c0 = children = SYSCTL_CHILDREN(oid);
 
+	sc->sc_do_rxcopy = 1;
+	SYSCTL_ADD_INT(ctx, children, OID_AUTO, "do_rx_copy", CTLFLAG_RW,
+	    &sc->sc_do_rxcopy, 1, "Do RX copy of small frames");
+
 	SYSCTL_ADD_INT(ctx, children, OID_AUTO, "nports", CTLFLAG_RD, NULL,
 	    sc->params.nports, "# of ports");
 

Modified: stable/10/sys/dev/cxgbe/t4_sge.c
==============================================================================
--- stable/10/sys/dev/cxgbe/t4_sge.c	Tue May  6 04:22:01 2014	(r265420)
+++ stable/10/sys/dev/cxgbe/t4_sge.c	Tue May  6 04:22:06 2014	(r265421)
@@ -1450,7 +1450,7 @@ get_fl_payload1(struct adapter *sc, stru
 
 		bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map,
 		    BUS_DMASYNC_POSTREAD);
-		if (len < RX_COPY_THRESHOLD) {
+		if (sc->sc_do_rxcopy && (len < RX_COPY_THRESHOLD)) {
 #ifdef T4_PKT_TIMESTAMP
 			/* Leave room for a timestamp */
 			m0->m_data += 8;
@@ -1601,7 +1601,7 @@ get_fl_payload2(struct adapter *sc, stru
 
 	bus_dmamap_sync(fl->tag[sd->tag_idx], sd->map, BUS_DMASYNC_POSTREAD);
 
-	if (len < RX_COPY_THRESHOLD) {
+	if (sc->sc_do_rxcopy && (len < RX_COPY_THRESHOLD)) {
 #ifdef T4_PKT_TIMESTAMP
 		/* Leave room for a timestamp */
 		m0->m_data += 8;


More information about the svn-src-stable-10 mailing list