diff --git a/SOURCES/openvswitch-2.15.0.patch b/SOURCES/openvswitch-2.15.0.patch index a703100..36d2bc1 100644 --- a/SOURCES/openvswitch-2.15.0.patch +++ b/SOURCES/openvswitch-2.15.0.patch @@ -1,5 +1,5 @@ diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh -index 3e5136fd4e..ed5fbbb05b 100755 +index 3e5136fd4e..306cffecd9 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -201,7 +201,7 @@ fi @@ -11,6 +11,15 @@ index 3e5136fd4e..ed5fbbb05b 100755 fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then +@@ -218,7 +218,7 @@ elif [ "$M32" ]; then + # difference on 'configure' and 'make' stages. + export CC="$CC -m32" + elif [ "$TRAVIS_ARCH" != "aarch64" ]; then +- OPTS="--enable-sparse" ++ EXTRA_OPTS="$EXTRA_OPTS --enable-sparse" + if [ "$AFXDP" ]; then + # netdev-afxdp uses memset for 64M for umem initialization. + SPARSE_FLAGS="${SPARSE_FLAGS} -Wno-memcpy-max-count" @@ -235,7 +235,7 @@ if [ "$TESTSUITE" ]; then configure_ovs @@ -716,13 +725,21 @@ index 0000000000..cdded4f906 +.. _bcc : https://github.com/iovisor/bcc +.. _Trace Compass : https://www.eclipse.org/tracecompass/ diff --git a/NEWS b/NEWS -index bc901efdb1..5c68bf7b7d 100644 +index bc901efdb1..9e3217391a 100644 --- a/NEWS +++ b/NEWS -@@ -1,3 +1,76 @@ -+v2.15.7 - xx xxx xxxx +@@ -1,3 +1,84 @@ ++v2.15.8 - xx xxx xxxx +--------------------- + ++v2.15.7 - 20 Dec 2022 ++--------------------- ++ - Bug fixes ++ - Security: ++ * Fixed LLDP underflow issue while parsing malformed Auto Attach TLVs. ++ The original patch is available here: ++ https://mail.openvswitch.org/pipermail/ovs-dev/2022-December/400596.html ++ +v2.15.6 - 07 Oct 2022 +--------------------- + - Bug fixes @@ -838,7 +855,7 @@ index 435685c93d..cbaee636b4 100644 AC_ARG_ENABLE( [sparse], diff --git a/configure.ac b/configure.ac -index fd82d7d270..2691412c41 100644 +index fd82d7d270..e05e2b55f7 100644 --- a/configure.ac +++ b/configure.ac @@ -13,7 +13,7 @@ @@ -846,7 +863,7 @@ index fd82d7d270..2691412c41 100644 AC_PREREQ(2.63) -AC_INIT(openvswitch, 2.15.0, bugs@openvswitch.org) -+AC_INIT(openvswitch, 2.15.7, bugs@openvswitch.org) ++AC_INIT(openvswitch, 2.15.8, bugs@openvswitch.org) AC_CONFIG_SRCDIR([datapath/datapath.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) @@ -1466,15 +1483,21 @@ index 4cce92f66c..bc18c56b81 100644 #define nf_conntrack_in rpl_nf_conntrack_in #endif /* HAVE_NF_CONNTRACK_IN_TAKES_NF_HOOK_STATE */ diff --git a/debian/changelog b/debian/changelog -index 1f2b7a3668..e503d30d92 100644 +index 1f2b7a3668..4591ab2d93 100644 --- a/debian/changelog +++ b/debian/changelog -@@ -1,3 +1,45 @@ +@@ -1,3 +1,51 @@ ++openvswitch (2.15.8-1) unstable; urgency=low ++ [ Open vSwitch team ] ++ * New upstream version ++ ++ -- Open vSwitch team Tue, 20 Dec 2022 20:06:37 +0100 ++ +openvswitch (2.15.7-1) unstable; urgency=low + [ Open vSwitch team ] + * New upstream version + -+ -- Open vSwitch team Fri, 07 Oct 2022 13:12:36 +0200 ++ -- Open vSwitch team Tue, 20 Dec 2022 20:06:37 +0100 + +openvswitch (2.15.6-1) unstable; urgency=low + [ Open vSwitch team ] @@ -49345,7 +49368,7 @@ index 9c64fd4690..648072f5bb 100644 VIRTCHNL_CHECK_STRUCT_LEN(8, virtchnl_ether_addr); diff --git a/dpdk/drivers/net/i40e/i40e_ethdev.c b/dpdk/drivers/net/i40e/i40e_ethdev.c -index f54769c29d..c2d52e4acc 100644 +index f54769c29d..c5eb7ccddc 100644 --- a/dpdk/drivers/net/i40e/i40e_ethdev.c +++ b/dpdk/drivers/net/i40e/i40e_ethdev.c @@ -202,12 +202,12 @@ @@ -50070,7 +50093,7 @@ index f54769c29d..c2d52e4acc 100644 + } else { + pit_start = I40E_GLQF_PIT_IPV6_START; + pit_count = I40E_GLQF_PIT_IPV6_COUNT; - } ++ } + + offset = i40e_get_inset_field_offset(hw, pit_start, pit_count, + inset_mask_offset_map[i].offset); @@ -50083,7 +50106,7 @@ index f54769c29d..c2d52e4acc 100644 + "Configuration of inset mask out of range %u", + nb_elem); + return -ERANGE; -+ } + } + + mask[idx] = I40E_GLQF_PIT_BUILD((uint32_t)offset, + inset_mask_offset_map[i].mask); @@ -50159,7 +50182,7 @@ index f54769c29d..c2d52e4acc 100644 if (pf->support_multi_driver) { PMD_DRV_LOG(ERR, "Replace cloud filter is not supported."); -@@ -12994,6 +13132,35 @@ i40e_config_rss_filter(struct i40e_pf *pf, +@@ -12994,6 +13132,40 @@ i40e_config_rss_filter(struct i40e_pf *pf, return 0; } @@ -50172,8 +50195,13 @@ index f54769c29d..c2d52e4acc 100644 + enum i40e_status_code status; + bool can_be_set = true; + -+ /* I40E_MEDIA_TYPE_BASET link up can be ignored */ -+ if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET) { ++ /* ++ * I40E_MEDIA_TYPE_BASET link up can be ignored ++ * I40E_MEDIA_TYPE_BASET link down that hw->phy.media_type ++ * is I40E_MEDIA_TYPE_UNKNOWN ++ */ ++ if (hw->phy.media_type != I40E_MEDIA_TYPE_BASET && ++ hw->phy.media_type != I40E_MEDIA_TYPE_UNKNOWN) { + do { + update_link_reg(hw, &link); + if (link.link_status) @@ -99932,6 +99960,97 @@ index 729d59b1b3..910e52ad96 100644 } } else if (OVS_LIKELY(nw_proto == IPPROTO_UDP)) { if (OVS_LIKELY(size >= UDP_HEADER_LEN)) { +diff --git a/lib/hash.c b/lib/hash.c +index 06f83395c1..c722f3c3cc 100644 +--- a/lib/hash.c ++++ b/lib/hash.c +@@ -61,13 +61,13 @@ hash_double(double x, uint32_t basis) + } + + uint32_t +-hash_words__(const uint32_t p[], size_t n_words, uint32_t basis) ++hash_words__(const uint32_t *p, size_t n_words, uint32_t basis) + { + return hash_words_inline(p, n_words, basis); + } + + uint32_t +-hash_words64__(const uint64_t p[], size_t n_words, uint32_t basis) ++hash_words64__(const uint64_t *p, size_t n_words, uint32_t basis) + { + return hash_words64_inline(p, n_words, basis); + } +diff --git a/lib/hash.h b/lib/hash.h +index eb3776500a..60a39a40b8 100644 +--- a/lib/hash.h ++++ b/lib/hash.h +@@ -235,7 +235,7 @@ hash_words_inline(const uint32_t p_[], size_t n_words, uint32_t basis) + /* A simpler version for 64-bit data. + * 'n_words' is the count of 64-bit words, basis is 64 bits. */ + static inline uint32_t +-hash_words64_inline(const uint64_t p[], size_t n_words, uint32_t basis) ++hash_words64_inline(const uint64_t *p, size_t n_words, uint32_t basis) + { + uint64_t hash1 = basis; + uint64_t hash2 = 0; +@@ -284,14 +284,14 @@ static inline uint32_t hash_pointer(const void *p, uint32_t basis) + } + #endif + +-uint32_t hash_words__(const uint32_t p[], size_t n_words, uint32_t basis); +-uint32_t hash_words64__(const uint64_t p[], size_t n_words, uint32_t basis); ++uint32_t hash_words__(const uint32_t *p, size_t n_words, uint32_t basis); ++uint32_t hash_words64__(const uint64_t *p, size_t n_words, uint32_t basis); + + /* Inline the larger hash functions only when 'n_words' is known to be + * compile-time constant. */ + #if __GNUC__ >= 4 + static inline uint32_t +-hash_words(const uint32_t p[], size_t n_words, uint32_t basis) ++hash_words(const uint32_t *p, size_t n_words, uint32_t basis) + { + if (__builtin_constant_p(n_words)) { + return hash_words_inline(p, n_words, basis); +@@ -301,7 +301,7 @@ hash_words(const uint32_t p[], size_t n_words, uint32_t basis) + } + + static inline uint32_t +-hash_words64(const uint64_t p[], size_t n_words, uint32_t basis) ++hash_words64(const uint64_t *p, size_t n_words, uint32_t basis) + { + if (__builtin_constant_p(n_words)) { + return hash_words64_inline(p, n_words, basis); +@@ -313,26 +313,26 @@ hash_words64(const uint64_t p[], size_t n_words, uint32_t basis) + #else + + static inline uint32_t +-hash_words(const uint32_t p[], size_t n_words, uint32_t basis) ++hash_words(const uint32_t *p, size_t n_words, uint32_t basis) + { + return hash_words__(p, n_words, basis); + } + + static inline uint32_t +-hash_words64(const uint64_t p[], size_t n_words, uint32_t basis) ++hash_words64(const uint64_t *p, size_t n_words, uint32_t basis) + { + return hash_words64__(p, n_words, basis); + } + #endif + + static inline uint32_t +-hash_bytes32(const uint32_t p[], size_t n_bytes, uint32_t basis) ++hash_bytes32(const uint32_t *p, size_t n_bytes, uint32_t basis) + { + return hash_words(p, n_bytes / 4, basis); + } + + static inline uint32_t +-hash_bytes64(const uint64_t p[], size_t n_bytes, uint32_t basis) ++hash_bytes64(const uint64_t *p, size_t n_bytes, uint32_t basis) + { + return hash_words64(p, n_bytes / 8, basis); + } diff --git a/lib/hindex.h b/lib/hindex.h index 876c5a9e39..f7a30d511a 100644 --- a/lib/hindex.h @@ -100311,7 +100430,7 @@ index e70a2b7048..34bb7e3d69 100644 -Cflags: -I${includedir}/openvswitch +Cflags: -I${includedir} diff --git a/lib/lldp/lldp.c b/lib/lldp/lldp.c -index 18afbab9a7..dfeb2a8002 100644 +index 18afbab9a7..6fdcfef569 100644 --- a/lib/lldp/lldp.c +++ b/lib/lldp/lldp.c @@ -146,7 +146,9 @@ static void @@ -100325,6 +100444,22 @@ index 18afbab9a7..dfeb2a8002 100644 } int +@@ -581,6 +583,7 @@ lldp_decode(struct lldpd *cfg OVS_UNUSED, char *frame, int s, + + switch(tlv_subtype) { + case LLDP_TLV_AA_ELEMENT_SUBTYPE: ++ CHECK_TLV_SIZE(50, "ELEMENT"); + PEEK_BYTES(&msg_auth_digest, sizeof msg_auth_digest); + + aa_element_dword = PEEK_UINT32; +@@ -627,6 +630,7 @@ lldp_decode(struct lldpd *cfg OVS_UNUSED, char *frame, int s, + break; + + case LLDP_TLV_AA_ISID_VLAN_ASGNS_SUBTYPE: ++ CHECK_TLV_SIZE(36, "ISID_VLAN_ASGNS"); + PEEK_BYTES(&msg_auth_digest, sizeof msg_auth_digest); + + /* Subtract off tlv type and length (2Bytes) + OUI (3B) + diff --git a/lib/lldp/lldpd.c b/lib/lldp/lldpd.c index 34738535db..c377204b3d 100644 --- a/lib/lldp/lldpd.c @@ -102139,10 +102274,10 @@ index f0cac8e0fa..7f5561f827 100644 } diff --git a/lib/rculist.h b/lib/rculist.h -index 1072b87af2..9bb8cbf3eb 100644 +index 1072b87af2..6df963eb2b 100644 --- a/lib/rculist.h +++ b/lib/rculist.h -@@ -365,35 +365,57 @@ rculist_is_singleton_protected(const struct rculist *list) +@@ -365,35 +365,59 @@ rculist_is_singleton_protected(const struct rculist *list) return list_next == list->prev && list_next != list; } @@ -102189,12 +102324,14 @@ index 1072b87af2..9bb8cbf3eb 100644 + UPDATE_MULTIVAR(ITER, rculist_next(ITER_VAR(ITER)))) + +#define RCULIST_FOR_EACH_REVERSE_PROTECTED(ITER, MEMBER, RCULIST) \ -+ for (INIT_MULTIVAR(ITER, MEMBER, (RCULIST)->prev, struct rculist); \ ++ for (INIT_MULTIVAR(ITER, MEMBER, rculist_back_protected(RCULIST), \ ++ struct rculist); \ + CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST)); \ -+ UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev)) ++ UPDATE_MULTIVAR(ITER, rculist_back_protected(ITER_VAR(ITER)))) + +#define RCULIST_FOR_EACH_REVERSE_PROTECTED_CONTINUE(ITER, MEMBER, RCULIST) \ -+ for (INIT_MULTIVAR(ITER, MEMBER, (ITER)->MEMBER.prev, struct rculist); \ ++ for (INIT_MULTIVAR(ITER, MEMBER, rculist_back_protected(ITER->MEMBER), \ ++ struct rculist); \ + CONDITION_MULTIVAR(ITER, MEMBER, ITER_VAR(ITER) != (RCULIST)); \ + UPDATE_MULTIVAR(ITER, ITER_VAR(ITER)->prev)) + @@ -106715,10 +106852,36 @@ index 199db8ed0f..59093c03c9 100644 bad_action 'fin_timeout(foo=bar)' "invalid key 'foo' in 'fin_timeout' argument" diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at -index 31064ed95e..70b8f0edde 100644 +index 31064ed95e..959cfe0d7f 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at -@@ -81,11 +81,12 @@ recirc_id(0),in_port(4),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:0b,dst=ff: +@@ -29,6 +29,25 @@ AT_CHECK([ovs-appctl revalidator/wait]) + OVS_VSWITCHD_STOP + AT_CLEANUP + ++AT_SETUP([ofproto-dpif - malformed lldp autoattach tlv]) ++OVS_VSWITCHD_START() ++add_of_ports br0 1 ++ ++dnl Enable lldp ++AT_CHECK([ovs-vsctl set interface p1 lldp:enable=true]) ++ ++dnl Send a malformed lldp packet ++packet="0180c200000ef6b426aa5f0088cc020704f6b426aa5f000403057632060200780c"dnl ++"5044454144424545464445414442454546444541444245454644454144424545464445414"dnl ++"4424545464445414442454546444541444245454644454144424545464445414442454546"dnl ++"4445414442454546fe0500040d0c010000" ++AT_CHECK([ovs-appctl netdev-dummy/receive p1 "$packet"], [0], [stdout]) ++ ++OVS_WAIT_UNTIL([grep -q "ISID_VLAN_ASGNS TLV too short" ovs-vswitchd.log]) ++ ++OVS_VSWITCHD_STOP(["/|WARN|ISID_VLAN_ASGNS TLV too short received on/d"]) ++AT_CLEANUP ++ + AT_SETUP([ofproto-dpif - active-backup bonding (with primary)]) + + dnl Create br0 with members p1, p2 and p7, creating bond0 with p1 and +@@ -81,11 +100,12 @@ recirc_id(0),in_port(4),packet_type(ns=0,id=0),eth(src=50:54:00:00:00:0b,dst=ff: ovs-appctl netdev-dummy/set-admin-state p1 up ovs-appctl time/warp 100 @@ -106732,7 +106895,7 @@ index 31064ed95e..70b8f0edde 100644 updelay: 0 ms downdelay: 0 ms lacp_status: off -@@ -99,7 +100,6 @@ member p1: enabled +@@ -99,7 +119,6 @@ member p1: enabled member p2: enabled may_enable: true @@ -106740,7 +106903,7 @@ index 31064ed95e..70b8f0edde 100644 ]) OVS_VSWITCHD_STOP -@@ -129,11 +129,12 @@ ovs-appctl time/warp 100 +@@ -129,11 +148,12 @@ ovs-appctl time/warp 100 OVS_WAIT_UNTIL([test -n "`ovs-appctl bond/show | fgrep 'member p1: disabled'`"]) ovs-appctl netdev-dummy/set-admin-state p1 up ovs-appctl time/warp 100 @@ -106754,7 +106917,7 @@ index 31064ed95e..70b8f0edde 100644 updelay: 0 ms downdelay: 0 ms lacp_status: off -@@ -150,7 +151,6 @@ member p2: enabled +@@ -150,7 +170,6 @@ member p2: enabled member p3: enabled may_enable: true @@ -106762,7 +106925,7 @@ index 31064ed95e..70b8f0edde 100644 ]) dnl Now delete the primary and verify that the output shows that the -@@ -171,11 +171,12 @@ ovs-vsctl \ +@@ -171,11 +190,12 @@ ovs-vsctl \ --id=@p1 create Interface name=p1 type=dummy options:pstream=punix:$OVS_RUNDIR/p1.sock ofport_request=1 -- \ set Port bond0 interfaces="$uuids, @p1]" ovs-appctl time/warp 100 @@ -106776,7 +106939,7 @@ index 31064ed95e..70b8f0edde 100644 updelay: 0 ms downdelay: 0 ms lacp_status: off -@@ -192,17 +193,17 @@ member p2: enabled +@@ -192,17 +212,17 @@ member p2: enabled member p3: enabled may_enable: true @@ -106796,7 +106959,7 @@ index 31064ed95e..70b8f0edde 100644 updelay: 0 ms downdelay: 0 ms lacp_status: off -@@ -211,25 +212,25 @@ active-backup primary: p2 +@@ -211,25 +231,25 @@ active-backup primary: p2 member p1: enabled @@ -106825,7 +106988,7 @@ index 31064ed95e..70b8f0edde 100644 updelay: 0 ms downdelay: 0 ms lacp_status: off -@@ -238,15 +239,14 @@ active-backup primary: +@@ -238,15 +258,14 @@ active-backup primary: member p1: enabled @@ -106842,7 +107005,7 @@ index 31064ed95e..70b8f0edde 100644 ]) OVS_VSWITCHD_STOP -@@ -342,6 +342,22 @@ AT_CHECK([test `egrep 'in_port\(6\)' br1_flows.txt |wc -l` -gt 3]) +@@ -342,6 +361,22 @@ AT_CHECK([test `egrep 'in_port\(6\)' br1_flows.txt |wc -l` -gt 3]) OVS_VSWITCHD_STOP AT_CLEANUP @@ -106865,7 +107028,7 @@ index 31064ed95e..70b8f0edde 100644 AT_SETUP([ofproto-dpif - balance-tcp bonding]) # Create br0 with members bond0(p1, p2, p3) and p7, # and br1 with members bond1(p4, p5, p6) and p8. -@@ -377,13 +393,7 @@ ovs-appctl lacp/show > lacp.txt +@@ -377,13 +412,7 @@ ovs-appctl lacp/show > lacp.txt ovs-appctl bond/show > bond.txt # Check that lb_output is not enabled by default. AT_CHECK([grep -q '^lb_output action: disabled' bond.txt]) @@ -106880,7 +107043,7 @@ index 31064ed95e..70b8f0edde 100644 ovs-appctl time/warp 300 100 AT_CHECK([ovs-appctl dpif/dump-flows br0 |grep tcp > br0_flows.txt]) AT_CHECK([ovs-appctl dpif/dump-flows br1 |grep tcp > br1_flows.txt]) -@@ -400,13 +410,7 @@ OVS_WAIT_UNTIL([ovs-appctl bond/show | grep -q '^lb_output action: enabled']) +@@ -400,13 +429,7 @@ OVS_WAIT_UNTIL([ovs-appctl bond/show | grep -q '^lb_output action: enabled']) ovs-appctl time/warp 10000 500 ovs-appctl revalidator/wait OVS_WAIT_WHILE([ovs-appctl dpif/dump-flows br1 | grep -q tcp]) @@ -106895,7 +107058,7 @@ index 31064ed95e..70b8f0edde 100644 ovs-appctl time/warp 300 100 AT_CHECK([ovs-appctl dpif/dump-flows br0 | grep tcp > br0_flows.txt]) AT_CHECK([ovs-appctl dpif/dump-flows br1 | grep tcp > br1_flows.txt]) -@@ -423,6 +427,144 @@ OVS_WAIT_UNTIL([test -z "$(ovs-appctl dpif-netdev/bond-show)"]) +@@ -423,6 +446,144 @@ OVS_WAIT_UNTIL([test -z "$(ovs-appctl dpif-netdev/bond-show)"]) OVS_VSWITCHD_STOP() AT_CLEANUP @@ -107040,7 +107203,7 @@ index 31064ed95e..70b8f0edde 100644 # Makes sure recirculation does not change the way packet is handled. AT_SETUP([ofproto-dpif - balance-tcp bonding, different recirc flow ]) OVS_VSWITCHD_START( -@@ -4786,6 +4928,54 @@ recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,fr +@@ -4786,6 +4947,54 @@ recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,fr OVS_VSWITCHD_STOP AT_CLEANUP @@ -107095,7 +107258,7 @@ index 31064ed95e..70b8f0edde 100644 AT_SETUP([ofproto-dpif - exit]) OVS_VSWITCHD_START add_of_ports br0 1 2 3 10 11 12 13 14 -@@ -5449,7 +5639,36 @@ check_flows () { +@@ -5449,7 +5658,36 @@ check_flows () { echo "n_packets=$n" test "$n" = 1 } @@ -107133,7 +107296,7 @@ index 31064ed95e..70b8f0edde 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -7349,13 +7568,28 @@ dnl configure bridge IPFIX and ensure that sample action generation works at the +@@ -7349,13 +7587,28 @@ dnl configure bridge IPFIX and ensure that sample action generation works at the dnl datapath level. AT_SETUP([ofproto-dpif - Bridge IPFIX sanity check]) OVS_VSWITCHD_START @@ -107164,7 +107327,7 @@ index 31064ed95e..70b8f0edde 100644 dnl Send some packets that should be sampled. for i in `seq 1 3`; do AT_CHECK([ovs-appctl netdev-dummy/receive p1 'in_port(1),eth(src=50:54:00:00:00:09,dst=50:54:00:00:00:0a),eth_type(0x0800)']) -@@ -7365,6 +7599,28 @@ flow-dump from the main thread: +@@ -7365,6 +7618,28 @@ flow-dump from the main thread: packets:2, bytes:68, used:0.001s, actions:userspace(pid=0,ipfix(output_port=4294967295)) ]) @@ -107193,7 +107356,7 @@ index 31064ed95e..70b8f0edde 100644 AT_CHECK([ovs-appctl revalidator/purge]) dnl dnl Add a slowpath meter. The userspace action should be metered. -@@ -8416,6 +8672,34 @@ AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], +@@ -8416,6 +8691,34 @@ AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], OVS_VSWITCHD_STOP AT_CLEANUP @@ -107228,7 +107391,7 @@ index 31064ed95e..70b8f0edde 100644 dnl ---------------------------------------------------------------------- AT_BANNER([ofproto-dpif -- megaflows]) -@@ -9520,6 +9804,26 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): +@@ -9520,6 +9823,26 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): OVS_VSWITCHD_STOP AT_CLEANUP @@ -107255,7 +107418,7 @@ index 31064ed95e..70b8f0edde 100644 AT_SETUP([ofproto-dpif - ICMPv6]) OVS_VSWITCHD_START add_of_ports br0 1 -@@ -10842,6 +11146,31 @@ dnl +@@ -10842,6 +11165,31 @@ dnl NXT_PACKET_IN (xid=0x0): table_id=1 cookie=0x0 total_len=106 in_port=2 (via action) data_len=106 (unbuffered) udp,vlan_tci=0x0000,dl_src=50:54:00:00:00:0a,dl_dst=50:54:00:00:00:09,nw_src=10.1.1.2,nw_dst=10.1.1.1,nw_tos=0,nw_ecn=0,nw_ttl=64,tp_src=2,tp_dst=1 udp_csum:553 ]) @@ -107287,7 +107450,7 @@ index 31064ed95e..70b8f0edde 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -11204,6 +11533,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no +@@ -11204,6 +11552,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no Datapath actions: 4 ]) diff --git a/SPECS/openvswitch2.15.spec b/SPECS/openvswitch2.15.spec index abf499c..5f11685 100644 --- a/SPECS/openvswitch2.15.spec +++ b/SPECS/openvswitch2.15.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.15.0 -Release: 129%{?dist} +Release: 131%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -702,6 +702,36 @@ exit 0 %endif %changelog +* Tue Jan 03 2023 Open vSwitch CI - 2.15.0-131 +- Merging upstream branch-2.15 [RH git: a985627824] + Commit list: + 46b3a2c68d ci: Fix overriding OPTS provided from the yml. + 055a2a0f9d Prepare for 2.15.8. + 3f93cdff2b Set release date for 2.15.7. + d61cbd9330 hash: Fix compilation error on Fedora 34 with GCC 11 and -O0. + f24527c9b4 lldp: Fix bugs when parsing malformed AutoAttach. + 981ca96a55 rculist: Use rculist_back_protected to access prev. + + +* Tue Dec 06 2022 Timothy Redaelli - 2.15.0-130 +- net/i40e: fix jumbo frame Rx with X722 [RH git: 1ec94aac1a] + For NIC I40E_10G-10G_BASE_T_X722, when the port is configured with + link speed, it cannot receive jumbo frame packets. + + Because it set maximum frame size failed when starts the port that + the port link status is still down. + + This patch fix the error that starts the port will force set maximum + frame size. + + Fixes: 2184f7cdeeaa ("net/i40e: fix max frame size config at port level") + Cc: stable@dpdk.org + + Signed-off-by: Jie Wang + Tested-by: Dukai Yuan + (cherry picked from commit 719469f13b11dbdc921b74258f2d10bd1c5328d4) + + * Thu Nov 24 2022 Open vSwitch CI - 2.15.0-129 - Merging upstream branch-2.15 [RH git: 31a84993c7] Commit list: