diff --git a/SOURCES/openvswitch-2.16.0.patch b/SOURCES/openvswitch-2.16.0.patch index c5dd230..37fd1ca 100644 --- a/SOURCES/openvswitch-2.16.0.patch +++ b/SOURCES/openvswitch-2.16.0.patch @@ -1,5 +1,5 @@ diff --git a/.ci/linux-build.sh b/.ci/linux-build.sh -index 863f023888..dd0a578508 100755 +index 863f023888..1432076211 100755 --- a/.ci/linux-build.sh +++ b/.ci/linux-build.sh @@ -216,7 +216,7 @@ fi @@ -11,6 +11,15 @@ index 863f023888..dd0a578508 100755 fi install_dpdk $DPDK_VER if [ "$CC" = "clang" ]; then +@@ -233,7 +233,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" @@ -246,8 +246,8 @@ if [ "$ASAN" ]; then export ASAN_OPTIONS='detect_leaks=1' # -O2 generates few false-positive memory leak reports in test-ovsdb @@ -277,13 +286,21 @@ index 95fa7af128..c1a35eb13a 100644 is discussed here. diff --git a/NEWS b/NEWS -index 559a51ba3f..9b4a0d6c7d 100644 +index 559a51ba3f..86ad49fe30 100644 --- a/NEWS +++ b/NEWS -@@ -1,3 +1,59 @@ -+v2.16.6 - xx xxx xxxx +@@ -1,3 +1,67 @@ ++v2.16.7 - xx xxx xxxx +--------------------- + ++v2.16.6 - 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.16.5 - 07 Oct 2022 +--------------------- + - Bug fixes @@ -377,7 +394,7 @@ index dba365ea1a..1b957c3dcd 100644 AC_ARG_ENABLE( [sparse], diff --git a/configure.ac b/configure.ac -index 16b32be965..2a957c1e09 100644 +index 16b32be965..7382132aea 100644 --- a/configure.ac +++ b/configure.ac @@ -13,7 +13,7 @@ @@ -385,7 +402,7 @@ index 16b32be965..2a957c1e09 100644 AC_PREREQ(2.63) -AC_INIT(openvswitch, 2.16.0, bugs@openvswitch.org) -+AC_INIT(openvswitch, 2.16.6, bugs@openvswitch.org) ++AC_INIT(openvswitch, 2.16.7, bugs@openvswitch.org) AC_CONFIG_SRCDIR([datapath/datapath.c]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([build-aux]) @@ -943,15 +960,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 239d210b96..e749ad5f28 100644 +index 239d210b96..a4f5011fea 100644 --- a/debian/changelog +++ b/debian/changelog -@@ -1,3 +1,39 @@ +@@ -1,3 +1,45 @@ ++openvswitch (2.16.7-1) unstable; urgency=low ++ [ Open vSwitch team ] ++ * New upstream version ++ ++ -- Open vSwitch team Tue, 20 Dec 2022 20:06:45 +0100 ++ +openvswitch (2.16.6-1) unstable; urgency=low + [ Open vSwitch team ] + * New upstream version + -+ -- Open vSwitch team Fri, 07 Oct 2022 13:12:46 +0200 ++ -- Open vSwitch team Tue, 20 Dec 2022 20:06:45 +0100 + +openvswitch (2.16.5-1) unstable; urgency=low + [ Open vSwitch team ] @@ -41379,7 +41402,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 ef4f28fe53..c2d52e4acc 100644 +index ef4f28fe53..c5eb7ccddc 100644 --- a/dpdk/drivers/net/i40e/i40e_ethdev.c +++ b/dpdk/drivers/net/i40e/i40e_ethdev.c @@ -202,12 +202,12 @@ @@ -41975,7 +41998,7 @@ index ef4f28fe53..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); @@ -41988,7 +42011,7 @@ index ef4f28fe53..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); @@ -42055,7 +42078,7 @@ index ef4f28fe53..c2d52e4acc 100644 if (pf->support_multi_driver) { PMD_DRV_LOG(ERR, "Replace cloud filter is not supported."); -@@ -13023,6 +13132,35 @@ i40e_config_rss_filter(struct i40e_pf *pf, +@@ -13023,6 +13132,40 @@ i40e_config_rss_filter(struct i40e_pf *pf, return 0; } @@ -42068,8 +42091,13 @@ index ef4f28fe53..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) @@ -83469,6 +83497,97 @@ index 89837de95d..a021bc0eba 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 @@ -83878,7 +83997,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 @@ -83892,6 +84011,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 a024dc5e58..ee1051dde7 100644 --- a/lib/lldp/lldpd.c @@ -85614,10 +85749,10 @@ index b30a11c24b..41835f6f4d 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; } @@ -85664,12 +85799,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)) + @@ -91125,10 +91262,36 @@ index 757cf7186e..fe475e7b38 100644 + +AT_CLEANUP diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at -index 956a69e1fa..eb64d9f867 100644 +index 956a69e1fa..13066d39a3 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 @@ -91142,7 +91305,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91150,7 +91313,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91164,7 +91327,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91172,7 +91335,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91186,7 +91349,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91206,7 +91369,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91235,7 +91398,7 @@ index 956a69e1fa..eb64d9f867 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 @@ -91252,7 +91415,7 @@ index 956a69e1fa..eb64d9f867 100644 ]) OVS_VSWITCHD_STOP -@@ -498,6 +498,72 @@ AT_CHECK([sed -n '/member p2/,/^$/p' bond3.txt | grep 'hash'], [0], [ignore]) +@@ -498,6 +517,72 @@ AT_CHECK([sed -n '/member p2/,/^$/p' bond3.txt | grep 'hash'], [0], [ignore]) OVS_VSWITCHD_STOP() AT_CLEANUP @@ -91325,7 +91488,7 @@ index 956a69e1fa..eb64d9f867 100644 # Makes sure recirculation does not change the way packet is handled. AT_SETUP([ofproto-dpif - balance-tcp bonding, different recirc flow ]) -@@ -4862,6 +4928,54 @@ recirc_id(0),in_port(90),packet_type(ns=0,id=0),eth_type(0x0800),ipv4(proto=6,fr +@@ -4862,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 @@ -91380,7 +91543,7 @@ index 956a69e1fa..eb64d9f867 100644 AT_SETUP([ofproto-dpif - exit]) OVS_VSWITCHD_START add_of_ports br0 1 2 3 10 11 12 13 14 -@@ -5525,7 +5639,36 @@ check_flows () { +@@ -5525,7 +5658,36 @@ check_flows () { echo "n_packets=$n" test "$n" = 1 } @@ -91418,7 +91581,7 @@ index 956a69e1fa..eb64d9f867 100644 OVS_VSWITCHD_STOP AT_CLEANUP -@@ -7524,13 +7667,28 @@ dnl configure bridge IPFIX and ensure that sample action generation works at the +@@ -7524,13 +7686,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 @@ -91449,7 +91612,7 @@ index 956a69e1fa..eb64d9f867 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)']) -@@ -7540,6 +7698,28 @@ flow-dump from the main thread: +@@ -7540,6 +7717,28 @@ flow-dump from the main thread: packets:2, bytes:68, used:0.001s, actions:userspace(pid=0,ipfix(output_port=4294967295)) ]) @@ -91478,7 +91641,7 @@ index 956a69e1fa..eb64d9f867 100644 AT_CHECK([ovs-appctl revalidator/purge]) dnl dnl Add a slowpath meter. The userspace action should be metered. -@@ -8591,6 +8771,34 @@ AT_CHECK([sed -n 's/=[[0-9]][[0-9]]\(\.[[0-9]][[0-9]]*\)\{0,1\}s/=?s/p' stdout], +@@ -8591,6 +8790,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 @@ -91513,7 +91676,7 @@ index 956a69e1fa..eb64d9f867 100644 dnl ---------------------------------------------------------------------- AT_BANNER([ofproto-dpif -- megaflows]) -@@ -9695,6 +9903,26 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): +@@ -9695,6 +9922,26 @@ OFPST_TABLE reply (OF1.3) (xid=0x2): OVS_VSWITCHD_STOP AT_CLEANUP @@ -91540,7 +91703,7 @@ index 956a69e1fa..eb64d9f867 100644 AT_SETUP([ofproto-dpif - ICMPv6]) OVS_VSWITCHD_START add_of_ports br0 1 -@@ -11404,6 +11632,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no +@@ -11404,6 +11651,23 @@ Megaflow: recirc_id=0x3,eth,ip,in_port=1,nw_frag=no Datapath actions: 4 ]) diff --git a/SPECS/openvswitch2.16.spec b/SPECS/openvswitch2.16.spec index 60c3764..8b6c78a 100644 --- a/SPECS/openvswitch2.16.spec +++ b/SPECS/openvswitch2.16.spec @@ -57,7 +57,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.16.0 -Release: 107%{?dist} +Release: 109%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -699,6 +699,36 @@ exit 0 %endif %changelog +* Tue Jan 03 2023 Open vSwitch CI - 2.16.0-109 +- Merging upstream branch-2.16 [RH git: 53d801289d] + Commit list: + 679b27378a ci: Fix overriding OPTS provided from the yml. + d5532f81e0 Prepare for 2.16.7. + 68a258e86b Set release date for 2.16.6. + b4837701b1 hash: Fix compilation error on Fedora 34 with GCC 11 and -O0. + 70d64054df lldp: Fix bugs when parsing malformed AutoAttach. + b345daf476 rculist: Use rculist_back_protected to access prev. + + +* Tue Dec 06 2022 Timothy Redaelli - 2.16.0-108 +- net/i40e: fix jumbo frame Rx with X722 [RH git: 72e2959a72] + 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.16.0-107 - Merging upstream branch-2.16 [RH git: 16b6203b1f] Commit list: