diff mbox series

[ovs-dev] ovn-controller: Remove has_local_l3gateway from struct local_datapath.

Message ID 20210802175626.2917748-1-hzhou@ovn.org
State Accepted
Headers show
Series [ovs-dev] ovn-controller: Remove has_local_l3gateway from struct local_datapath. | expand

Checks

Context Check Description
ovsrobot/apply-robot success apply and check: success

Commit Message

Han Zhou Aug. 2, 2021, 5:56 p.m. UTC
Now this field is not really useful. Remove all the related code.

Signed-off-by: Han Zhou <hzhou@ovn.org>
---
 controller/binding.c        | 44 ++++++++++++-------------------------
 controller/ovn-controller.h |  4 ----
 controller/pinctrl.c        |  2 +-
 3 files changed, 15 insertions(+), 35 deletions(-)

Comments

Numan Siddique Aug. 2, 2021, 6:45 p.m. UTC | #1
On Mon, Aug 2, 2021 at 1:57 PM Han Zhou <hzhou@ovn.org> wrote:
>
> Now this field is not really useful. Remove all the related code.
>
> Signed-off-by: Han Zhou <hzhou@ovn.org>

Acked-by: Numan Siddique <numans@ovn.org>

Thanks for removing this.  Can you please update the commit message on why
it is not used anymore ? or what was the reason it was added earlier ? For more
clarity in case you can figure it out easily.

I'm fine otherwise.

Thanks
Numan

