On 4/24/26 3:23 PM, Ales Musil wrote:
> For FDB entries with multiple paths (ECMP/multi-homed), create an
> OpenFlow select group with one bucket per path. Each bucket loads
> its binding_key into MFF_LOG_REMOTE_OUTPORT with the nexthop weight
> from the kernel. Single-path entries continue to use a direct load.
>
> Reported-at: https://redhat.atlassian.net/browse/FDP-3068
> Assisted-by: Claude Opus 4.6, Claude Code
> Signed-off-by: Ales Musil <[email protected]>
> ---
Hi Ales,
> NEWS | 3 +
> controller/evpn-fdb.c | 161 ++++++++++++++++++++++++++++---
> controller/evpn-fdb.h | 25 ++++-
> controller/ovn-controller.c | 17 +++-
> controller/physical.c | 80 ++++++++++++---
> controller/physical.h | 3 +
> tests/ovn-inc-proc-graph-dump.at | 2 +-
> tests/ovn-macros.at | 13 +++
> tests/system-ovn.at | 144 ++++++++++++++++++++++++---
> 9 files changed, 399 insertions(+), 49 deletions(-)
>
...
> static void
> @@ -4784,6 +4786,8 @@ static void init_physical_ctx(struct engine_node *node,
> struct ed_type_evpn_arp *earp_data =
> engine_get_input_data("evpn_arp", node);
>
> + struct ed_type_pflow_output *pfo = engine_get_internal_data(node);
> +
This feels a bit like a hack, working around the fact that the node is
not processed yet. We do have pfo in all callers of this function, we
should just pass it along.
> parse_encap_ips(ovs_table, &p_ctx->n_encap_ips, &p_ctx->encap_ips);
> p_ctx->sbrec_port_binding_by_name = sbrec_port_binding_by_name;
> p_ctx->sbrec_port_binding_by_datapath = sbrec_port_binding_by_datapath;
> @@ -4808,6 +4812,7 @@ static void init_physical_ctx(struct engine_node *node,
> p_ctx->evpn_multicast_groups = &eb_data->multicast_groups;
> p_ctx->evpn_fdbs = &efdb_data->fdbs;
> p_ctx->evpn_arps = &earp_data->arps;
> + p_ctx->group_table = pfo->group_table;
>
I updated this to pass 'pfo' as argument and applied the patch to main,
thanks!
Regards,
Dumitru
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev