From a274c2c390498cb78d49d5f08e3412081bb2ee5c Mon Sep 17 00:00:00 2001 From: Alin Serdean Date: Fri, 11 Dec 2015 22:29:38 +0000 Subject: [PATCH] datapath-windows: Add LSOv2 support for VXLAN This patch adds LSO version 2 support for the windows datapath. (https://msdn.microsoft.com/en-us/library/windows/hardware/ff568840%28v=vs.85%29.aspx) Tested using psping and iperf3. Signed-off-by: Alin Gabriel Serdean Acked-by: Sairam Venugopal Signed-off-by: Ben Pfaff --- datapath-windows/ovsext/Vxlan.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/datapath-windows/ovsext/Vxlan.c b/datapath-windows/ovsext/Vxlan.c index c0611dad5..2516ece35 100644 --- a/datapath-windows/ovsext/Vxlan.c +++ b/datapath-windows/ovsext/Vxlan.c @@ -190,6 +190,7 @@ OvsDoEncapVxlan(POVS_VPORT_ENTRY vport, POVS_VXLAN_VPORT vportVxlan; UINT32 headRoom = OvsGetVxlanTunHdrSize(); UINT32 packetLength; + ULONG mss = 0; /* * XXX: the assumption currently is that the NBL is owned by OVS, and @@ -204,12 +205,23 @@ OvsDoEncapVxlan(POVS_VPORT_ENTRY vport, tsoInfo.Value = NET_BUFFER_LIST_INFO(curNbl, TcpLargeSendNetBufferListInfo); - OVS_LOG_TRACE("MSS %u packet len %u", tsoInfo.LsoV1Transmit.MSS, + switch (tsoInfo.Transmit.Type) { + case NDIS_TCP_LARGE_SEND_OFFLOAD_V1_TYPE: + mss = tsoInfo.LsoV1Transmit.MSS; + break; + case NDIS_TCP_LARGE_SEND_OFFLOAD_V2_TYPE: + mss = tsoInfo.LsoV2Transmit.MSS; + break; + default: + OVS_LOG_ERROR("Unknown LSO transmit type:%d", + tsoInfo.Transmit.Type); + } + OVS_LOG_TRACE("MSS %u packet len %u", mss, packetLength); - if (tsoInfo.LsoV1Transmit.MSS) { + if (mss) { OVS_LOG_TRACE("l4Offset %d", layers->l4Offset); *newNbl = OvsTcpSegmentNBL(switchContext, curNbl, layers, - tsoInfo.LsoV1Transmit.MSS, headRoom); + mss, headRoom); if (*newNbl == NULL) { OVS_LOG_ERROR("Unable to segment NBL"); return NDIS_STATUS_FAILURE; -- 2.20.1