On Fri, Nov 14, 2025 at 12:03 PM Mark Michelson <[email protected]> wrote:
>
> Thanks Han,
>
> Acked-by: Mark Michelson <[email protected]>

Thanks Ales and Mark. I have merged this patch to main.

Best,
Han

>
> On Wed, Nov 12, 2025 at 7:38 PM Han Zhou <[email protected]> wrote:
> >
> > Change enum chassis_tunnel_type from bit-field values to simple
> > sequential indices to simplify array-based lookups in future
> > optimizations.
> >
> > The preference order (GENEVE > VXLAN) is preserved through numeric
> > comparison.
> >
> > Signed-off-by: Han Zhou <[email protected]>
> > ---
> >  controller/encaps.c         | 9 ++++++---
> >  controller/ovn-controller.h | 2 +-
> >  lib/ovn-util.c              | 4 ++--
> >  lib/ovn-util.h              | 9 +++++----
> >  4 files changed, 14 insertions(+), 10 deletions(-)
> >
> > diff --git a/controller/encaps.c b/controller/encaps.c
> > index 8e2b8e6b82e6..3ed42534b36a 100644
> > --- a/controller/encaps.c
> > +++ b/controller/encaps.c
> > @@ -349,7 +349,9 @@ exit:
> >  }
> >
> >  static bool
> > -chassis_has_type(const struct sbrec_chassis *chassis, uint32_t
tun_type) {
> > +chassis_has_type(const struct sbrec_chassis *chassis,
> > +                 enum chassis_tunnel_type tun_type)
> > +{
> >      for (size_t i = 0; i < chassis->n_encaps; i++) {
> >          if (get_tunnel_type(chassis->encaps[i]->type) == tun_type) {
> >              return true;
> > @@ -363,10 +365,11 @@ preferred_encap(const struct sbrec_chassis
*chassis_rec,
> >                  const struct sbrec_chassis *this_chassis)
> >  {
> >      struct sbrec_encap *best_encap = NULL;
> > -    uint32_t best_type = 0;
> > +    enum chassis_tunnel_type best_type = TUNNEL_TYPE_INVALID;
> >
> >      for (size_t i = 0; i < chassis_rec->n_encaps; i++) {
> > -        uint32_t tun_type =
get_tunnel_type(chassis_rec->encaps[i]->type);
> > +        enum chassis_tunnel_type tun_type =
> > +            get_tunnel_type(chassis_rec->encaps[i]->type);
> >          if (tun_type > best_type && chassis_has_type(this_chassis,
tun_type)) {
> >              best_type = tun_type;
> >              best_encap = chassis_rec->encaps[i];
> > diff --git a/controller/ovn-controller.h b/controller/ovn-controller.h
> > index fafd704df7a5..57d5577bc8f3 100644
> > --- a/controller/ovn-controller.h
> > +++ b/controller/ovn-controller.h
> > @@ -24,6 +24,6 @@ struct ovsrec_bridge_table;
> >  const struct ovsrec_bridge *get_bridge(const struct
ovsrec_bridge_table *,
> >                                         const char *br_name);
> >
> > -uint32_t get_tunnel_type(const char *name);
> > +enum chassis_tunnel_type get_tunnel_type(const char *name);
> >
> >  #endif /* controller/ovn-controller.h */
> > diff --git a/lib/ovn-util.c b/lib/ovn-util.c
> > index 1b75579a8f7d..cec029e42d25 100644
> > --- a/lib/ovn-util.c
> > +++ b/lib/ovn-util.c
> > @@ -946,7 +946,7 @@ ovn_get_internal_version(void)
> >                       N_OVNACTS, OVN_INTERNAL_MINOR_VER);
> >  }
> >
> > -uint32_t
> > +enum chassis_tunnel_type
> >  get_tunnel_type(const char *name)
> >  {
> >      if (!strcmp(name, "geneve")) {
> > @@ -955,7 +955,7 @@ get_tunnel_type(const char *name)
> >          return VXLAN;
> >      }
> >
> > -    return 0;
> > +    return TUNNEL_TYPE_INVALID;
> >  }
> >
> >  const struct ovsrec_bridge *
> > diff --git a/lib/ovn-util.h b/lib/ovn-util.h
> > index aa1a878bbd23..611f80f1e6f6 100644
> > --- a/lib/ovn-util.h
> > +++ b/lib/ovn-util.h
> > @@ -345,14 +345,15 @@ hash_add_in6_addr(uint32_t hash, const struct
in6_addr *addr)
> >      return hash;
> >  }
> >
> > -/* Must be a bit-field ordered from most-preferred (higher number) to
> > +/* Tunnel types ordered from most-preferred (higher number) to
> >   * least-preferred (lower number). */
> >  enum chassis_tunnel_type {
> > -    GENEVE = 1 << 1,
> > -    VXLAN  = 1 << 0
> > +    TUNNEL_TYPE_INVALID = -1,
> > +    VXLAN  = 0,
> > +    GENEVE = 1
> >  };
> >
> > -uint32_t get_tunnel_type(const char *name);
> > +enum chassis_tunnel_type get_tunnel_type(const char *name);
> >
> >  struct ovsrec_bridge_table;
> >  const struct ovsrec_bridge *get_bridge(const struct
ovsrec_bridge_table *,
> > --
> > 2.38.1
> >
> > _______________________________________________
> > dev mailing list
> > [email protected]
> > https://mail.openvswitch.org/mailman/listinfo/ovs-dev
> >
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to