diff --git a/SOURCES/openvswitch-3.3.0.patch b/SOURCES/openvswitch-3.3.0.patch
index be58252..e87b528 100644
--- a/SOURCES/openvswitch-3.3.0.patch
+++ b/SOURCES/openvswitch-3.3.0.patch
@@ -1691,10 +1691,20 @@ index cd7e85a818..e8bbf8d514 100644
          } else {
              unixctl_command_reply_error(conn, error);
 diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c
-index bf91ef462e..80ccade06a 100644
+index bf91ef462e..751bb4b708 100644
 --- a/lib/netdev-linux.c
 +++ b/lib/netdev-linux.c
-@@ -2403,6 +2403,7 @@ static int
+@@ -1062,8 +1062,7 @@ netdev_linux_construct_tap(struct netdev *netdev_)
+ 
+     if (tap_supports_vnet_hdr
+         && ioctl(netdev->tap_fd, TUNSETOFFLOAD, oflags) == 0) {
+-        netdev_->ol_flags |= (NETDEV_TX_OFFLOAD_IPV4_CKSUM
+-                              | NETDEV_TX_OFFLOAD_TCP_CKSUM
++        netdev_->ol_flags |= (NETDEV_TX_OFFLOAD_TCP_CKSUM
+                               | NETDEV_TX_OFFLOAD_UDP_CKSUM);
+ 
+         if (userspace_tso_enabled()) {
+@@ -2403,6 +2402,7 @@ static int
  netdev_linux_read_stringset_info(struct netdev_linux *netdev, uint32_t *len)
  {
      union {
@@ -1702,7 +1712,7 @@ index bf91ef462e..80ccade06a 100644
          struct ethtool_sset_info hdr;
          struct {
              uint64_t pad[2];
-@@ -2440,9 +2441,12 @@ netdev_linux_read_definitions(struct netdev_linux *netdev,
+@@ -2440,9 +2440,12 @@ netdev_linux_read_definitions(struct netdev_linux *netdev,
      int error = 0;
  
      error = netdev_linux_read_stringset_info(netdev, &len);
@@ -1716,7 +1726,23 @@ index bf91ef462e..80ccade06a 100644
      strings = xzalloc(sizeof *strings + len * ETH_GSTRING_LEN);
  
      strings->cmd = ETHTOOL_GSTRINGS;
-@@ -2725,6 +2729,7 @@ netdev_linux_get_speed_locked(struct netdev_linux *netdev,
+@@ -2507,13 +2510,11 @@ netdev_linux_set_ol(struct netdev *netdev_)
+         char *string;
+         uint32_t value;
+     } t_list[] = {
+-        {"tx-checksum-ipv4", NETDEV_TX_OFFLOAD_IPV4_CKSUM |
+-                             NETDEV_TX_OFFLOAD_TCP_CKSUM |
++        {"tx-checksum-ipv4", NETDEV_TX_OFFLOAD_TCP_CKSUM |
+                              NETDEV_TX_OFFLOAD_UDP_CKSUM},
+         {"tx-checksum-ipv6", NETDEV_TX_OFFLOAD_TCP_CKSUM |
+                              NETDEV_TX_OFFLOAD_UDP_CKSUM},
+-        {"tx-checksum-ip-generic", NETDEV_TX_OFFLOAD_IPV4_CKSUM |
+-                                   NETDEV_TX_OFFLOAD_TCP_CKSUM |
++        {"tx-checksum-ip-generic", NETDEV_TX_OFFLOAD_TCP_CKSUM |
+                                    NETDEV_TX_OFFLOAD_UDP_CKSUM},
+         {"tx-checksum-sctp", NETDEV_TX_OFFLOAD_SCTP_CKSUM},
+         {"tx-tcp-segmentation", NETDEV_TX_OFFLOAD_TCP_TSO},
+@@ -2725,6 +2726,7 @@ netdev_linux_get_speed_locked(struct netdev_linux *netdev,
                                uint32_t *current, uint32_t *max)
  {
      if (netdev_linux_netnsid_is_remote(netdev)) {
@@ -1724,7 +1750,7 @@ index bf91ef462e..80ccade06a 100644
          return EOPNOTSUPP;
      }
  
-@@ -2734,6 +2739,8 @@ netdev_linux_get_speed_locked(struct netdev_linux *netdev,
+@@ -2734,6 +2736,8 @@ netdev_linux_get_speed_locked(struct netdev_linux *netdev,
                     ? 0 : netdev->current_speed;
          *max = MIN(UINT32_MAX,
                     netdev_features_to_bps(netdev->supported, 0) / 1000000ULL);
@@ -1733,6 +1759,20 @@ index bf91ef462e..80ccade06a 100644
      }
      return netdev->get_features_error;
  }
+@@ -7199,13 +7203,6 @@ netdev_linux_prepend_vnet_hdr(struct dp_packet *b, int mtu)
+         /* The packet has good L4 checksum. No need to validate again. */
+         vnet->csum_start = vnet->csum_offset = (OVS_FORCE __virtio16) 0;
+         vnet->flags = VIRTIO_NET_HDR_F_DATA_VALID;
+-
+-        /* It is possible that L4 is good but the IPv4 checksum isn't
+-         * complete. For example in the case of UDP encapsulation of an ARP
+-         * packet where the UDP checksum is 0. */
+-        if (dp_packet_hwol_l3_csum_ipv4_ol(b)) {
+-            dp_packet_ip_set_header_csum(b, false);
+-        }
+     } else if (dp_packet_hwol_tx_l4_checksum(b)) {
+         /* The csum calculation is offloaded. */
+         if (dp_packet_hwol_l4_is_tcp(b)) {
 diff --git a/lib/netdev-native-tnl.c b/lib/netdev-native-tnl.c
 index dee9ab344e..0f9f07f44b 100644
 --- a/lib/netdev-native-tnl.c
diff --git a/SPECS/openvswitch3.3.spec b/SPECS/openvswitch3.3.spec
index beb6e48..cc11de2 100644
--- a/SPECS/openvswitch3.3.spec
+++ b/SPECS/openvswitch3.3.spec
@@ -57,7 +57,7 @@ Summary: Open vSwitch
 Group: System Environment/Daemons daemon/database/utilities
 URL: http://www.openvswitch.org/
 Version: 3.3.0
-Release: 42%{?dist}
+Release: 43%{?dist}
 
 # Nearly all of openvswitch is ASL 2.0.  The bugtool is LGPLv2+, and the
 # lib/sflow*.[ch] files are SISSL
@@ -769,6 +769,12 @@ exit 0
 %endif
 
 %changelog
+* Wed Aug 14 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-43
+- Merging upstream branch-3.3 [RH git: 62ef744448]
+    Commit list:
+    9fac5b970e netdev-linux: Do not offload IP checksum.
+
+
 * Mon Aug 12 2024 Open vSwitch CI <ovs-ci@redhat.com> - 3.3.0-42
 - Merging upstream branch-3.3 [RH git: 7188a23809]
     Commit list: