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

Roger Pau Monné royger at FreeBSD.org
Thu Jun 2 11:12:12 UTC 2016


Author: royger
Date: Thu Jun  2 11:12:11 2016
New Revision: 301196
URL: https://svnweb.freebsd.org/changeset/base/301196

Log:
  xen-netfront: fix receiving TSO packets
  
  Currently FreeBSD is not properly fetching the TSO information from the Xen
  PV ring, and thus the received packets didn't have all the necessary
  information, like the segment size or even the TSO flag set.
  
  Sponsored by: Citrix Systems R&D

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

Modified: head/sys/dev/xen/netfront/netfront.c
==============================================================================
--- head/sys/dev/xen/netfront/netfront.c	Thu Jun  2 07:45:01 2016	(r301195)
+++ head/sys/dev/xen/netfront/netfront.c	Thu Jun  2 11:12:11 2016	(r301196)
@@ -1253,6 +1253,13 @@ xn_rxeof(struct netfront_rxq *rxq)
 					    | CSUM_PSEUDO_HDR);
 				m->m_pkthdr.csum_data = 0xffff;
 			}
+			if ((rx->flags & NETRXF_extra_info) != 0 &&
+			    (extras[XEN_NETIF_EXTRA_TYPE_GSO - 1].type ==
+			    XEN_NETIF_EXTRA_TYPE_GSO)) {
+				m->m_pkthdr.tso_segsz =
+				extras[XEN_NETIF_EXTRA_TYPE_GSO - 1].u.gso.size;
+				m->m_pkthdr.csum_flags |= CSUM_TSO;
+			}
 
 			rxq->stats.rx_packets++;
 			rxq->stats.rx_bytes += m->m_pkthdr.len;


More information about the svn-src-all mailing list