> ---
>  controller/binding.c        | 44 ++++++++++++-------------------------
>  controller/ovn-controller.h |  4 ----
>  controller/pinctrl.c        |  2 +-
>  3 files changed, 15 insertions(+), 35 deletions(-)
>
> diff --git a/controller/binding.c b/controller/binding.c
> index d50f3affa..0bf6091f9 100644
> --- a/controller/binding.c
> +++ b/controller/binding.c
> @@ -91,16 +91,12 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
>                       struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
>                       struct ovsdb_idl_index *sbrec_port_binding_by_name,
>                       const struct sbrec_datapath_binding *datapath,
> -                     bool has_local_l3gateway, int depth,
> -                     struct hmap *local_datapaths,
> +                     int depth, struct hmap *local_datapaths,
>                       struct hmap *tracked_datapaths)
>  {
>      uint32_t dp_key = datapath->tunnel_key;
>      struct local_datapath *ld = get_local_datapath(local_datapaths, dp_key);
>      if (ld) {
> -        if (has_local_l3gateway) {
> -            ld->has_local_l3gateway = true;
> -        }
>          return;
>      }
>
> @@ -109,7 +105,6 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
>      ld->datapath = datapath;
>      ld->localnet_port = NULL;
>      shash_init(&ld->external_ports);
> -    ld->has_local_l3gateway = has_local_l3gateway;
>
>      if (tracked_datapaths) {
>          struct tracked_binding_datapath *tdp =
> @@ -158,7 +153,7 @@ add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
>                          add_local_datapath__(sbrec_datapath_binding_by_key,
>                                               sbrec_port_binding_by_datapath,
>                                               sbrec_port_binding_by_name,
> -                                             peer->datapath, false,
> +                                             peer->datapath,
>                                               depth + 1, local_datapaths,
>                                               tracked_datapaths);
>                      }
> @@ -183,13 +178,13 @@ add_local_datapath(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
>                     struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
>                     struct ovsdb_idl_index *sbrec_port_binding_by_name,
>                     const struct sbrec_datapath_binding *datapath,
> -                   bool has_local_l3gateway, struct hmap *local_datapaths,
> +                   struct hmap *local_datapaths,
>                     struct hmap *tracked_datapaths)
>  {
>      add_local_datapath__(sbrec_datapath_binding_by_key,
>                           sbrec_port_binding_by_datapath,
>                           sbrec_port_binding_by_name,
> -                         datapath, has_local_l3gateway, 0, local_datapaths,
> +                         datapath, 0, local_datapaths,
>                           tracked_datapaths);
>  }
>
> @@ -1267,7 +1262,7 @@ consider_vif_lport_(const struct sbrec_port_binding *pb,
>              add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
>                                 b_ctx_in->sbrec_port_binding_by_datapath,
>                                 b_ctx_in->sbrec_port_binding_by_name,
> -                               pb->datapath, false,
> +                               pb->datapath,
>                                 b_ctx_out->local_datapaths,
>                                 b_ctx_out->tracked_dp_bindings);
>              update_related_lport(pb, b_ctx_out);
> @@ -1473,7 +1468,6 @@ consider_virtual_lport(const struct sbrec_port_binding *pb,
>  static bool
>  consider_nonvif_lport_(const struct sbrec_port_binding *pb,
>                         bool our_chassis,
> -                       bool has_local_l3gateway,
>                         struct binding_ctx_in *b_ctx_in,
>                         struct binding_ctx_out *b_ctx_out)
>  {
> @@ -1482,7 +1476,7 @@ consider_nonvif_lport_(const struct sbrec_port_binding *pb,
>          add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
>                             b_ctx_in->sbrec_port_binding_by_datapath,
>                             b_ctx_in->sbrec_port_binding_by_name,
> -                           pb->datapath, has_local_l3gateway,
> +                           pb->datapath,
>                             b_ctx_out->local_datapaths,
>                             b_ctx_out->tracked_dp_bindings);
>
> @@ -1509,7 +1503,7 @@ consider_l2gw_lport(const struct sbrec_port_binding *pb,
>      bool our_chassis = chassis_id && !strcmp(chassis_id,
>                                               b_ctx_in->chassis_rec->name);
>
> -    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in, b_ctx_out);
> +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
>  }
>
>  static bool
> @@ -1521,7 +1515,7 @@ consider_l3gw_lport(const struct sbrec_port_binding *pb,
>      bool our_chassis = chassis_id && !strcmp(chassis_id,
>                                               b_ctx_in->chassis_rec->name);
>
> -    return consider_nonvif_lport_(pb, our_chassis, true, b_ctx_in, b_ctx_out);
> +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
>  }
>
>  static void
> @@ -1565,13 +1559,13 @@ consider_ha_lport(const struct sbrec_port_binding *pb,
>          add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
>                             b_ctx_in->sbrec_port_binding_by_datapath,
>                             b_ctx_in->sbrec_port_binding_by_name,
> -                           pb->datapath, false,
> +                           pb->datapath,
>                             b_ctx_out->local_datapaths,
>                             b_ctx_out->tracked_dp_bindings);
>          update_related_lport(pb, b_ctx_out);
>      }
>
> -    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in, b_ctx_out);
> +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
>  }
>
>  static bool
> @@ -1907,7 +1901,7 @@ add_local_datapath_peer_port(const struct sbrec_port_binding *pb,
>          add_local_datapath__(b_ctx_in->sbrec_datapath_binding_by_key,
>                               b_ctx_in->sbrec_port_binding_by_datapath,
>                               b_ctx_in->sbrec_port_binding_by_name,
> -                             peer->datapath, false,
> +                             peer->datapath,
>                               1, b_ctx_out->local_datapaths,
>                               b_ctx_out->tracked_dp_bindings);
>          return;
> @@ -1967,7 +1961,6 @@ remove_local_datapath_peer_port(const struct sbrec_port_binding *pb,
>
>  static void
>  remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
> -                              const struct sbrec_chassis *chassis_rec,
>                                struct binding_ctx_out *b_ctx_out,
>                                struct local_datapath *ld)
>  {
> @@ -1983,14 +1976,6 @@ remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
>      } else if (!strcmp(pb->type, "external")) {
>          shash_find_and_delete(&ld->external_ports, pb->logical_port);
>      }
> -
> -    if (!strcmp(pb->type, "l3gateway")) {
> -        const char *chassis_id = smap_get(&pb->options,
> -                                          "l3gateway-chassis");
> -        if (chassis_id && !strcmp(chassis_id, chassis_rec->name)) {
> -            ld->has_local_l3gateway = false;
> -        }
> -    }
>  }
>
>  static void
> @@ -2100,7 +2085,6 @@ consider_iface_release(const struct ovsrec_interface *iface_rec,
>                                 b_lport->pb->datapath->tunnel_key);
>          if (ld) {
>              remove_pb_from_local_datapath(b_lport->pb,
> -                                          b_ctx_in->chassis_rec,
>                                            b_ctx_out, ld);
>          }
>
> @@ -2307,7 +2291,7 @@ handle_deleted_lport(const struct sbrec_port_binding *pb,
>          get_local_datapath(b_ctx_out->local_datapaths,
>                             pb->datapath->tunnel_key);
>      if (ld) {
> -        remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec,
> +        remove_pb_from_local_datapath(pb,
>                                        b_ctx_out, ld);
>          return;
>      }
> @@ -2320,7 +2304,7 @@ handle_deleted_lport(const struct sbrec_port_binding *pb,
>          ld = get_local_datapath(b_ctx_out->local_datapaths,
>                                  pb->datapath->tunnel_key);
>          if (ld) {
> -            remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec, b_ctx_out,
> +            remove_pb_from_local_datapath(pb, b_ctx_out,
>                                            ld);
>          }
>      }
> @@ -2609,7 +2593,7 @@ delete_done:
>                              b_ctx_in->sbrec_datapath_binding_by_key,
>                              b_ctx_in->sbrec_port_binding_by_datapath,
>                              b_ctx_in->sbrec_port_binding_by_name,
> -                            pb->datapath, false,
> +                            pb->datapath,
>                              b_ctx_out->local_datapaths,
>                              b_ctx_out->tracked_dp_bindings);
>                      }
> diff --git a/controller/ovn-controller.h b/controller/ovn-controller.h
> index b864ed0fa..a3aa6ebd3 100644
> --- a/controller/ovn-controller.h
> +++ b/controller/ovn-controller.h
> @@ -56,10 +56,6 @@ struct local_datapath {
>      /* The localnet port in this datapath, if any (at most one is allowed). */
>      const struct sbrec_port_binding *localnet_port;
>
> -    /* True if this datapath contains an l3gateway port located on this
> -     * hypervisor. */
> -    bool has_local_l3gateway;
> -
>      struct {
>          const struct sbrec_port_binding *local;
>          const struct sbrec_port_binding *remote;
> diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> index 8e4c4d18c..d7166b0a9 100644
> --- a/controller/pinctrl.c
> +++ b/controller/pinctrl.c
> @@ -5521,7 +5521,7 @@ get_localnet_vifs_l3gwports(
>          sbrec_port_binding_index_set_datapath(target, ld->datapath);
>          SBREC_PORT_BINDING_FOR_EACH_EQUAL (pb, target,
>                                             sbrec_port_binding_by_datapath) {
> -            if ((ld->has_local_l3gateway && !strcmp(pb->type, "l3gateway"))
> +            if (!strcmp(pb->type, "l3gateway")
>                  || !strcmp(pb->type, "patch")) {
>                  sset_add(local_l3gw_ports, pb->logical_port);
>              }
> --
> 2.30.2
>
> _______________________________________________
> dev mailing list
> dev@openvswitch.org
> https://mail.openvswitch.org/mailman/listinfo/ovs-dev
>
Han Zhou Aug. 2, 2021, 7:09 p.m. UTC | #2
On Mon, Aug 2, 2021 at 11:45 AM Numan Siddique <numans@ovn.org> wrote:
>
> On Mon, Aug 2, 2021 at 1:57 PM Han Zhou <hzhou@ovn.org> wrote:
> >
> > Now this field is not really useful. Remove all the related code.
> >
> > Signed-off-by: Han Zhou <hzhou@ovn.org>
>
> Acked-by: Numan Siddique <numans@ovn.org>
>
> Thanks for removing this.  Can you please update the commit message on why
> it is not used anymore ? or what was the reason it was added earlier ?
For more
> clarity in case you can figure it out easily.
>
> I'm fine otherwise.
>

Thanks Numan. I updated the commit message with more details and applied.

> Thanks
> Numan
>
> > ---
> >  controller/binding.c        | 44 ++++++++++++-------------------------
> >  controller/ovn-controller.h |  4 ----
> >  controller/pinctrl.c        |  2 +-
> >  3 files changed, 15 insertions(+), 35 deletions(-)
> >
> > diff --git a/controller/binding.c b/controller/binding.c
> > index d50f3affa..0bf6091f9 100644
> > --- a/controller/binding.c
> > +++ b/controller/binding.c
> > @@ -91,16 +91,12 @@ add_local_datapath__(struct ovsdb_idl_index
*sbrec_datapath_binding_by_key,
> >                       struct ovsdb_idl_index
*sbrec_port_binding_by_datapath,
> >                       struct ovsdb_idl_index
*sbrec_port_binding_by_name,
> >                       const struct sbrec_datapath_binding *datapath,
> > -                     bool has_local_l3gateway, int depth,
> > -                     struct hmap *local_datapaths,
> > +                     int depth, struct hmap *local_datapaths,
> >                       struct hmap *tracked_datapaths)
> >  {
> >      uint32_t dp_key = datapath->tunnel_key;
> >      struct local_datapath *ld = get_local_datapath(local_datapaths,
dp_key);
> >      if (ld) {
> > -        if (has_local_l3gateway) {
> > -            ld->has_local_l3gateway = true;
> > -        }
> >          return;
> >      }
> >
> > @@ -109,7 +105,6 @@ add_local_datapath__(struct ovsdb_idl_index
*sbrec_datapath_binding_by_key,
> >      ld->datapath = datapath;
> >      ld->localnet_port = NULL;
> >      shash_init(&ld->external_ports);
> > -    ld->has_local_l3gateway = has_local_l3gateway;
> >
> >      if (tracked_datapaths) {
> >          struct tracked_binding_datapath *tdp =
> > @@ -158,7 +153,7 @@ add_local_datapath__(struct ovsdb_idl_index
*sbrec_datapath_binding_by_key,
> >
 add_local_datapath__(sbrec_datapath_binding_by_key,
> >
sbrec_port_binding_by_datapath,
> >
sbrec_port_binding_by_name,
> > -                                             peer->datapath, false,
> > +                                             peer->datapath,
> >                                               depth + 1,
local_datapaths,
> >                                               tracked_datapaths);
> >                      }
> > @@ -183,13 +178,13 @@ add_local_datapath(struct ovsdb_idl_index
*sbrec_datapath_binding_by_key,
> >                     struct ovsdb_idl_index
*sbrec_port_binding_by_datapath,
> >                     struct ovsdb_idl_index *sbrec_port_binding_by_name,
> >                     const struct sbrec_datapath_binding *datapath,
> > -                   bool has_local_l3gateway, struct hmap
*local_datapaths,
> > +                   struct hmap *local_datapaths,
> >                     struct hmap *tracked_datapaths)
> >  {
> >      add_local_datapath__(sbrec_datapath_binding_by_key,
> >                           sbrec_port_binding_by_datapath,
> >                           sbrec_port_binding_by_name,
> > -                         datapath, has_local_l3gateway, 0,
local_datapaths,
> > +                         datapath, 0, local_datapaths,
> >                           tracked_datapaths);
> >  }
> >
> > @@ -1267,7 +1262,7 @@ consider_vif_lport_(const struct
sbrec_port_binding *pb,
> >              add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
> >
b_ctx_in->sbrec_port_binding_by_datapath,
> >                                 b_ctx_in->sbrec_port_binding_by_name,
> > -                               pb->datapath, false,
> > +                               pb->datapath,
> >                                 b_ctx_out->local_datapaths,
> >                                 b_ctx_out->tracked_dp_bindings);
> >              update_related_lport(pb, b_ctx_out);
> > @@ -1473,7 +1468,6 @@ consider_virtual_lport(const struct
sbrec_port_binding *pb,
> >  static bool
> >  consider_nonvif_lport_(const struct sbrec_port_binding *pb,
> >                         bool our_chassis,
> > -                       bool has_local_l3gateway,
> >                         struct binding_ctx_in *b_ctx_in,
> >                         struct binding_ctx_out *b_ctx_out)
> >  {
> > @@ -1482,7 +1476,7 @@ consider_nonvif_lport_(const struct
sbrec_port_binding *pb,
> >          add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
> >                             b_ctx_in->sbrec_port_binding_by_datapath,
> >                             b_ctx_in->sbrec_port_binding_by_name,
> > -                           pb->datapath, has_local_l3gateway,
> > +                           pb->datapath,
> >                             b_ctx_out->local_datapaths,
> >                             b_ctx_out->tracked_dp_bindings);
> >
> > @@ -1509,7 +1503,7 @@ consider_l2gw_lport(const struct
sbrec_port_binding *pb,
> >      bool our_chassis = chassis_id && !strcmp(chassis_id,
> >
b_ctx_in->chassis_rec->name);
> >
> > -    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in,
b_ctx_out);
> > +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in,
b_ctx_out);
> >  }
> >
> >  static bool
> > @@ -1521,7 +1515,7 @@ consider_l3gw_lport(const struct
sbrec_port_binding *pb,
> >      bool our_chassis = chassis_id && !strcmp(chassis_id,
> >
b_ctx_in->chassis_rec->name);
> >
> > -    return consider_nonvif_lport_(pb, our_chassis, true, b_ctx_in,
b_ctx_out);
> > +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in,
b_ctx_out);
> >  }
> >
> >  static void
> > @@ -1565,13 +1559,13 @@ consider_ha_lport(const struct
sbrec_port_binding *pb,
> >          add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
> >                             b_ctx_in->sbrec_port_binding_by_datapath,
> >                             b_ctx_in->sbrec_port_binding_by_name,
> > -                           pb->datapath, false,
> > +                           pb->datapath,
> >                             b_ctx_out->local_datapaths,
> >                             b_ctx_out->tracked_dp_bindings);
> >          update_related_lport(pb, b_ctx_out);
> >      }
> >
> > -    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in,
b_ctx_out);
> > +    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in,
b_ctx_out);
> >  }
> >
> >  static bool
> > @@ -1907,7 +1901,7 @@ add_local_datapath_peer_port(const struct
sbrec_port_binding *pb,
> >          add_local_datapath__(b_ctx_in->sbrec_datapath_binding_by_key,
> >                               b_ctx_in->sbrec_port_binding_by_datapath,
> >                               b_ctx_in->sbrec_port_binding_by_name,
> > -                             peer->datapath, false,
> > +                             peer->datapath,
> >                               1, b_ctx_out->local_datapaths,
> >                               b_ctx_out->tracked_dp_bindings);
> >          return;
> > @@ -1967,7 +1961,6 @@ remove_local_datapath_peer_port(const struct
sbrec_port_binding *pb,
> >
> >  static void
> >  remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
> > -                              const struct sbrec_chassis *chassis_rec,
> >                                struct binding_ctx_out *b_ctx_out,
> >                                struct local_datapath *ld)
> >  {
> > @@ -1983,14 +1976,6 @@ remove_pb_from_local_datapath(const struct
sbrec_port_binding *pb,
> >      } else if (!strcmp(pb->type, "external")) {
> >          shash_find_and_delete(&ld->external_ports, pb->logical_port);
> >      }
> > -
> > -    if (!strcmp(pb->type, "l3gateway")) {
> > -        const char *chassis_id = smap_get(&pb->options,
> > -                                          "l3gateway-chassis");
> > -        if (chassis_id && !strcmp(chassis_id, chassis_rec->name)) {
> > -            ld->has_local_l3gateway = false;
> > -        }
> > -    }
> >  }
> >
> >  static void
> > @@ -2100,7 +2085,6 @@ consider_iface_release(const struct
ovsrec_interface *iface_rec,
> >                                 b_lport->pb->datapath->tunnel_key);
> >          if (ld) {
> >              remove_pb_from_local_datapath(b_lport->pb,
> > -                                          b_ctx_in->chassis_rec,
> >                                            b_ctx_out, ld);
> >          }
> >
> > @@ -2307,7 +2291,7 @@ handle_deleted_lport(const struct
sbrec_port_binding *pb,
> >          get_local_datapath(b_ctx_out->local_datapaths,
> >                             pb->datapath->tunnel_key);
> >      if (ld) {
> > -        remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec,
> > +        remove_pb_from_local_datapath(pb,
> >                                        b_ctx_out, ld);
> >          return;
> >      }
> > @@ -2320,7 +2304,7 @@ handle_deleted_lport(const struct
sbrec_port_binding *pb,
> >          ld = get_local_datapath(b_ctx_out->local_datapaths,
> >                                  pb->datapath->tunnel_key);
> >          if (ld) {
> > -            remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec,
b_ctx_out,
> > +            remove_pb_from_local_datapath(pb, b_ctx_out,
> >                                            ld);
> >          }
> >      }
> > @@ -2609,7 +2593,7 @@ delete_done:
> >                              b_ctx_in->sbrec_datapath_binding_by_key,
> >                              b_ctx_in->sbrec_port_binding_by_datapath,
> >                              b_ctx_in->sbrec_port_binding_by_name,
> > -                            pb->datapath, false,
> > +                            pb->datapath,
> >                              b_ctx_out->local_datapaths,
> >                              b_ctx_out->tracked_dp_bindings);
> >                      }
> > diff --git a/controller/ovn-controller.h b/controller/ovn-controller.h
> > index b864ed0fa..a3aa6ebd3 100644
> > --- a/controller/ovn-controller.h
> > +++ b/controller/ovn-controller.h
> > @@ -56,10 +56,6 @@ struct local_datapath {
> >      /* The localnet port in this datapath, if any (at most one is
allowed). */
> >      const struct sbrec_port_binding *localnet_port;
> >
> > -    /* True if this datapath contains an l3gateway port located on this
> > -     * hypervisor. */
> > -    bool has_local_l3gateway;
> > -
> >      struct {
> >          const struct sbrec_port_binding *local;
> >          const struct sbrec_port_binding *remote;
> > diff --git a/controller/pinctrl.c b/controller/pinctrl.c
> > index 8e4c4d18c..d7166b0a9 100644
> > --- a/controller/pinctrl.c
> > +++ b/controller/pinctrl.c
> > @@ -5521,7 +5521,7 @@ get_localnet_vifs_l3gwports(
> >          sbrec_port_binding_index_set_datapath(target, ld->datapath);
> >          SBREC_PORT_BINDING_FOR_EACH_EQUAL (pb, target,
> >
sbrec_port_binding_by_datapath) {
> > -            if ((ld->has_local_l3gateway && !strcmp(pb->type,
"l3gateway"))
> > +            if (!strcmp(pb->type, "l3gateway")
> >                  || !strcmp(pb->type, "patch")) {
> >                  sset_add(local_l3gw_ports, pb->logical_port);
> >              }
> > --
> > 2.30.2
> >
> > _______________________________________________
> > dev mailing list
> > dev@openvswitch.org
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
diff mbox series

Patch

diff --git a/controller/binding.c b/controller/binding.c
index d50f3affa..0bf6091f9 100644
--- a/controller/binding.c
+++ b/controller/binding.c
@@ -91,16 +91,12 @@  add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
                      struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
                      struct ovsdb_idl_index *sbrec_port_binding_by_name,
                      const struct sbrec_datapath_binding *datapath,
-                     bool has_local_l3gateway, int depth,
-                     struct hmap *local_datapaths,
+                     int depth, struct hmap *local_datapaths,
                      struct hmap *tracked_datapaths)
 {
     uint32_t dp_key = datapath->tunnel_key;
     struct local_datapath *ld = get_local_datapath(local_datapaths, dp_key);
     if (ld) {
-        if (has_local_l3gateway) {
-            ld->has_local_l3gateway = true;
-        }
         return;
     }
 
@@ -109,7 +105,6 @@  add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
     ld->datapath = datapath;
     ld->localnet_port = NULL;
     shash_init(&ld->external_ports);
-    ld->has_local_l3gateway = has_local_l3gateway;
 
     if (tracked_datapaths) {
         struct tracked_binding_datapath *tdp =
@@ -158,7 +153,7 @@  add_local_datapath__(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
                         add_local_datapath__(sbrec_datapath_binding_by_key,
                                              sbrec_port_binding_by_datapath,
                                              sbrec_port_binding_by_name,
-                                             peer->datapath, false,
+                                             peer->datapath,
                                              depth + 1, local_datapaths,
                                              tracked_datapaths);
                     }
@@ -183,13 +178,13 @@  add_local_datapath(struct ovsdb_idl_index *sbrec_datapath_binding_by_key,
                    struct ovsdb_idl_index *sbrec_port_binding_by_datapath,
                    struct ovsdb_idl_index *sbrec_port_binding_by_name,
                    const struct sbrec_datapath_binding *datapath,
-                   bool has_local_l3gateway, struct hmap *local_datapaths,
+                   struct hmap *local_datapaths,
                    struct hmap *tracked_datapaths)
 {
     add_local_datapath__(sbrec_datapath_binding_by_key,
                          sbrec_port_binding_by_datapath,
                          sbrec_port_binding_by_name,
-                         datapath, has_local_l3gateway, 0, local_datapaths,
+                         datapath, 0, local_datapaths,
                          tracked_datapaths);
 }
 
@@ -1267,7 +1262,7 @@  consider_vif_lport_(const struct sbrec_port_binding *pb,
             add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
                                b_ctx_in->sbrec_port_binding_by_datapath,
                                b_ctx_in->sbrec_port_binding_by_name,
-                               pb->datapath, false,
+                               pb->datapath,
                                b_ctx_out->local_datapaths,
                                b_ctx_out->tracked_dp_bindings);
             update_related_lport(pb, b_ctx_out);
@@ -1473,7 +1468,6 @@  consider_virtual_lport(const struct sbrec_port_binding *pb,
 static bool
 consider_nonvif_lport_(const struct sbrec_port_binding *pb,
                        bool our_chassis,
-                       bool has_local_l3gateway,
                        struct binding_ctx_in *b_ctx_in,
                        struct binding_ctx_out *b_ctx_out)
 {
@@ -1482,7 +1476,7 @@  consider_nonvif_lport_(const struct sbrec_port_binding *pb,
         add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
                            b_ctx_in->sbrec_port_binding_by_datapath,
                            b_ctx_in->sbrec_port_binding_by_name,
-                           pb->datapath, has_local_l3gateway,
+                           pb->datapath,
                            b_ctx_out->local_datapaths,
                            b_ctx_out->tracked_dp_bindings);
 
@@ -1509,7 +1503,7 @@  consider_l2gw_lport(const struct sbrec_port_binding *pb,
     bool our_chassis = chassis_id && !strcmp(chassis_id,
                                              b_ctx_in->chassis_rec->name);
 
-    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in, b_ctx_out);
+    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
 }
 
 static bool
@@ -1521,7 +1515,7 @@  consider_l3gw_lport(const struct sbrec_port_binding *pb,
     bool our_chassis = chassis_id && !strcmp(chassis_id,
                                              b_ctx_in->chassis_rec->name);
 
-    return consider_nonvif_lport_(pb, our_chassis, true, b_ctx_in, b_ctx_out);
+    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
 }
 
 static void
@@ -1565,13 +1559,13 @@  consider_ha_lport(const struct sbrec_port_binding *pb,
         add_local_datapath(b_ctx_in->sbrec_datapath_binding_by_key,
                            b_ctx_in->sbrec_port_binding_by_datapath,
                            b_ctx_in->sbrec_port_binding_by_name,
-                           pb->datapath, false,
+                           pb->datapath,
                            b_ctx_out->local_datapaths,
                            b_ctx_out->tracked_dp_bindings);
         update_related_lport(pb, b_ctx_out);
     }
 
-    return consider_nonvif_lport_(pb, our_chassis, false, b_ctx_in, b_ctx_out);
+    return consider_nonvif_lport_(pb, our_chassis, b_ctx_in, b_ctx_out);
 }
 
 static bool
@@ -1907,7 +1901,7 @@  add_local_datapath_peer_port(const struct sbrec_port_binding *pb,
         add_local_datapath__(b_ctx_in->sbrec_datapath_binding_by_key,
                              b_ctx_in->sbrec_port_binding_by_datapath,
                              b_ctx_in->sbrec_port_binding_by_name,
-                             peer->datapath, false,
+                             peer->datapath,
                              1, b_ctx_out->local_datapaths,
                              b_ctx_out->tracked_dp_bindings);
         return;
@@ -1967,7 +1961,6 @@  remove_local_datapath_peer_port(const struct sbrec_port_binding *pb,
 
 static void
 remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
-                              const struct sbrec_chassis *chassis_rec,
                               struct binding_ctx_out *b_ctx_out,
                               struct local_datapath *ld)
 {
@@ -1983,14 +1976,6 @@  remove_pb_from_local_datapath(const struct sbrec_port_binding *pb,
     } else if (!strcmp(pb->type, "external")) {
         shash_find_and_delete(&ld->external_ports, pb->logical_port);
     }
-
-    if (!strcmp(pb->type, "l3gateway")) {
-        const char *chassis_id = smap_get(&pb->options,
-                                          "l3gateway-chassis");
-        if (chassis_id && !strcmp(chassis_id, chassis_rec->name)) {
-            ld->has_local_l3gateway = false;
-        }
-    }
 }
 
 static void
@@ -2100,7 +2085,6 @@  consider_iface_release(const struct ovsrec_interface *iface_rec,
                                b_lport->pb->datapath->tunnel_key);
         if (ld) {
             remove_pb_from_local_datapath(b_lport->pb,
-                                          b_ctx_in->chassis_rec,
                                           b_ctx_out, ld);
         }
 
@@ -2307,7 +2291,7 @@  handle_deleted_lport(const struct sbrec_port_binding *pb,
         get_local_datapath(b_ctx_out->local_datapaths,
                            pb->datapath->tunnel_key);
     if (ld) {
-        remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec,
+        remove_pb_from_local_datapath(pb,
                                       b_ctx_out, ld);
         return;
     }
@@ -2320,7 +2304,7 @@  handle_deleted_lport(const struct sbrec_port_binding *pb,
         ld = get_local_datapath(b_ctx_out->local_datapaths,
                                 pb->datapath->tunnel_key);
         if (ld) {
-            remove_pb_from_local_datapath(pb, b_ctx_in->chassis_rec, b_ctx_out,
+            remove_pb_from_local_datapath(pb, b_ctx_out,
                                           ld);
         }
     }
@@ -2609,7 +2593,7 @@  delete_done:
                             b_ctx_in->sbrec_datapath_binding_by_key,
                             b_ctx_in->sbrec_port_binding_by_datapath,
                             b_ctx_in->sbrec_port_binding_by_name,
-                            pb->datapath, false,
+                            pb->datapath,
                             b_ctx_out->local_datapaths,
                             b_ctx_out->tracked_dp_bindings);
                     }
diff --git a/controller/ovn-controller.h b/controller/ovn-controller.h
index b864ed0fa..a3aa6ebd3 100644
--- a/controller/ovn-controller.h
+++ b/controller/ovn-controller.h
@@ -56,10 +56,6 @@  struct local_datapath {
     /* The localnet port in this datapath, if any (at most one is allowed). */
     const struct sbrec_port_binding *localnet_port;
 
-    /* True if this datapath contains an l3gateway port located on this
-     * hypervisor. */
-    bool has_local_l3gateway;
-
     struct {
         const struct sbrec_port_binding *local;
         const struct sbrec_port_binding *remote;
diff --git a/controller/pinctrl.c b/controller/pinctrl.c
index 8e4c4d18c..d7166b0a9 100644
--- a/controller/pinctrl.c
+++ b/controller/pinctrl.c
@@ -5521,7 +5521,7 @@  get_localnet_vifs_l3gwports(
         sbrec_port_binding_index_set_datapath(target, ld->datapath);
         SBREC_PORT_BINDING_FOR_EACH_EQUAL (pb, target,
                                            sbrec_port_binding_by_datapath) {
-            if ((ld->has_local_l3gateway && !strcmp(pb->type, "l3gateway"))
+            if (!strcmp(pb->type, "l3gateway")
                 || !strcmp(pb->type, "patch")) {
                 sset_add(local_l3gw_ports, pb->logical_port);
             }