Acked-by: Mark Michelson <mmich...@redhat.com>

On 11/1/24 09:29, Dumitru Ceara wrote:
There's no point to process MAC binding updates for non-local datapaths.
If they were local before but not anymore we don't really have a reason
to send any buffered packets for them anymore.

Fixes: bbd5e0d81c16 ("controller: improve buffered packets management")
Signed-off-by: Dumitru Ceara <dce...@redhat.com>
---
  controller/pinctrl.c | 9 ++++++++-
  1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index dfb2560a97..07cd140e02 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -191,6 +191,7 @@ static void init_buffered_packets_ctx(void);
  static void destroy_buffered_packets_ctx(void);
  static void
  run_buffered_binding(const struct sbrec_mac_binding_table *mac_binding_table,
+                     const struct hmap *local_datapaths,
                       struct ovsdb_idl_index *sbrec_port_binding_by_key,
                       struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
                       struct ovsdb_idl_index *sbrec_port_binding_by_name,
@@ -4176,7 +4177,8 @@ pinctrl_run(struct ovsdb_idl_txn *ovnsb_idl_txn,
                    sbrec_port_binding_by_key,
                    sbrec_igmp_groups,
                    sbrec_ip_multicast_opts);
-    run_buffered_binding(mac_binding_table, sbrec_port_binding_by_key,
+    run_buffered_binding(mac_binding_table, local_datapaths,
+                         sbrec_port_binding_by_key,
                           sbrec_datapath_binding_by_key,
                           sbrec_port_binding_by_name,
                           sbrec_mac_binding_by_lport_ip);
@@ -4943,6 +4945,7 @@ run_put_mac_bindings(struct ovsdb_idl_txn *ovnsb_idl_txn,
static void
  run_buffered_binding(const struct sbrec_mac_binding_table *mac_binding_table,
+                     const struct hmap *local_datapaths,
                       struct ovsdb_idl_index *sbrec_port_binding_by_key,
                       struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
                       struct ovsdb_idl_index *sbrec_port_binding_by_name,
@@ -4961,6 +4964,10 @@ run_buffered_binding(const struct 
sbrec_mac_binding_table *mac_binding_table,
              continue;
          }
+ if (!get_local_datapath(local_datapaths, smb->datapath->tunnel_key)) {
+            continue;
+        }
+
          const struct sbrec_port_binding *pb = lport_lookup_by_name(
              sbrec_port_binding_by_name, smb->logical_port);

_______________________________________________
dev mailing list
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to