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_ */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to