diff --git a/SOURCES/openvswitch-3.3.0.patch b/SOURCES/openvswitch-3.3.0.patch index 0d7710d..7da4a8a 100644 --- a/SOURCES/openvswitch-3.3.0.patch +++ b/SOURCES/openvswitch-3.3.0.patch @@ -1507,7 +1507,7 @@ index 80da20d9f0..5cb1fc89ae 100644 if (retval < 0) { retval = -retval; diff --git a/lib/odp-execute-avx512.c b/lib/odp-execute-avx512.c -index 50c48bfd47..a74a85dc1a 100644 +index 50c48bfd47..09eb685cba 100644 --- a/lib/odp-execute-avx512.c +++ b/lib/odp-execute-avx512.c @@ -366,6 +366,8 @@ avx512_get_delta(__m256i old_header, __m256i new_header) @@ -1519,6 +1519,15 @@ index 50c48bfd47..a74a85dc1a 100644 v_delta = _mm256_hadd_epi32(v_delta, v_zeros); v_delta = _mm256_hadd_epi16(v_delta, v_zeros); +@@ -471,7 +473,7 @@ action_avx512_ipv4_set_addrs(struct dp_packet_batch *batch, + * (v_pkt_masked). */ + __m256i v_new_hdr = _mm256_or_si256(v_key_shuf, v_pkt_masked); + +- if (dp_packet_hwol_tx_ip_csum(packet)) { ++ if (dp_packet_hwol_l3_ipv4(packet)) { + dp_packet_ol_reset_ip_csum_good(packet); + } else { + ovs_be16 old_csum = ~nh->ip_csum; @@ -575,6 +577,9 @@ avx512_ipv6_sum_header(__m512i ip6_header) 0xF, 0xF, 0xF, 0xF); @@ -1529,6 +1538,21 @@ index 50c48bfd47..a74a85dc1a 100644 v_delta = _mm256_hadd_epi32(v_delta, v_zeros); v_delta = _mm256_hadd_epi16(v_delta, v_zeros); +@@ -736,6 +741,14 @@ action_avx512_set_ipv6(struct dp_packet_batch *batch, const struct nlattr *a) + } + /* Write back the modified IPv6 addresses. */ + _mm512_mask_storeu_epi64((void *) nh, 0x1F, v_new_hdr); ++ ++ /* Scalar method for setting IPv6 tclass field. */ ++ if (key->ipv6_tclass) { ++ uint8_t old_tc = ntohl(get_16aligned_be32(&nh->ip6_flow)) >> 20; ++ uint8_t key_tc = key->ipv6_tclass | (old_tc & ~mask->ipv6_tclass); ++ ++ packet_set_ipv6_tc(&nh->ip6_flow, key_tc); ++ } + } + } + #endif /* HAVE_AVX512VBMI */ diff --git a/lib/odp-util.c b/lib/odp-util.c index 9306c9b4d4..5e4f34cf74 100644 --- a/lib/odp-util.c @@ -1671,6 +1695,31 @@ index eb4ff85d9e..d7dc7e55f3 100644 void ovs_router_flush(void); void ovs_router_disable_system_routing_table(void); +diff --git a/lib/packets.c b/lib/packets.c +index 5803d26f4a..edac30b77b 100644 +--- a/lib/packets.c ++++ b/lib/packets.c +@@ -1299,7 +1299,7 @@ packet_set_ipv6_flow_label(ovs_16aligned_be32 *flow_label, ovs_be32 flow_key) + put_16aligned_be32(flow_label, new_label); + } + +-static void ++void + packet_set_ipv6_tc(ovs_16aligned_be32 *flow_label, uint8_t tc) + { + ovs_be32 old_label = get_16aligned_be32(flow_label); +diff --git a/lib/packets.h b/lib/packets.h +index 8b6994809f..a102f81634 100644 +--- a/lib/packets.h ++++ b/lib/packets.h +@@ -1635,6 +1635,7 @@ void packet_set_ipv6_addr(struct dp_packet *packet, uint8_t proto, + bool recalculate_csum); + void packet_set_ipv6_flow_label(ovs_16aligned_be32 *flow_label, + ovs_be32 flow_key); ++void packet_set_ipv6_tc(ovs_16aligned_be32 *flow_label, uint8_t tc); + void packet_set_tcp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst); + void packet_set_udp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst); + void packet_set_sctp_port(struct dp_packet *, ovs_be16 src, ovs_be16 dst); diff --git a/lib/route-table.c b/lib/route-table.c index 9927dcc185..f1fe32714e 100644 --- a/lib/route-table.c diff --git a/SPECS/openvswitch3.3.spec b/SPECS/openvswitch3.3.spec index 0195bab..b793844 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: 32%{?dist} +Release: 33%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -767,6 +767,13 @@ exit 0 %endif %changelog +* Tue Jun 25 2024 Open vSwitch CI - 3.3.0-33 +- Merging upstream branch-3.3 [RH git: 3ecc0a5b13] + Commit list: + 2393305d96 odp-execute: Check IPv4 checksum offload flag in AVX. + 0aec0c2cc0 odp-execute: Set IPv6 traffic class in AVX implementation. + + * Fri Jun 21 2024 Open vSwitch CI - 3.3.0-32 - Merging upstream branch-3.3 [RH git: ecd756e0cf] Commit list: