summaryrefslogtreecommitdiff
path: root/datapath-windows/ovsext/Vxlan.c
diff options
context:
space:
mode:
authorYin Lin <linyi@vmware.com>2016-05-24 23:28:03 +0000
committerBen Pfaff <blp@ovn.org>2016-06-01 10:32:37 -0700
commit85165b3cd91cf9b858879897cf00cf313a632a38 (patch)
tree4de66fce88643727d11f1a11c1d0c6856e82e200 /datapath-windows/ovsext/Vxlan.c
parent4c16ee484e2f3c7888ec33e8260f868605568027 (diff)
downloadopenvswitch-85165b3cd91cf9b858879897cf00cf313a632a38.tar.gz
datapath-windows: Move UDP checksum computation to Offload.c
UDP checksum computation is shared by both vxlan and geneve on Windows. Move the function so that the code can be shared. Signed-off-by: Yin Lin <linyi@vmware.com> Acked-by: Nithin Raju <nithin@vmware.com> Signed-off-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'datapath-windows/ovsext/Vxlan.c')
-rw-r--r--datapath-windows/ovsext/Vxlan.c48
1 files changed, 3 insertions, 45 deletions
diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c
index 20214cb94..765f5f1c2 100644
--- a/datapath-windows/ovsext/Vxlan.c
+++ b/datapath-windows/ovsext/Vxlan.c
@@ -353,48 +353,6 @@ OvsEncapVxlan(POVS_VPORT_ENTRY vport,
switchContext, newNbl);
}
-/*
- *----------------------------------------------------------------------------
- * OvsCalculateUDPChecksum
- * Calculate UDP checksum
- *----------------------------------------------------------------------------
- */
-static __inline NDIS_STATUS
-OvsCalculateUDPChecksum(PNET_BUFFER_LIST curNbl,
- PNET_BUFFER curNb,
- IPHdr *ipHdr,
- UDPHdr *udpHdr,
- UINT32 packetLength)
-{
- NDIS_TCP_IP_CHECKSUM_NET_BUFFER_LIST_INFO csumInfo;
- UINT16 checkSum;
-
- csumInfo.Value = NET_BUFFER_LIST_INFO(curNbl, TcpIpChecksumNetBufferListInfo);
-
- /* Next check if UDP checksum has been calculated. */
- if (!csumInfo.Receive.UdpChecksumSucceeded) {
- UINT32 l4Payload;
-
- checkSum = udpHdr->check;
-
- l4Payload = packetLength - sizeof(EthHdr) - ipHdr->ihl * 4;
- udpHdr->check = 0;
- udpHdr->check =
- IPPseudoChecksum((UINT32 *)&ipHdr->saddr,
- (UINT32 *)&ipHdr->daddr,
- IPPROTO_UDP, (UINT16)l4Payload);
- udpHdr->check = CalculateChecksumNB(curNb, (UINT16)l4Payload,
- sizeof(EthHdr) + ipHdr->ihl * 4);
- if (checkSum != udpHdr->check) {
- OVS_LOG_TRACE("UDP checksum incorrect.");
- return NDIS_STATUS_INVALID_PACKET;
- }
- }
-
- csumInfo.Receive.UdpChecksumSucceeded = 1;
- NET_BUFFER_LIST_INFO(curNbl, TcpIpChecksumNetBufferListInfo) = csumInfo.Value;
- return NDIS_STATUS_SUCCESS;
-}
/*
*----------------------------------------------------------------------------
@@ -414,7 +372,7 @@ OvsDecapVxlan(POVS_SWITCH_CONTEXT switchContext,
IPHdr *ipHdr;
UDPHdr *udpHdr;
VXLANHdr *vxlanHdr;
- UINT32 tunnelSize = 0, packetLength = 0;
+ UINT32 tunnelSize, packetLength;
PUINT8 bufferStart;
NDIS_STATUS status;
@@ -422,7 +380,7 @@ OvsDecapVxlan(POVS_SWITCH_CONTEXT switchContext,
curNb = NET_BUFFER_LIST_FIRST_NB(curNbl);
packetLength = NET_BUFFER_DATA_LENGTH(curNb);
tunnelSize = OvsGetVxlanTunHdrSize();
- if (packetLength <= tunnelSize) {
+ if (packetLength < tunnelSize) {
return NDIS_STATUS_INVALID_LENGTH;
}
@@ -430,7 +388,7 @@ OvsDecapVxlan(POVS_SWITCH_CONTEXT switchContext,
* Create a copy of the NBL so that we have all the headers in one MDL.
*/
*newNbl = OvsPartialCopyNBL(switchContext, curNbl,
- tunnelSize + OVS_DEFAULT_COPY_SIZE, 0,
+ tunnelSize, 0,
TRUE /*copy NBL info */);
if (*newNbl == NULL) {