socsvn commit: r305835 - soc2016/vincenzo/head/sys/dev/netmap

vincenzo at FreeBSD.org vincenzo at FreeBSD.org
Fri Jul 8 15:45:25 UTC 2016


Author: vincenzo
Date: Fri Jul  8 15:45:23 2016
New Revision: 305835
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=305835

Log:
   freebsd: ptnet_attach: set offloadings flags in if_capabilities

Modified:
  soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c

Modified: soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c
==============================================================================
--- soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri Jul  8 15:45:14 2016	(r305834)
+++ soc2016/vincenzo/head/sys/dev/netmap/if_ptnet.c	Fri Jul  8 15:45:23 2016	(r305835)
@@ -384,6 +384,18 @@
 	ifp->if_data.ifi_hdrlen = sizeof(struct ether_vlan_header);
 	ifp->if_capabilities |= IFCAP_JUMBO_MTU | IFCAP_VLAN_MTU;
 
+	if (sc->ptfeatures & NET_PTN_FEATURES_VNET_HDR) {
+		/* Similarly to what the vtnet driver does, we can emulate
+		 * VLAN offloadings by inserting and removing the 802.1Q
+		 * header during transmit and receive. We are then able
+		 * to do checksum offloading of VLAN frames. */
+		ifp->if_capabilities |= IFCAP_HWCSUM | IFCAP_HWCSUM_IPV6
+					| IFCAP_VLAN_HWCSUM
+					| IFCAP_TSO | IFCAP_LRO
+					| IFCAP_VLAN_HWTSO
+					| IFCAP_VLAN_HWTAGGING;
+	}
+
 	ifp->if_capenable = ifp->if_capabilities;
 
 	snprintf(sc->lock_name, sizeof(sc->lock_name),
@@ -1913,8 +1925,6 @@
 		}
 
 		mhead->m_pkthdr.rcvif = ifp;
-
-                /* No support for checksum offloading for now. */
 		mhead->m_pkthdr.csum_flags = 0;
 
 		/* Store the queue idx in the packet header. */


More information about the svn-soc-all mailing list