Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 7 Sep 2016 05:27:43 +0000 (UTC)
From:      Sepherosa Ziehau <sephe@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r305521 - head/sys/dev/hyperv/netvsc
Message-ID:  <201609070527.u875Rhdl014499@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: sephe
Date: Wed Sep  7 05:27:43 2016
New Revision: 305521
URL: https://svnweb.freebsd.org/changeset/base/305521

Log:
  hyperv/hn: Avoid bit fields for TXCSUM setup.
  
  MFC after:	1 week
  Sponsored by:	Microsoft
  Differential Revision:	https://reviews.freebsd.org/D7792

Modified:
  head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
  head/sys/dev/hyperv/netvsc/ndis.h

Modified: head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c
==============================================================================
--- head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c	Wed Sep  7 04:13:28 2016	(r305520)
+++ head/sys/dev/hyperv/netvsc/hv_netvsc_drv_freebsd.c	Wed Sep  7 05:27:43 2016	(r305521)
@@ -972,16 +972,14 @@ hn_encap(struct hn_tx_ring *txr, struct 
 		csum_info = (rndis_tcp_ip_csum_info *)((uint8_t *)rppi +
 		    rppi->per_packet_info_offset);
 
-		csum_info->xmit.is_ipv4 = 1;
+		csum_info->value = NDIS_TXCSUM_INFO_IPV4;
 		if (m_head->m_pkthdr.csum_flags & CSUM_IP)
-			csum_info->xmit.ip_header_csum = 1;
+			csum_info->value |= NDIS_TXCSUM_INFO_IPCS;
 
-		if (m_head->m_pkthdr.csum_flags & CSUM_TCP) {
-			csum_info->xmit.tcp_csum = 1;
-			csum_info->xmit.tcp_header_offset = 0;
-		} else if (m_head->m_pkthdr.csum_flags & CSUM_UDP) {
-			csum_info->xmit.udp_csum = 1;
-		}
+		if (m_head->m_pkthdr.csum_flags & CSUM_TCP)
+			csum_info->value |= NDIS_TXCSUM_INFO_TCPCS;
+		else if (m_head->m_pkthdr.csum_flags & CSUM_UDP)
+			csum_info->value |= NDIS_TXCSUM_INFO_UDPCS;
 	}
 
 	rndis_mesg->msg_len = tot_data_buf_len + rndis_msg_size;

Modified: head/sys/dev/hyperv/netvsc/ndis.h
==============================================================================
--- head/sys/dev/hyperv/netvsc/ndis.h	Wed Sep  7 04:13:28 2016	(r305520)
+++ head/sys/dev/hyperv/netvsc/ndis.h	Wed Sep  7 05:27:43 2016	(r305521)
@@ -232,6 +232,7 @@ struct ndis_rssprm_toeplitz {
 #define	NDIS_RXCSUM_INFO_IPCS_INVAL	0x0100
 
 /* LSOv2 */
+#define	NDIS_LSO2_INFO_SIZE		sizeof(uint32_t)
 #define	NDIS_LSO2_INFO_MSS_MASK		0x000fffff
 #define	NDIS_LSO2_INFO_THOFF_MASK	0x3ff00000
 #define	NDIS_LSO2_INFO_ISLSO2		0x40000000
@@ -248,4 +249,13 @@ struct ndis_rssprm_toeplitz {
 #define	NDIS_LSO2_INFO_MAKEIPV6(thoff, mss)			\
 	(NDIS_LSO2_INFO_MAKE((thoff), (mss)) | NDIS_LSO2_INFO_ISIPV6)
 
+/* Transmission checksum */
+#define	NDIS_TXCSUM_INFO_SIZE		sizeof(uint32_t)
+#define	NDIS_TXCSUM_INFO_IPV4		0x00000001
+#define	NDIS_TXCSUM_INFO_IPV6		0x00000002
+#define	NDIS_TXCSUM_INFO_TCPCS		0x00000004
+#define	NDIS_TXCSUM_INFO_UDPCS		0x00000008
+#define	NDIS_TXCSUM_INFO_IPCS		0x00000010
+#define	NDIS_TXCSUM_INFO_THOFF		0x03ff0000
+
 #endif	/* !_NET_NDIS_H_ */



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201609070527.u875Rhdl014499>