diff --git a/SOURCES/openvswitch-3.2.0.patch b/SOURCES/openvswitch-3.2.0.patch index db94bf3..14bf7ac 100644 --- a/SOURCES/openvswitch-3.2.0.patch +++ b/SOURCES/openvswitch-3.2.0.patch @@ -3737,7 +3737,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 747e04014a..3adeb97f95 100644 +index 747e04014a..0b3e6c0ab8 100644 --- a/lib/odp-execute-avx512.c +++ b/lib/odp-execute-avx512.c @@ -357,6 +357,8 @@ avx512_get_delta(__m256i old_header, __m256i new_header) @@ -3759,6 +3759,21 @@ index 747e04014a..3adeb97f95 100644 v_delta = _mm256_hadd_epi32(v_delta, v_zeros); v_delta = _mm256_hadd_epi16(v_delta, v_zeros); +@@ -727,6 +732,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 3eb2c3cb98..5e4f34cf74 100644 --- a/lib/odp-util.c @@ -4033,6 +4048,31 @@ index 9777efea33..688fe56337 100644 #ifdef __cplusplus } #endif +diff --git a/lib/packets.c b/lib/packets.c +index 462b51f92d..15733fdd9c 100644 +--- a/lib/packets.c ++++ b/lib/packets.c +@@ -1301,7 +1301,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 12245b7649..40abed428e 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.2.spec b/SPECS/openvswitch3.2.spec index 6716923..79cb5b8 100644 --- a/SPECS/openvswitch3.2.spec +++ b/SPECS/openvswitch3.2.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.2.0 -Release: 88%{?dist} +Release: 89%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -761,6 +761,12 @@ exit 0 %endif %changelog +* Tue Jun 25 2024 Open vSwitch CI - 3.2.0-89 +- Merging upstream branch-3.2 [RH git: 24fabbc203] + Commit list: + 6133ecb225 odp-execute: Set IPv6 traffic class in AVX implementation. + + * Wed Jun 19 2024 Open vSwitch CI - 3.2.0-88 - Merging upstream branch-3.2 [RH git: 4bb237d3d8] Commit list: