diff --git a/SOURCES/openvswitch-2.13.0.patch b/SOURCES/openvswitch-2.13.0.patch index afb3546..01d1f74 100644 --- a/SOURCES/openvswitch-2.13.0.patch +++ b/SOURCES/openvswitch-2.13.0.patch @@ -116906,7 +116906,7 @@ index 6187129c00..4da7f0352a 100644 err = rte_vhost_driver_start(dev->vhost_id); diff --git a/lib/netdev-linux.c b/lib/netdev-linux.c -index c6f3d27409..61ca8075bd 100644 +index c6f3d27409..fc2ac07f65 100644 --- a/lib/netdev-linux.c +++ b/lib/netdev-linux.c @@ -231,6 +231,14 @@ struct rtnl_link_stats64 { @@ -117072,7 +117072,43 @@ index c6f3d27409..61ca8075bd 100644 unsigned int bps = ((uint64_t) kbits_rate * 1000) / 8; struct tc_police police; struct tc_ratespec rate; -@@ -6202,7 +6230,14 @@ get_stats_via_netlink(const struct netdev *netdev_, struct netdev_stats *stats) +@@ -2885,12 +2913,18 @@ netdev_linux_set_qos(struct netdev *netdev_, + /* Delete existing qdisc. */ + error = tc_del_qdisc(netdev_); + if (error) { ++ VLOG_WARN_RL(&rl, "%s: Failed to delete existing qdisc: %s", ++ netdev_get_name(netdev_), ovs_strerror(error)); + goto exit; + } + ovs_assert(netdev->tc == NULL); + + /* Install new qdisc. */ + error = new_ops->tc_install(netdev_, details); ++ if (error) { ++ VLOG_WARN_RL(&rl, "%s: Failed to install new qdisc: %s", ++ netdev_get_name(netdev_), ovs_strerror(error)); ++ } + ovs_assert((error == 0) == (netdev->tc != NULL)); + } + +@@ -5873,13 +5907,12 @@ tc_del_qdisc(struct netdev *netdev_) + if (!tcmsg) { + return ENODEV; + } +- tcmsg->tcm_handle = tc_make_handle(1, 0); + tcmsg->tcm_parent = TC_H_ROOT; + + error = tc_transact(&request, NULL); +- if (error == EINVAL) { +- /* EINVAL probably means that the default qdisc was in use, in which +- * case we've accomplished our purpose. */ ++ if (error == EINVAL || error == ENOENT) { ++ /* EINVAL or ENOENT probably means that the default qdisc was in use, ++ * in which case we've accomplished our purpose. */ + error = 0; + } + if (!error && netdev->tc) { +@@ -6202,7 +6235,14 @@ get_stats_via_netlink(const struct netdev *netdev_, struct netdev_stats *stats) if (ofpbuf_try_pull(reply, NLMSG_HDRLEN + sizeof(struct ifinfomsg))) { const struct nlattr *a = nl_attr_find(reply, 0, IFLA_STATS64); if (a && nl_attr_get_size(a) >= sizeof(struct rtnl_link_stats64)) { @@ -121198,7 +121234,7 @@ index add3aabcc2..391d6d8f7c 100644 AC_DEFUN([OVS_CHECK_WIN64], [AC_CACHE_CHECK( diff --git a/ofproto/bond.c b/ofproto/bond.c -index 405202fb64..89d9013038 100644 +index 405202fb64..2e8a94b80a 100644 --- a/ofproto/bond.c +++ b/ofproto/bond.c @@ -185,9 +185,13 @@ static struct bond_slave *choose_output_slave(const struct bond *, @@ -121242,6 +121278,15 @@ index 405202fb64..89d9013038 100644 revalidate = bond->bond_revalidate; bond->bond_revalidate = false; ovs_rwlock_unlock(&rwlock); +@@ -819,7 +835,7 @@ bond_check_admissibility(struct bond *bond, const void *slave_, + verdict = (slave->enabled || slave->may_enable) ? BV_ACCEPT : BV_DROP; + if (!slave->enabled && slave->may_enable) { + VLOG_DBG_RL(&rl, "bond %s: slave %s: main thread not yet enabled slave", +- bond->name, bond->active_slave->name); ++ bond->name, slave->name); + } + goto out; + case LACP_CONFIGURED: @@ -968,7 +984,7 @@ bond_may_recirc(const struct bond *bond) } @@ -128576,7 +128621,7 @@ index 0000000000..1714273e35 +OVS_TRAFFIC_VSWITCHD_STOP +AT_CLEANUP diff --git a/tests/system-traffic.at b/tests/system-traffic.at -index 4a39c929c2..9f905455c4 100644 +index 4a39c929c2..a9f304fb15 100644 --- a/tests/system-traffic.at +++ b/tests/system-traffic.at @@ -192,6 +192,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00:1::2 | FORMAT_PI @@ -128757,7 +128802,50 @@ index 4a39c929c2..9f905455c4 100644 OVS_APP_EXIT_AND_WAIT([ovs-ofctl]) OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -1925,6 +2075,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= +@@ -1398,6 +1548,42 @@ AT_CHECK([ovs-ofctl dump-flows br0 | grep "in_port=4" | ofctl_strip], [0], [dnl + OVS_TRAFFIC_VSWITCHD_STOP + AT_CLEANUP + ++AT_BANNER([QoS]) ++ ++AT_SETUP([QoS - basic configuration]) ++AT_SKIP_IF([test $HAVE_TC = no]) ++OVS_TRAFFIC_VSWITCHD_START() ++ ++ADD_NAMESPACES(at_ns0, at_ns1) ++ ++ADD_VETH(p0, at_ns0, br0, "10.1.1.1/24") ++ADD_VETH(p1, at_ns1, br0, "10.1.1.2/24") ++ ++dnl Adding a custom qdisc to ovs-p1, ovs-p0 will have the default qdisc. ++AT_CHECK([tc qdisc add dev ovs-p1 root noqueue]) ++AT_CHECK([tc qdisc show dev ovs-p1 | grep -q noqueue]) ++ ++dnl Configure the same QoS for both ports. ++AT_CHECK([ovs-vsctl set port ovs-p0 qos=@qos -- set port ovs-p1 qos=@qos dnl ++ -- --id=@qos create qos dnl ++ type=linux-htb other-config:max-rate=3000000 queues:0=@queue dnl ++ -- --id=@queue create queue dnl ++ other_config:min-rate=2000000 other_config:max-rate=3000000 dnl ++ other_config:burst=3000000], ++ [ignore], [ignore]) ++ ++dnl Wait for qdiscs to be applied. ++OVS_WAIT_UNTIL([tc qdisc show dev ovs-p0 | grep -q htb]) ++OVS_WAIT_UNTIL([tc qdisc show dev ovs-p1 | grep -q htb]) ++ ++dnl Check the configuration. ++m4_define([HTB_CONF], [rate 2Mbit ceil 3Mbit burst 375000b cburst 375000b]) ++AT_CHECK([tc class show dev ovs-p0 | grep -q 'class htb .* HTB_CONF']) ++AT_CHECK([tc class show dev ovs-p1 | grep -q 'class htb .* HTB_CONF']) ++ ++OVS_TRAFFIC_VSWITCHD_STOP ++AT_CLEANUP ++ + AT_BANNER([conntrack]) + + AT_SETUP([conntrack - controller]) +@@ -1925,6 +2111,111 @@ tcp,orig=(src=10.1.1.3,dst=10.1.1.4,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -128869,7 +128957,7 @@ index 4a39c929c2..9f905455c4 100644 AT_SETUP([conntrack - multiple bridges]) CHECK_CONNTRACK() OVS_TRAFFIC_VSWITCHD_START( -@@ -2328,6 +2583,44 @@ NXST_FLOW reply: +@@ -2328,6 +2619,44 @@ NXST_FLOW reply: table=1, priority=100,ct_state=+est+trk,in_port=1 actions=output:2 ]) @@ -128914,7 +129002,7 @@ index 4a39c929c2..9f905455c4 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -2664,6 +2957,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) +@@ -2664,6 +2993,11 @@ AT_CHECK([ovs-ofctl bundle br0 bundle.txt]) AT_CHECK([ovs-appctl dpctl/dump-conntrack | FORMAT_CT(10.1.1.2)], [0], [dnl ]) @@ -128926,7 +129014,7 @@ index 4a39c929c2..9f905455c4 100644 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP -@@ -3220,6 +3518,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING +@@ -3220,6 +3554,46 @@ NS_CHECK_EXEC([at_ns0], [ping6 -s 3200 -q -c 3 -i 0.3 -w 2 fc00::2 | FORMAT_PING OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -128973,7 +129061,7 @@ index 4a39c929c2..9f905455c4 100644 AT_SETUP([conntrack - resubmit to ct multiple times]) CHECK_CONNTRACK() -@@ -3356,15 +3694,15 @@ action=normal +@@ -3356,15 +3730,15 @@ action=normal AT_CHECK([ovs-ofctl --bundle add-flows br0 flows.txt]) @@ -128992,7 +129080,7 @@ index 4a39c929c2..9f905455c4 100644 "1616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161616161610a, actions=ct(table=1)"]) AT_CHECK([ovs-appctl dpctl/dump-flows | head -2 | tail -1 | grep -q -e ["]udp[(]src=5001["]]) -@@ -4379,6 +4717,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4379,6 +4753,52 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129045,7 +129133,7 @@ index 4a39c929c2..9f905455c4 100644 AT_SETUP([conntrack - simple DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -4434,6 +4818,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= +@@ -4434,6 +4854,41 @@ tcp,orig=(src=10.1.1.1,dst=10.1.1.2,sport=,dport=),reply=(src= OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -129087,7 +129175,7 @@ index 4a39c929c2..9f905455c4 100644 AT_SETUP([conntrack - more complex DNAT]) CHECK_CONNTRACK() CHECK_CONNTRACK_NAT() -@@ -5628,7 +6047,7 @@ on_exit 'ovs-appctl revalidator/purge' +@@ -5628,7 +6083,7 @@ on_exit 'ovs-appctl revalidator/purge' on_exit 'ovs-appctl dpif/dump-flows br0' dnl Should work with the virtual IP address through NAT @@ -129096,7 +129184,7 @@ index 4a39c929c2..9f905455c4 100644 echo Request $i NS_CHECK_EXEC([at_ns1], [wget 10.1.1.64 -t 5 -T 1 --retry-connrefused -v -o wget$i.log]) done -@@ -5873,6 +6292,96 @@ ovs-appctl dpif/dump-flows br0 +@@ -5873,6 +6328,96 @@ ovs-appctl dpif/dump-flows br0 OVS_TRAFFIC_VSWITCHD_STOP AT_CLEANUP @@ -134205,7 +134293,7 @@ index 1e72b628b1..f325c752a9 100644 if (should_service_stop()) { exiting = true; diff --git a/vswitchd/vswitch.xml b/vswitchd/vswitch.xml -index 3ddaaefda8..fd13281a7f 100644 +index 3ddaaefda8..dc8296028a 100644 --- a/vswitchd/vswitch.xml +++ b/vswitchd/vswitch.xml @@ -653,8 +653,9 @@ @@ -134253,6 +134341,15 @@ index 3ddaaefda8..fd13281a7f 100644

+@@ -2211,7 +2238,7 @@ + lowest port-id is elected as the root. + + +- + The port path cost. The Port's contribution, when it is + the Root Port, to the Root Path Cost for the Bridge. By default the @@ -2971,8 +2998,8 @@

diff --git a/SPECS/openvswitch2.13.spec b/SPECS/openvswitch2.13.spec index fb54670..6a7d919 100644 --- a/SPECS/openvswitch2.13.spec +++ b/SPECS/openvswitch2.13.spec @@ -59,7 +59,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.13.0 -Release: 207%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} +Release: 208%{?commit0:.%{date}git%{shortcommit0}}%{?commit1:dpdk%{shortcommit1}}%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -715,6 +715,14 @@ exit 0 %endif %changelog +* Wed Nov 02 2022 Open vSwitch CI - 2.13.0-208 +- Merging upstream branch-2.13 [RH git: 3825d327a7] + Commit list: + bc2dfd7a63 netdev-linux: Fix inability to apply QoS on ports with custom qdiscs. (#2138339) + b397eb8c8e vswitch.xml: Fix the name of rstp-path-cost option. + 7c9bdf0ba5 bond: Fix crash while logging not yet enabled member. + + * Wed Oct 26 2022 Open vSwitch CI - 2.13.0-207 - Merging upstream branch-2.13 [RH git: 791c333503] Commit list: