svn commit: r314842 - head/sys/dev/xen/netfront

Roger Pau Monné royger at FreeBSD.org
Tue Mar 7 09:18:54 UTC 2017


Author: royger
Date: Tue Mar  7 09:18:52 2017
New Revision: 314842
URL: https://svnweb.freebsd.org/changeset/base/314842

Log:
  xen/netfront: fix inbound packet flags for checksum offload
  
  Currently netfront is setting the flags of inbound packets with the checksum
  not present (offloaded) to (CSUM_IP_CHECKED | CSUM_IP_VALID | CSUM_DATA_VALID |
  CSUM_PSEUDO_HDR). According to the mbuf(9) man page this is not the correct
  combination of flags, it should instead be (CSUM_DATA_VALID |
  CSUM_PSEUDO_HDR).
  
  Reviewed by:		Wei Liu <wei.liu2 at citrix.com>
  MFC after:		2 weeks
  Sponsored by:		Citrix Systems R&D
  Differential revision:	https://reviews.freebsd.org/D9831

Modified:
  head/sys/dev/xen/netfront/netfront.c

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Tue Mar  7 09:17:48 2017	(r314841)
+++ head/sys/dev/xen/netfront/netfront.c	Tue Mar  7 09:18:52 2017	(r314842)
@@ -1192,15 +1192,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-head mailing list