diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index 1d46d02..91d23d1 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -1238,7 +1238,7 @@ index 92b52f6712..0dc2a7dbca 100644 OVS_CHECK_PRAGMA_MESSAGE AC_SUBST([OVS_CFLAGS]) diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c -index 5c9b5c3a0c..5557478be9 100644 +index 5c9b5c3a0c..b49243006f 100644 --- a/datapath-windows/ovsext/Actions.c +++ b/datapath-windows/ovsext/Actions.c @@ -1112,9 +1112,9 @@ OvsPopFieldInPacketBuf(OvsForwardingContext *ovsFwdCtx, @@ -1450,7 +1450,30 @@ index 5c9b5c3a0c..5557478be9 100644 NlAttrGetUnspec(a, sizeof(struct ovs_key_tcp))); break; -@@ -2053,6 +2093,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, +@@ -1763,9 +1803,11 @@ OvsExecuteRecirc(OvsForwardingContext *ovsFwdCtx, + } + + if (newNbl) { +- deferredAction = OvsAddDeferredActions(newNbl, key, NULL); ++ deferredAction = OvsAddDeferredActions(newNbl, key, &(ovsFwdCtx->layers), ++ NULL); + } else { +- deferredAction = OvsAddDeferredActions(ovsFwdCtx->curNbl, key, NULL); ++ deferredAction = OvsAddDeferredActions(ovsFwdCtx->curNbl, key, ++ &(ovsFwdCtx->layers), NULL); + } + + if (deferredAction) { +@@ -1917,7 +1959,7 @@ OvsExecuteSampleAction(OvsForwardingContext *ovsFwdCtx, + return STATUS_SUCCESS; + } + +- if (!OvsAddDeferredActions(newNbl, key, a)) { ++ if (!OvsAddDeferredActions(newNbl, key, &(ovsFwdCtx->layers), a)) { + OVS_LOG_INFO( + "Deferred actions limit reached, dropping sample action."); + OvsCompleteNBL(ovsFwdCtx->switchContext, newNbl, TRUE); +@@ -2053,6 +2095,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext, */ status = OvsPopVlanInPktBuf(&ovsFwdCtx); if (status != NDIS_STATUS_SUCCESS) { @@ -1458,6 +1481,15 @@ index 5c9b5c3a0c..5557478be9 100644 dropReason = L"OVS-pop vlan action failed"; goto dropit; } +@@ -2302,7 +2345,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext, + + if (status == STATUS_SUCCESS) { + status = OvsProcessDeferredActions(switchContext, completionList, +- portNo, sendFlags, layers); ++ portNo, sendFlags, NULL); + } + + return status; diff --git a/datapath-windows/ovsext/Actions.h b/datapath-windows/ovsext/Actions.h index fd050d5dd8..bc12e1166d 100644 --- a/datapath-windows/ovsext/Actions.h @@ -1557,6 +1589,97 @@ index bc6580d708..b0932186af 100644 } CT_UPDATE_RES; /* Metadata mark for masked write to conntrack mark */ +diff --git a/datapath-windows/ovsext/Recirc.c b/datapath-windows/ovsext/Recirc.c +index 2febf060dd..a32b75352b 100644 +--- a/datapath-windows/ovsext/Recirc.c ++++ b/datapath-windows/ovsext/Recirc.c +@@ -277,16 +277,23 @@ OvsDeferredActionsQueuePush(POVS_DEFERRED_ACTION_QUEUE queue) + POVS_DEFERRED_ACTION + OvsAddDeferredActions(PNET_BUFFER_LIST nbl, + OvsFlowKey *key, ++ POVS_PACKET_HDR_INFO layers, + const PNL_ATTR actions) + { + POVS_DEFERRED_ACTION_QUEUE queue = OvsDeferredActionsQueueGet(); + POVS_DEFERRED_ACTION deferredAction = NULL; ++ OVS_PACKET_HDR_INFO layersInit = { 0 }; + + deferredAction = OvsDeferredActionsQueuePush(queue); + if (deferredAction) { + deferredAction->nbl = nbl; + deferredAction->actions = actions; + deferredAction->key = *key; ++ if (layers) { ++ deferredAction->layers = *layers; ++ } else { ++ deferredAction->layers = layersInit; ++ } + } + + return deferredAction; +@@ -309,9 +316,16 @@ OvsProcessDeferredActions(POVS_SWITCH_CONTEXT switchContext, + NDIS_STATUS status = NDIS_STATUS_SUCCESS; + POVS_DEFERRED_ACTION_QUEUE queue = OvsDeferredActionsQueueGet(); + POVS_DEFERRED_ACTION deferredAction = NULL; ++ POVS_PACKET_HDR_INFO layersDeferred = NULL; + + /* Process all deferred actions. */ + while ((deferredAction = OvsDeferredActionsQueuePop(queue)) != NULL) { ++ if (layers) { ++ layersDeferred = layers; ++ } else { ++ layersDeferred = &(deferredAction->layers); ++ } ++ + if (deferredAction->actions) { + status = OvsDoExecuteActions(switchContext, + completionList, +@@ -319,7 +333,7 @@ OvsProcessDeferredActions(POVS_SWITCH_CONTEXT switchContext, + portNo, + sendFlags, + &deferredAction->key, NULL, +- layers, deferredAction->actions, ++ layersDeferred, deferredAction->actions, + NlAttrGetSize(deferredAction->actions)); + } else { + status = OvsDoRecirc(switchContext, +@@ -327,7 +341,7 @@ OvsProcessDeferredActions(POVS_SWITCH_CONTEXT switchContext, + deferredAction->nbl, + &deferredAction->key, + portNo, +- layers); ++ layersDeferred); + } + } + +diff --git a/datapath-windows/ovsext/Recirc.h b/datapath-windows/ovsext/Recirc.h +index 2b314ce274..74130a4600 100644 +--- a/datapath-windows/ovsext/Recirc.h ++++ b/datapath-windows/ovsext/Recirc.h +@@ -18,6 +18,7 @@ + #define __RECIRC_H_ 1 + + #include "Actions.h" ++#include "NetProto.h" + + #define DEFERRED_ACTION_QUEUE_SIZE 10 + #define DEFERRED_ACTION_EXEC_LEVEL 4 +@@ -26,6 +27,7 @@ typedef struct _OVS_DEFERRED_ACTION { + PNET_BUFFER_LIST nbl; + PNL_ATTR actions; + OvsFlowKey key; ++ OVS_PACKET_HDR_INFO layers; + } OVS_DEFERRED_ACTION, *POVS_DEFERRED_ACTION; + + /* +@@ -52,6 +54,7 @@ OvsProcessDeferredActions(POVS_SWITCH_CONTEXT switchContext, + POVS_DEFERRED_ACTION + OvsAddDeferredActions(PNET_BUFFER_LIST packet, + OvsFlowKey *key, ++ POVS_PACKET_HDR_INFO layers, + const PNL_ATTR actions); + + /* diff --git a/datapath-windows/ovsext/ovsext.vcxproj b/datapath-windows/ovsext/ovsext.vcxproj index d50a126b43..18f884f41b 100644 --- a/datapath-windows/ovsext/ovsext.vcxproj diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index 3d2f647..2ec5042 100644 --- a/SPECS/openvswitch2.13.spec +++ b/SPECS/openvswitch2.13.spec @@ -59,7 +59,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.13.0 -Release: 131%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 132%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -712,6 +712,12 @@ exit 0 %endif %changelog +* Tue Oct 19 2021 Open vSwitch CI - 2.13.0-132 +- Merging upstream branch-2.13 [RH git: 60a72ee3f6] + Commit list: + 5c33e4db80 datapath-windows: add layers when adding the deferred actions + + * Thu Oct 14 2021 Open vSwitch CI - 2.13.0-131 - Merging upstream branch-2.13 [RH git: 31c65d3e94] Commit list: