svn commit: r188486 - user/dfr/xenhvm/6/sys/dev/xen/netfront

Doug Rabson dfr at FreeBSD.org
Wed Feb 11 07:55:02 PST 2009


Author: dfr
Date: Wed Feb 11 15:55:01 2009
New Revision: 188486
URL: http://svn.freebsd.org/changeset/base/188486

Log:
  Enable checksum offload.

Modified:
  user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c

Modified: user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c
==============================================================================
--- user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c	Wed Feb 11 15:22:01 2009	(r188485)
+++ user/dfr/xenhvm/6/sys/dev/xen/netfront/netfront.c	Wed Feb 11 15:55:01 2009	(r188486)
@@ -76,6 +76,8 @@ __FBSDID("$FreeBSD$");
 
 #include "xenbus_if.h"
 
+#define XN_CSUM_FEATURES	(CSUM_TCP | CSUM_UDP)
+
 #define GRANT_INVALID_REF	0
 
 #define NET_TX_RING_SIZE __RING_SIZE((netif_tx_sring_t *)0, PAGE_SIZE)
@@ -493,11 +495,6 @@ talk_to_backend(device_t dev, struct net
 		message = "writing feature-rx-notify";
 		goto abort_transaction;
 	}
-	err = xenbus_printf(xbt, node, "feature-no-csum-offload", "%d", 1);
-	if (err) {
-		message = "writing feature-no-csum-offload";
-		goto abort_transaction;
-	}
 	err = xenbus_printf(xbt, node, "feature-sg", "%d", 1);
 	if (err) {
 		message = "writing feature-sg";
@@ -1366,10 +1363,10 @@ xn_start_locked(struct ifnet *ifp) 
 		    mfn, GNTMAP_readonly);
 		tx->gref = sc->grant_tx_ref[id] = ref;
 		tx->size = new_m->m_pkthdr.len;
-#if 0
-		tx->flags = (skb->ip_summed == CHECKSUM_HW) ? NETTXF_csum_blank : 0;
-#endif
-		tx->flags = 0;
+		if (new_m->m_pkthdr.csum_flags & CSUM_DELAY_DATA)
+			tx->flags = NETTXF_csum_blank | NETTXF_data_validated;
+		else
+			tx->flags = 0;
 		new_m->m_next = NULL;
 		new_m->m_nextpkt = NULL;
 
@@ -1734,11 +1731,9 @@ create_netdev(device_t dev)
     	ifp->if_mtu = ETHERMTU;
     	ifp->if_snd.ifq_maxlen = NET_TX_RING_SIZE - 1;
 	
-#ifdef notyet
     	ifp->if_hwassist = XN_CSUM_FEATURES;
     	ifp->if_capabilities = IFCAP_HWCSUM;
     	ifp->if_capenable = ifp->if_capabilities;
-#endif    
 	
     	ether_ifattach(ifp, np->mac);
     	callout_init(&np->xn_stat_ch, CALLOUT_MPSAFE);


More information about the svn-src-user mailing list