From 250e1d33724ebe0badf69a5a9390468fb8f401d1 Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Jun 25 2024 15:36:19 +0000 Subject: Import openvswitch3.1-3.1.0-120 from Fast DataPath --- diff --git a/SOURCES/openvswitch-3.1.0.patch b/SOURCES/openvswitch-3.1.0.patch index 6c02159..e385346 100644 --- a/SOURCES/openvswitch-3.1.0.patch +++ b/SOURCES/openvswitch-3.1.0.patch @@ -5803,7 +5803,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) @@ -5825,6 +5825,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-execute.c b/lib/odp-execute.c index 5cf6fbec09..44b2cd3609 100644 --- a/lib/odp-execute.c @@ -6149,6 +6164,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 fe4661b..4f095ba 100644 --- a/SPECS/openvswitch3.1.spec +++ b/SPECS/openvswitch3.1.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 3.1.0 -Release: 119%{?dist} +Release: 120%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -754,6 +754,12 @@ exit 0 %endif %changelog +* Tue Jun 25 2024 Open vSwitch CI - 3.1.0-120 +- Merging upstream branch-3.1 [RH git: 60e85c06d2] + Commit list: + 9e59834e6b odp-execute: Set IPv6 traffic class in AVX implementation. + + * Wed Jun 19 2024 Open vSwitch CI - 3.1.0-119 - Merging upstream branch-3.1 [RH git: b563f4c30a] Commit list: