From: Steven Luong Date: Wed, 19 Mar 2025 18:46:26 +0000 (-0700) Subject: l2: stale cached value input->bd_seq_num X-Git-Tag: v26.02-rc0~156 X-Git-Url: https://gerrit.fd.io/r/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F18%2F42518%2F3;p=vpp.git l2: stale cached value input->bd_seq_num bd_seq_num is cached to l2_input_config to save a few cycles for lookup. However, when the value is changed, we forgot to update the cache. Type: fix Fixes: 47a3d9975fa3af7a7537b565d6511dadc0df61fb Change-Id: I553c61f4b072c74a6bc7fe1bf56d98ec881c833f Signed-off-by: Steven Luong --- diff --git a/src/vnet/l2/l2_fib.c b/src/vnet/l2/l2_fib.c index 3dcd1e7ae26..33728bdc5e7 100644 --- a/src/vnet/l2/l2_fib.c +++ b/src/vnet/l2/l2_fib.c @@ -893,14 +893,22 @@ l2fib_flush_int_mac (vlib_main_t * vm, u32 sw_if_index) l2fib_start_ager_scan (vm); } +static void +l2fib_bd_seq_num_inc (u32 bd_index) +{ + l2_bridge_domain_t *bd_config = l2input_bd_config (bd_index); + + bd_config->seq_num += 1; + bd_input_walk (bd_index, l2input_recache, NULL); +} + /** Flush all non static MACs in a bridge domain */ void l2fib_flush_bd_mac (vlib_main_t * vm, u32 bd_index) { - l2_bridge_domain_t *bd_config = l2input_bd_config (bd_index); - bd_config->seq_num += 1; + l2fib_bd_seq_num_inc (bd_index); l2fib_start_ager_scan (vm); } @@ -910,10 +918,16 @@ l2fib_flush_bd_mac (vlib_main_t * vm, u32 bd_index) void l2fib_flush_all_mac (vlib_main_t * vm) { + l2input_main_t *mp = &l2input_main; l2_bridge_domain_t *bd_config; - vec_foreach (bd_config, l2input_main.bd_configs) + u32 bd_index; + + vec_foreach_index (bd_index, mp->bd_configs) + { + bd_config = vec_elt_at_index (mp->bd_configs, bd_index); if (bd_is_valid (bd_config)) - bd_config->seq_num += 1; + l2fib_bd_seq_num_inc (bd_index); + } l2fib_start_ager_scan (vm); }