From a3f9da58794c36ba4f71182bc1416de810a7107f Mon Sep 17 00:00:00 2001 From: Open vSwitch CI Date: Sep 20 2024 15:30:29 +0000 Subject: Import openvswitch2.17-2.17.0-188 from Fast DataPath --- diff --git a/SOURCES/openvswitch-2.17.0.patch b/SOURCES/openvswitch-2.17.0.patch index e93d328..585c18d 100644 --- a/SOURCES/openvswitch-2.17.0.patch +++ b/SOURCES/openvswitch-2.17.0.patch @@ -107968,6 +107968,19 @@ index 1f42cd5275..75c0ab81ac 100644 struct dpif_ipfix *, const struct ofproto_ipfix_bridge_exporter_options *, const struct ofproto_ipfix_flow_exporter_options *, size_t); +diff --git a/ofproto/ofproto-dpif-mirror.c b/ofproto/ofproto-dpif-mirror.c +index 343b75f0ed..45024580aa 100644 +--- a/ofproto/ofproto-dpif-mirror.c ++++ b/ofproto/ofproto-dpif-mirror.c +@@ -265,7 +265,7 @@ mirror_set(struct mbridge *mbridge, void *aux, const char *name, + { + hmapx_destroy(&srcs_map); + hmapx_destroy(&dsts_map); +- return 0; ++ return ECANCELED; + } + + /* XXX: Not sure if these need to be thread safe. */ diff --git a/ofproto/ofproto-dpif-monitor.c b/ofproto/ofproto-dpif-monitor.c index bb0e490910..5132f9c952 100644 --- a/ofproto/ofproto-dpif-monitor.c @@ -109710,7 +109723,7 @@ index 851088d794..2ba90e999c 100644 void xlate_bundle_set(struct ofproto_dpif *, struct ofbundle *, const char *name, enum port_vlan_mode, diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c -index 8143dd965f..f20ed9a3f1 100644 +index 8143dd965f..cf4679480d 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -215,10 +215,6 @@ struct shash all_dpif_backers = SHASH_INITIALIZER(&all_dpif_backers); @@ -109991,7 +110004,24 @@ index 8143dd965f..f20ed9a3f1 100644 for (i = 0; i < s->n_members; i++) { if (s->members[i] == port->up.ofp_port) { goto found; -@@ -3909,15 +3902,21 @@ port_query_by_name(const struct ofproto *ofproto_, const char *devname, +@@ -3674,6 +3667,16 @@ mirror_set__(struct ofproto *ofproto_, void *aux, + s->n_dsts, s->src_vlans, + bundle_lookup(ofproto, s->out_bundle), + s->snaplen, s->out_vlan); ++ ++ if (!error) { ++ ofproto->backer->need_revalidate = REV_RECONFIGURE; ++ } else if (error == ECANCELED) { ++ /* The user requested a change that is identical to the current state, ++ * the reconfiguration is canceled, but don't log an error message ++ * about that. */ ++ error = 0; ++ } ++ + free(srcs); + free(dsts); + return error; +@@ -3909,15 +3912,21 @@ port_query_by_name(const struct ofproto *ofproto_, const char *devname, int error; if (sset_contains(&ofproto->ghost_ports, devname)) { @@ -110009,17 +110039,17 @@ index 8143dd965f..f20ed9a3f1 100644 + const char *type = netdev_get_type_from_name(devname); + const struct ofport *ofport = + shash_find_data(&ofproto->up.port_by_name, devname); -+ + +- ofport = shash_find_data(&ofproto->up.port_by_name, devname); + if (!type && ofport && ofport->netdev) { + type = netdev_get_type(ofport->netdev); + } - -- ofport = shash_find_data(&ofproto->up.port_by_name, devname); ++ + if (type) { ofproto_port->ofp_port = ofport ? ofport->ofp_port : OFPP_NONE; ofproto_port->name = xstrdup(devname); ofproto_port->type = xstrdup(type); -@@ -3963,6 +3962,10 @@ port_add(struct ofproto *ofproto_, struct netdev *netdev) +@@ -3963,6 +3972,10 @@ port_add(struct ofproto *ofproto_, struct netdev *netdev) simap_put(&ofproto->backer->tnl_backers, dp_port_name, odp_to_u32(port_no)); } @@ -110030,7 +110060,7 @@ index 8143dd965f..f20ed9a3f1 100644 } if (netdev_get_tunnel_config(netdev)) { -@@ -4471,12 +4474,14 @@ rule_dpif_lookup_from_table(struct ofproto_dpif *ofproto, +@@ -4471,12 +4484,14 @@ rule_dpif_lookup_from_table(struct ofproto_dpif *ofproto, atomic_add_relaxed(&tbl->n_matched, stats->n_packets, &orig); } if (xcache) { @@ -110050,7 +110080,7 @@ index 8143dd965f..f20ed9a3f1 100644 } return rule; } -@@ -4507,12 +4512,14 @@ rule_dpif_lookup_from_table(struct ofproto_dpif *ofproto, +@@ -4507,12 +4522,14 @@ rule_dpif_lookup_from_table(struct ofproto_dpif *ofproto, stats->n_packets, &orig); } if (xcache) { @@ -110070,7 +110100,7 @@ index 8143dd965f..f20ed9a3f1 100644 } if (rule) { goto out; /* Match. */ -@@ -4879,7 +4886,7 @@ packet_xlate(struct ofproto *ofproto_, struct ofproto_packet_out *opo) +@@ -4879,7 +4896,7 @@ packet_xlate(struct ofproto *ofproto_, struct ofproto_packet_out *opo) if (entry->type == XC_LEARN) { struct ofproto_flow_mod *ofm = entry->learn.ofm; @@ -110079,7 +110109,7 @@ index 8143dd965f..f20ed9a3f1 100644 if (error) { goto error_out; } -@@ -5550,9 +5557,9 @@ ct_zone_timeout_policy_sweep(struct dpif_backer *backer) +@@ -5550,9 +5567,9 @@ ct_zone_timeout_policy_sweep(struct dpif_backer *backer) { if (!ovs_list_is_empty(&backer->ct_tp_kill_list) && time_msec() >= timeout_policy_cleanup_timer) { @@ -110091,7 +110121,7 @@ index 8143dd965f..f20ed9a3f1 100644 if (!ct_dpif_del_timeout_policy(backer->dpif, ct_tp->tp_id)) { ovs_list_remove(&ct_tp->list_node); ct_timeout_policy_destroy(ct_tp, backer->tp_ids); -@@ -5594,6 +5601,7 @@ ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id, +@@ -5594,6 +5611,7 @@ ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id, ct_timeout_policy_unref(backer, ct_zone->ct_tp); ct_zone->ct_tp = ct_tp; ct_tp->ref_count++; @@ -110099,7 +110129,7 @@ index 8143dd965f..f20ed9a3f1 100644 } } else { struct ct_zone *new_ct_zone = ct_zone_alloc(zone_id); -@@ -5601,6 +5609,7 @@ ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id, +@@ -5601,6 +5619,7 @@ ct_set_zone_timeout_policy(const char *datapath_type, uint16_t zone_id, cmap_insert(&backer->ct_zones, &new_ct_zone->node, hash_int(zone_id, 0)); ct_tp->ref_count++; @@ -110107,7 +110137,7 @@ index 8143dd965f..f20ed9a3f1 100644 } } -@@ -5617,6 +5626,7 @@ ct_del_zone_timeout_policy(const char *datapath_type, uint16_t zone_id) +@@ -5617,6 +5636,7 @@ ct_del_zone_timeout_policy(const char *datapath_type, uint16_t zone_id) if (ct_zone) { ct_timeout_policy_unref(backer, ct_zone->ct_tp); ct_zone_remove_and_destroy(backer, ct_zone); @@ -110115,7 +110145,7 @@ index 8143dd965f..f20ed9a3f1 100644 } } -@@ -5818,15 +5828,7 @@ ofproto_dpif_lookup_by_name(const char *name) +@@ -5818,15 +5838,7 @@ ofproto_dpif_lookup_by_name(const char *name) struct ofproto_dpif * ofproto_dpif_lookup_by_uuid(const struct uuid *uuid) { diff --git a/SPECS/openvswitch2.17.spec b/SPECS/openvswitch2.17.spec index f5d4cb3..67e1a08 100644 --- a/SPECS/openvswitch2.17.spec +++ b/SPECS/openvswitch2.17.spec @@ -63,7 +63,7 @@ Summary: Open vSwitch Group: System Environment/Daemons daemon/database/utilities URL: http://www.openvswitch.org/ Version: 2.17.0 -Release: 187%{?dist} +Release: 188%{?dist} # Nearly all of openvswitch is ASL 2.0. The bugtool is LGPLv2+, and the # lib/sflow*.[ch] files are SISSL @@ -749,6 +749,12 @@ exit 0 %endif %changelog +* Fri Sep 20 2024 Open vSwitch CI - 2.17.0-188 +- Merging upstream branch-2.17 [RH git: 6870be62a8] + Commit list: + 72da322f89 ofproto-dpif-mirror: Always revalidate on mirror update. (FDP-788) + + * Mon Sep 16 2024 Open vSwitch CI - 2.17.0-187 - Merging upstream branch-2.17 [RH git: ec192d09a3] Commit list: