diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch
index 894ff5e..13d593b 100644
--- a/SOURCES/openvswitch-2.13.0.patch
+++ b/SOURCES/openvswitch-2.13.0.patch
@@ -1241,7 +1241,7 @@ index 92b52f6712..7fe5e83e84 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..b49243006f 100644
+index 5c9b5c3a0c..b3da3b19bc 100644
 --- a/datapath-windows/ovsext/Actions.c
 +++ b/datapath-windows/ovsext/Actions.c
 @@ -1112,9 +1112,9 @@ OvsPopFieldInPacketBuf(OvsForwardingContext *ovsFwdCtx,
@@ -1356,7 +1356,32 @@ index 5c9b5c3a0c..b49243006f 100644
      }
  
      return NDIS_STATUS_SUCCESS;
-@@ -1539,9 +1561,21 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+@@ -1505,6 +1527,7 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+ 
+     csumInfo.Value = NET_BUFFER_LIST_INFO(ovsFwdCtx->curNbl,
+                                           TcpIpChecksumNetBufferListInfo);
++
+     /*
+      * Adjust the IP header inline as dictated by the action, and also update
+      * the IP and the TCP checksum for the data modified.
+@@ -1513,6 +1536,7 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+      * ChecksumUpdate32(). Ignoring this for now, since for the most common
+      * case, we only update the TTL.
+      */
++     /*Only tx direction the checksum value will be reset to be PseudoChecksum*/
+ 
+     if (isSource) {
+         addrField = &ipHdr->saddr;
+@@ -1529,7 +1553,7 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+                         ((BOOLEAN)csumInfo.Receive.UdpChecksumSucceeded ||
+                          (BOOLEAN)csumInfo.Receive.UdpChecksumFailed);
+         }
+-        if (l4Offload) {
++        if (isTx && l4Offload) {
+             *checkField = IPPseudoChecksum(&newAddr, &ipHdr->daddr,
+                 tcpHdr ? IPPROTO_TCP : IPPROTO_UDP,
+                 ntohs(ipHdr->tot_len) - ipHdr->ihl * 4);
+@@ -1539,15 +1563,27 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
          if (tcpHdr) {
              portField = &tcpHdr->dest;
              checkField = &tcpHdr->check;
@@ -1371,14 +1396,35 @@ index 5c9b5c3a0c..b49243006f 100644
 +                         (BOOLEAN)csumInfo.Receive.UdpChecksumFailed);
 +        }
 +
-+       if (l4Offload) {
++       if (isTx && l4Offload) {
 +            *checkField = IPPseudoChecksum(&ipHdr->saddr, &newAddr,
 +                tcpHdr ? IPPROTO_TCP : IPPROTO_UDP,
 +                ntohs(ipHdr->tot_len) - ipHdr->ihl * 4);
          }
      }
  
-@@ -1579,6 +1613,7 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+     if (*addrField != newAddr) {
+         UINT32 oldAddr = *addrField;
+-        if (checkField && *checkField != 0 && !l4Offload) {
++        if ((checkField && *checkField != 0) && (!l4Offload || !isTx)) {
+             /* Recompute total checksum. */
+             *checkField = ChecksumUpdate32(*checkField, oldAddr,
+                                             newAddr);
+@@ -1556,11 +1592,12 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
+             ipHdr->check = ChecksumUpdate32(ipHdr->check, oldAddr,
+                                             newAddr);
+         }
++
+         *addrField = newAddr;
+     }
+ 
+     if (portField && *portField != newPort) {
+-        if (checkField && !l4Offload) {
++        if ((checkField) && (!l4Offload || !isTx)) {
+             /* Recompute total checksum. */
+             *checkField = ChecksumUpdate16(*checkField, *portField,
+                                            newPort);
+@@ -1579,6 +1616,7 @@ OvsUpdateAddressAndPort(OvsForwardingContext *ovsFwdCtx,
   */
  NDIS_STATUS
  OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
@@ -1386,7 +1432,7 @@ index 5c9b5c3a0c..b49243006f 100644
                      const struct ovs_key_ipv4 *ipAttr)
  {
      PUINT8 bufferStart;
-@@ -1632,6 +1667,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
+@@ -1632,6 +1670,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
                                              ipAttr->ipv4_src);
          }
          ipHdr->saddr = ipAttr->ipv4_src;
@@ -1394,7 +1440,7 @@ index 5c9b5c3a0c..b49243006f 100644
      }
      if (ipHdr->daddr != ipAttr->ipv4_dst) {
          if (tcpHdr) {
-@@ -1647,6 +1683,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
+@@ -1647,6 +1686,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
                                              ipAttr->ipv4_dst);
          }
          ipHdr->daddr = ipAttr->ipv4_dst;
@@ -1402,7 +1448,7 @@ index 5c9b5c3a0c..b49243006f 100644
      }
      if (ipHdr->protocol != ipAttr->ipv4_proto) {
          UINT16 oldProto = (ipHdr->protocol << 16) & 0xff00;
-@@ -1661,6 +1698,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
+@@ -1661,6 +1701,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
              ipHdr->check = ChecksumUpdate16(ipHdr->check, oldProto, newProto);
          }
          ipHdr->protocol = ipAttr->ipv4_proto;
@@ -1410,7 +1456,7 @@ index 5c9b5c3a0c..b49243006f 100644
      }
      if (ipHdr->ttl != ipAttr->ipv4_ttl) {
          UINT16 oldTtl = (ipHdr->ttl) & 0xff;
-@@ -1669,6 +1707,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
+@@ -1669,6 +1710,7 @@ OvsUpdateIPv4Header(OvsForwardingContext *ovsFwdCtx,
              ipHdr->check = ChecksumUpdate16(ipHdr->check, oldTtl, newTtl);
          }
          ipHdr->ttl = ipAttr->ipv4_ttl;
@@ -1418,7 +1464,7 @@ index 5c9b5c3a0c..b49243006f 100644
      }
  
      return NDIS_STATUS_SUCCESS;
-@@ -1691,12 +1730,12 @@ OvsExecuteSetAction(OvsForwardingContext *ovsFwdCtx,
+@@ -1691,12 +1733,12 @@ OvsExecuteSetAction(OvsForwardingContext *ovsFwdCtx,
  
      switch (type) {
      case OVS_KEY_ATTR_ETHERNET:
@@ -1433,7 +1479,7 @@ index 5c9b5c3a0c..b49243006f 100644
              NlAttrGetUnspec(a, sizeof(struct ovs_key_ipv4)));
          break;
  
-@@ -1709,16 +1748,17 @@ OvsExecuteSetAction(OvsForwardingContext *ovsFwdCtx,
+@@ -1709,16 +1751,17 @@ OvsExecuteSetAction(OvsForwardingContext *ovsFwdCtx,
          status = SUCCEEDED(convertStatus) ? NDIS_STATUS_SUCCESS : NDIS_STATUS_FAILURE;
          ASSERT(status == NDIS_STATUS_SUCCESS);
          RtlCopyMemory(&ovsFwdCtx->tunKey, &tunKey, sizeof ovsFwdCtx->tunKey);
@@ -1453,7 +1499,7 @@ index 5c9b5c3a0c..b49243006f 100644
              NlAttrGetUnspec(a, sizeof(struct ovs_key_tcp)));
          break;
  
-@@ -1763,9 +1803,11 @@ OvsExecuteRecirc(OvsForwardingContext *ovsFwdCtx,
+@@ -1763,9 +1806,11 @@ OvsExecuteRecirc(OvsForwardingContext *ovsFwdCtx,
      }
  
      if (newNbl) {
@@ -1467,7 +1513,7 @@ index 5c9b5c3a0c..b49243006f 100644
      }
  
      if (deferredAction) {
-@@ -1917,7 +1959,7 @@ OvsExecuteSampleAction(OvsForwardingContext *ovsFwdCtx,
+@@ -1917,7 +1962,7 @@ OvsExecuteSampleAction(OvsForwardingContext *ovsFwdCtx,
          return STATUS_SUCCESS;
      }
  
@@ -1476,7 +1522,7 @@ index 5c9b5c3a0c..b49243006f 100644
          OVS_LOG_INFO(
              "Deferred actions limit reached, dropping sample action.");
          OvsCompleteNBL(ovsFwdCtx->switchContext, newNbl, TRUE);
-@@ -2053,6 +2095,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext,
+@@ -2053,6 +2098,7 @@ OvsDoExecuteActions(POVS_SWITCH_CONTEXT switchContext,
                   */
                  status = OvsPopVlanInPktBuf(&ovsFwdCtx);
                  if (status != NDIS_STATUS_SUCCESS) {
@@ -1484,7 +1530,7 @@ index 5c9b5c3a0c..b49243006f 100644
                      dropReason = L"OVS-pop vlan action failed";
                      goto dropit;
                  }
-@@ -2302,7 +2345,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext,
+@@ -2302,7 +2348,7 @@ OvsActionsExecute(POVS_SWITCH_CONTEXT switchContext,
  
      if (status == STATUS_SUCCESS) {
          status = OvsProcessDeferredActions(switchContext, completionList,
diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec
index 61935a2..c4fcfce 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: 136%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist}
+Release: 137%{?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
+* Thu Oct 28 2021 Open vSwitch CI <ovs-ci@redhat.com> - 2.13.0-137
+- Merging upstream branch-2.13 [RH git: f86ccc67c2]
+    Commit list:
+    da5b115580 datapath-windows:Reset PseudoChecksum value only for TX direction offload case
+
+
 * Wed Oct 27 2021 Open vSwitch CI <ovs-ci@redhat.com> - 2.13.0-136
 - Merging upstream branch-2.13 [RH git: 25cc09c60a]
     Commit list: