summaryrefslogtreecommitdiff
path: root/datapath-windows
diff options
context:
space:
mode:
authorAnand Kumar <kumaranand@vmware.com>2019-05-17 14:16:39 -0700
committerAlin Gabriel Serdean <aserdean@ovn.org>2019-05-20 13:06:52 +0300
commit672c8c696d0bed860817f340361b3d4abb91611c (patch)
tree3cdf4bf015f3c4e6957e828d2ed2d4d24babf966 /datapath-windows
parentf5ff25f5d7173836ed5ae62f7e5f74c48c55c163 (diff)
downloadopenvswitch-672c8c696d0bed860817f340361b3d4abb91611c.tar.gz
datapath-windows: Copy mru information when cloning a nbl.
When a nbl is cloned, mru value stored in the original nbl context is lost, which skips refragemting the cloned nbls. This patch fixes it. Signed-off-by: Anand Kumar <kumaranand@vmware.com> Signed-off-by: Alin Gabriel Serdean <aserdean@ovn.org>
Diffstat (limited to 'datapath-windows')
-rw-r--r--datapath-windows/ovsext/BufferMgmt.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/datapath-windows/ovsext/BufferMgmt.c b/datapath-windows/ovsext/BufferMgmt.c
index 6627acf25..acf3c13a2 100644
--- a/datapath-windows/ovsext/BufferMgmt.c
+++ b/datapath-windows/ovsext/BufferMgmt.c
@@ -260,14 +260,15 @@ static VOID
OvsInitNBLContext(POVS_BUFFER_CONTEXT ctx,
UINT16 flags,
UINT32 origDataLength,
- UINT32 srcPortNo)
+ UINT32 srcPortNo,
+ UINT16 mru)
{
ctx->magic = OVS_CTX_MAGIC;
ctx->refCount = 1;
ctx->flags = flags;
ctx->srcPortNo = srcPortNo;
ctx->origDataLength = origDataLength;
- ctx->mru = 0;
+ ctx->mru = mru;
ctx->pendingSend = 0;
}
@@ -434,7 +435,7 @@ OvsAllocateFixSizeNBL(PVOID ovsContext,
OvsInitNBLContext(ctx, OVS_BUFFER_FROM_FIX_SIZE_POOL |
OVS_BUFFER_PRIVATE_FORWARD_CONTEXT, size,
- OVS_DPPORT_NUMBER_INVALID);
+ OVS_DPPORT_NUMBER_INVALID, 0);
line = __LINE__;
allocate_done:
OVS_LOG_LOUD("Allocate Fix NBL: %p, line: %d", nbl, line);
@@ -547,7 +548,7 @@ OvsAllocateVariableSizeNBL(PVOID ovsContext,
OvsInitNBLContext(ctx, OVS_BUFFER_PRIVATE_MDL | OVS_BUFFER_PRIVATE_DATA |
OVS_BUFFER_PRIVATE_FORWARD_CONTEXT |
OVS_BUFFER_FROM_ZERO_SIZE_POOL,
- size, OVS_DPPORT_NUMBER_INVALID);
+ size, OVS_DPPORT_NUMBER_INVALID, 0);
OVS_LOG_LOUD("Allocate variable size NBL: %p", nbl);
return nbl;
@@ -600,7 +601,7 @@ OvsInitExternalNBLContext(PVOID ovsContext,
* complete.
*/
OvsInitNBLContext(ctx, flags, NET_BUFFER_DATA_LENGTH(nb),
- OVS_DPPORT_NUMBER_INVALID);
+ OVS_DPPORT_NUMBER_INVALID, 0);
return ctx;
}
@@ -817,7 +818,7 @@ OvsPartialCopyNBL(PVOID ovsContext,
srcNb = NET_BUFFER_LIST_FIRST_NB(nbl);
ASSERT(srcNb);
OvsInitNBLContext(dstCtx, flags, NET_BUFFER_DATA_LENGTH(srcNb) - copySize,
- OVS_DPPORT_NUMBER_INVALID);
+ OVS_DPPORT_NUMBER_INVALID, srcCtx->mru);
InterlockedIncrement((LONG volatile *)&srcCtx->refCount);
@@ -1074,7 +1075,7 @@ OvsFullCopyNBL(PVOID ovsContext,
OVS_BUFFER_PRIVATE_FORWARD_CONTEXT;
OvsInitNBLContext(dstCtx, flags, NET_BUFFER_DATA_LENGTH(firstNb),
- OVS_DPPORT_NUMBER_INVALID);
+ OVS_DPPORT_NUMBER_INVALID, srcCtx->mru);
#ifdef DBG
OvsDumpNetBufferList(nbl);