diff --git a/SOURCES/openvswitch-3.1.0.patch b/SOURCES/openvswitch-3.1.0.patch index 4ea4d9a..18b6c26 100644 --- a/SOURCES/openvswitch-3.1.0.patch +++ b/SOURCES/openvswitch-3.1.0.patch @@ -5791,7 +5791,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 c28461ec1a..0bf8cdf259 100644 +index c28461ec1a..d367130fdb 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) @@ -5813,6 +5813,21 @@ index c28461ec1a..0bf8cdf259 100644 v_delta = _mm256_hadd_epi32(v_delta, v_zeros); v_delta = _mm256_hadd_epi16(v_delta, v_zeros); +@@ -699,6 +704,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 5fc312f8c0..fa353eab5c 100644 --- a/lib/odp-util.c @@ -6115,6 +6130,31 @@ index b9eb0928df..d2455fc977 100644 #ifdef __cplusplus } #endif +diff --git a/lib/packets.c b/lib/packets.c +index 06f516cb1a..5640a2485c 100644 +--- a/lib/packets.c ++++ b/lib/packets.c +@@ -1282,7 +1282,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 8626aac8d5..1fcc7b0920 100644 +--- a/lib/packets.h ++++ b/lib/packets.h +@@ -1598,6 +1598,7 @@ void packet_set_ipv6_addr(struct dp_packet *packet, uint8_t proto, + ovs_16aligned_be32 addr[4], + const struct in6_addr *new_addr, + bool recalculate_csum); ++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 ac82cf262f..6df7237e10 100644 --- a/lib/route-table.c diff --git a/SPECS/openvswitch3.1.spec b/SPECS/openvswitch3.1.spec index f5d8c13..f106afc 100644 --- a/SPECS/openvswitch3.1.spec +++ b/SPECS/openvswitch3.1.spec @@ -63,7 +63,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.1.0 -Release: 127%{?dist} +Release: 128%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -757,6 +757,12 @@ exit 0 %endif %changelog +* Tue Jun 25 2024 Open vSwitch CI - 3.1.0-128 +- Merging upstream branch-3.1 [RH git: 83707bfe66] + Commit list: + 9e59834e6b odp-execute: Set IPv6 traffic class in AVX implementation. + + * Wed Jun 19 2024 Open vSwitch CI - 3.1.0-127 - Merging upstream branch-3.1 [RH git: 1b73710c1b] Commit list: