[PATCH v4 net-next 0/8] vxlan: convert configuration to RCU and enable lockless dumps
From: Eric Dumazet <edumazet@google.com>
Date: 2026-09-15 17:55:04
This patch series converts struct vxlan_config to RCU protection, eliminates
redundant destination fields, and enables lockless RTNL-free link dumping
in vxlan_fill_info().
Changes in v4:
- Split out the default FDB update fix when the lower device changes into
patch 1 with a Fixes: tag, and updated vxlan_vnilist_update_group() to
refresh all VNIs (including those with explicit per-VNI multicast groups)
so their FDB entries do not retain a stale remote_ifindex. Kept in this
series rather than routing through net to avoid a cross-tree conflict
with the default_dst removal in patch 7.
- Added patch 3 to signal interrupted RTM_GETTUNNEL dumps to user space via
a per-netns atomic generation counter and nl_dump_check_consistent(), per
Paolo's suggestion.
- Added an explicit VXLAN_DEV_F_MDB check in mlxsw_sp_nve_vxlan_can_offload()
so moving VXLAN_F_MDB out of cfg->flags does not silently relax mlxsw's
deny-by-default flag validation (patch 5).
- In vxlan_config_apply(), gated the MTU clamp on lowerdev_changed so that
unrelated changelink operations do not shrink dev->mtu (patch 7).
- Documented in patch 7's changelog that cfg->remote_ifindex is now committed
unconditionally and that IFLA_VXLAN_LINK=0 tears down the upper/lower
adjacency.
Changes in v3:
- Folded configuration conversion patches into a single patch to maintain
clean bisectability and avoid intermediate mutable state.
- In vxlan_changelink(), pass lowerdev to vxlan_config_apply() to prevent
truncating dev->needed_headroom and dev->needed_tailroom when lowerdev
does not change.
- Cleaned up redundant NULL checks and unreachable error paths.
Eric Dumazet (8):
vxlan: update default fdb entries when the lower device changes
vxlan: vnifilter: use list_for_each_entry_rcu() in
vxlan_vnifilter_dump_dev()
vxlan: vnifilter: signal interrupted RTM_GETTUNNEL dumps
vxlan: pass vxlan_config pointer to helper functions
vxlan: move VXLAN_F_MDB to struct vxlan_dev flags
vxlan: convert configuration to RCU protection
vxlan: remove default_dst and use vxlan_config and lowerdev
vxlan: no longer rely on RTNL in vxlan_fill_info()
.../mellanox/mlx5/core/en/tc_tun_vxlan.c | 11 +-
.../mellanox/mlxsw/spectrum_nve_vxlan.c | 19 +-
.../mellanox/mlxsw/spectrum_switchdev.c | 57 +-
drivers/net/vxlan/vxlan_core.c | 731 +++++++++++-------
drivers/net/vxlan/vxlan_mdb.c | 45 +-
drivers/net/vxlan/vxlan_multicast.c | 76 +-
drivers/net/vxlan/vxlan_private.h | 28 +-
drivers/net/vxlan/vxlan_vnifilter.c | 151 ++--
include/net/vxlan.h | 12 +-
9 files changed, 705 insertions(+), 425 deletions(-)
--
2.55.0.1032.g73a4cd73de-goog