diff options
author | Anand Kumar <kumaranand@vmware.com> | 2019-05-17 14:16:39 -0700 |
---|---|---|
committer | Alin Gabriel Serdean <aserdean@ovn.org> | 2019-05-20 13:06:52 +0300 |
commit | 672c8c696d0bed860817f340361b3d4abb91611c (patch) | |
tree | 3cdf4bf015f3c4e6957e828d2ed2d4d24babf966 /datapath-windows | |
parent | f5ff25f5d7173836ed5ae62f7e5f74c48c55c163 (diff) | |
download | openvswitch-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.c | 15 |
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); |