diff --git a/SOURCES/openvswitch-2.16.0.patch b/SOURCES/openvswitch-2.16.0.patch
index f74d3a6..81f75ad 100644
--- a/SOURCES/openvswitch-2.16.0.patch
+++ b/SOURCES/openvswitch-2.16.0.patch
@@ -194,7 +194,7 @@ index 16b32be965..92817b62e1 100644
  AC_CONFIG_MACRO_DIR([m4])
  AC_CONFIG_AUX_DIR([build-aux])
 diff --git a/datapath-windows/ovsext/Actions.c b/datapath-windows/ovsext/Actions.c
-index e130c2f966..70ac0a0e56 100644
+index e130c2f966..218e7db814 100644
 --- a/datapath-windows/ovsext/Actions.c
 +++ b/datapath-windows/ovsext/Actions.c
 @@ -1112,9 +1112,9 @@ OvsPopFieldInPacketBuf(OvsForwardingContext *ovsFwdCtx,
@@ -293,7 +293,23 @@ index e130c2f966..70ac0a0e56 100644
              /* Recompute total checksum. */
              *checkField = ChecksumUpdate16(*checkField, *portField,
                                             newPort);
-@@ -1792,9 +1806,11 @@ OvsExecuteRecirc(OvsForwardingContext *ovsFwdCtx,
+@@ -1698,6 +1712,15 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
+         ipHdr->ttl = ipAttr->ipv4_ttl;
+         key->ipKey.nwTtl = ipAttr->ipv4_ttl;
+     }
++    if (ipHdr->dscp != (ipAttr->ipv4_tos & 0xfc)) {
++        /* ECN + DSCP */
++        UINT8 newTos = (ipHdr->tos & 0x3) | (ipAttr->ipv4_tos & 0xfc);
++        if (ipHdr->check != 0) {
++            ipHdr->check = ChecksumUpdate16(ipHdr->check, ipHdr->tos, newTos);
++        }
++        ipHdr->tos = newTos;
++        key->ipKey.nwTos = newTos;
++    }
+ 
+     return NDIS_STATUS_SUCCESS;
+ }
+@@ -1792,9 +1815,11 @@ OvsExecuteRecirc(OvsForwardingContext *ovsFwdCtx,
      }
  
      if (newNbl) {
@@ -307,7 +323,7 @@ index e130c2f966..70ac0a0e56 100644
      }
  
      if (deferredAction) {
-@@ -1964,7 +1980,7 @@ OvsExecuteSampleAction(OvsForwardingContext *ovsFwdCtx,
+@@ -1964,7 +1989,7 @@ OvsExecuteSampleAction(OvsForwardingContext *ovsFwdCtx,
          return STATUS_SUCCESS;
      }
  
@@ -316,7 +332,7 @@ index e130c2f966..70ac0a0e56 100644
          OVS_LOG_INFO(
              "Deferred actions limit reached, dropping sample action.");
          OvsCompleteNBL(ovsFwdCtx->switchContext, newNbl, TRUE);
-@@ -2100,6 +2116,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext,
+@@ -2100,6 +2125,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext,
                   */
                  status = OvsPopVlanInPktBuf(&ovsFwdCtx);
                  if (status != NDIS_STATUS_SUCCESS) {
@@ -324,7 +340,7 @@ index e130c2f966..70ac0a0e56 100644
                      dropReason = L"OVS-pop vlan action failed";
                      goto dropit;
                  }
-@@ -2349,7 +2366,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext,
+@@ -2349,7 +2375,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext,
  
      if (status == STATUS_SUCCESS) {
          status = OvsProcessDeferredActions(switchContext, completionList,
diff --git a/SPECS/openvswitch2.16.spec b/SPECS/openvswitch2.16.spec
index 9fc5258..cc39f87 100644
--- a/SPECS/openvswitch2.16.spec
+++ b/SPECS/openvswitch2.16.spec
@@ -57,7 +57,7 @@ Summary: Open vSwitch
 Group: System Environment/Daemons daemon/database/utilities
 URL: http://www.openvswitch.org/
 Version: 2.16.0
-Release: 53%{?dist}
+Release: 54%{?dist}
 
 # Nearly all of openvswitch is ASL 2.0.  The bugtool is LGPLv2+, and the
 # lib/sflow*.[ch] files are SISSL
@@ -699,6 +699,12 @@ exit 0
 %endif
 
 %changelog
+* Thu Feb 24 2022 Open vSwitch CI <ovs-ci@redhat.com> - 2.16.0-54
+- Merging upstream branch-2.16 [RH git: ac5da61d03]
+    Commit list:
+    dee52795e6 datapath-windows: Fix NXM_OF_IP_TOS issue
+
+
 * Wed Feb 16 2022 Open vSwitch CI <ovs-ci@redhat.com> - 2.16.0-53
 - Merging upstream branch-2.16 [RH git: b2df459e49]
     Commit list: