svn commit: r305521 - head/sys/dev/hyperv/netvsc
Sepherosa Ziehau
sephe at FreeBSD.org
Wed Sep 7 05:27:44 UTC 2016
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_ */
More information about the svn-src-all
mailing list