svn commit: r315665 - stable/11/sys/dev/xen/netfront

Roger Pau Monné royger at FreeBSD.org
Tue Mar 21 08:30:07 UTC 2017


Author: royger
Date: Tue Mar 21 08:30:06 2017
New Revision: 315665
URL: https://svnweb.freebsd.org/changeset/base/315665

Log:
  MFC r314842:
  
  xen/netfront: fix inbound packet flags for checksum offload
  
  Reviewed by:          Wei Liu <wei.liu2 at citrix.com>
  Sponsored by:         Citrix Systems R&D

Modified:
  stable/11/sys/dev/xen/netfront/netfront.c
Directory Properties:
  stable/11/   (props changed)

Modified: stable/11/sys/dev/xen/netfront/netfront.c
==============================================================================
--- stable/11/sys/dev/xen/netfront/netfront.c	Tue Mar 21 08:24:40 2017	(r315664)
+++ stable/11/sys/dev/xen/netfront/netfront.c	Tue Mar 21 08:30:06 2017	(r315665)
@@ -1178,15 +1178,17 @@ xn_rxeof(struct netfront_rxq *rxq)
 
 			m->m_pkthdr.rcvif = ifp;
 			if ( rx->flags & NETRXF_data_validated ) {
-				/* Tell the stack the checksums are okay */
 				/*
-				 * XXX this isn't necessarily the case - need to add
-				 * check
+				 * According to mbuf(9) the correct way to tell
+				 * the stack that the checksum of an inbound
+				 * packet is correct, without it actually being
+				 * present (because the underlying interface
+				 * doesn't provide it), is to set the
+				 * CSUM_DATA_VALID and CSUM_PSEUDO_HDR flags,
+				 * and the csum_data field to 0xffff.
 				 */
-
-				m->m_pkthdr.csum_flags |=
-					(CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID
-					    | CSUM_PSEUDO_HDR);
+				m->m_pkthdr.csum_flags |= (CSUM_DATA_VALID
+				    | CSUM_PSEUDO_HDR);
 				m->m_pkthdr.csum_data = 0xffff;
 			}
 			if ((rx->flags & NETRXF_extra_info) != 0 &&


More information about the svn-src-all mailing list