svn commit: r247230 - in stable/9/sys: dev/netmap net

Luigi Rizzo luigi at FreeBSD.org
Sun Feb 24 18:26:18 UTC 2013


Author: luigi
Date: Sun Feb 24 18:26:17 2013
New Revision: 247230
URL: http://svnweb.freebsd.org/changeset/base/247230

Log:
  MFC some flags and minor things related to "transparent mode"
  that i forgot in previous commits.

Modified:
  stable/9/sys/dev/netmap/ixgbe_netmap.h
  stable/9/sys/net/netmap.h

Modified: stable/9/sys/dev/netmap/ixgbe_netmap.h
==============================================================================
--- stable/9/sys/dev/netmap/ixgbe_netmap.h	Sun Feb 24 18:13:57 2013	(r247229)
+++ stable/9/sys/dev/netmap/ixgbe_netmap.h	Sun Feb 24 18:26:17 2013	(r247230)
@@ -63,9 +63,6 @@
  *	This is tricky, much better to use TDH for now.
  */
 SYSCTL_DECL(_dev_netmap);
-static int ix_write_len;
-SYSCTL_INT(_dev_netmap, OID_AUTO, ix_write_len,
-    CTLFLAG_RW, &ix_write_len, 0, "write rx len");
 static int ix_rx_miss, ix_rx_miss_bufs, ix_use_dd, ix_crcstrip;
 SYSCTL_INT(_dev_netmap, OID_AUTO, ix_crcstrip,
     CTLFLAG_RW, &ix_crcstrip, 0, "strip CRC on rx frames");
@@ -236,7 +233,7 @@ ixgbe_netmap_txsync(struct ifnet *ifp, u
 	 * seems very expensive, so we interrupt once every half ring,
 	 * or when requested with NS_REPORT
 	 */
-	int report_frequency = kring->nkr_num_slots >> 1;
+	u_int report_frequency = kring->nkr_num_slots >> 1;
 
 	if (k > lim)
 		return netmap_ring_reinit(kring);
@@ -485,12 +482,9 @@ ixgbe_netmap_rxsync(struct ifnet *ifp, u
 	 * rxr->next_to_check is set to 0 on a ring reinit
 	 */
 	if (netmap_no_pendintr || force_update) {
-		/* XXX apparently the length field in advanced descriptors
-		 * does not include the CRC irrespective of the setting
-		 * of CRCSTRIP. The data sheets say differently.
-		 * Very strange.
-		 */
 		int crclen = ix_crcstrip ? 0 : 4;
+		uint16_t slot_flags = kring->nkr_slot_flags;
+
 		l = rxr->next_to_check;
 		j = netmap_idx_n2k(kring, l);
 
@@ -501,8 +495,7 @@ ixgbe_netmap_rxsync(struct ifnet *ifp, u
 			if ((staterr & IXGBE_RXD_STAT_DD) == 0)
 				break;
 			ring->slot[j].len = le16toh(curr->wb.upper.length) - crclen;
-			if (ix_write_len)
-				D("rx[%d] len %d", j, ring->slot[j].len);
+			ring->slot[j].flags = slot_flags;
 			bus_dmamap_sync(rxr->ptag,
 			    rxr->rx_buffers[l].pmap, BUS_DMASYNC_POSTREAD);
 			j = (j == lim) ? 0 : j + 1;

Modified: stable/9/sys/net/netmap.h
==============================================================================
--- stable/9/sys/net/netmap.h	Sun Feb 24 18:13:57 2013	(r247229)
+++ stable/9/sys/net/netmap.h	Sun Feb 24 18:26:17 2013	(r247230)
@@ -144,8 +144,11 @@ struct netmap_slot {
 				 * e.g. by generating an interrupt
 				 */
 #define	NS_FORWARD	0x0004	/* pass packet to the other endpoint
-				 * (host stack or device
+				 * (host stack or device)
 				 */
+#define	NS_NO_LEARN	0x0008
+#define	NS_PORT_SHIFT	8
+#define	NS_PORT_MASK	(0xff << NS_PORT_SHIFT)
 };
 
 /*


More information about the svn-src-all mailing list