Message ID | 20250204145549.1216254-5-idosch@nvidia.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Netdev Maintainers |
Headers | show |
Series | vxlan: Age FDB entries based on Rx traffic | expand |
On 2/4/25 16:55, Ido Schimmel wrote: > The 'NTF_USE' flag can be used by user space to refresh FDB entries so > that they will not age out. Currently, the VXLAN driver implements it by > refreshing the 'used' field in the FDB entry as this is the field > according to which FDB entries are aged out. > > Subsequent patches will switch the VXLAN driver to age out entries based > on the 'updated' field. Prepare for this change by refreshing the > 'updated' field upon 'NTF_USE'. This is consistent with the bridge > driver's FDB: > > # ip link add name br1 up type bridge > # ip link add name swp1 master br1 up type dummy > # bridge fdb add 00:11:22:33:44:55 dev swp1 master dynamic vlan 1 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev swp1 master dynamic vlan 1 > # bridge -s -j fdb get 00:11:22:33:44:55 br br1 vlan 1 | jq '.[]["updated"]' > 10 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev swp1 master use dynamic vlan 1 > # bridge -s -j fdb get 00:11:22:33:44:55 br br1 vlan 1 | jq '.[]["updated"]' > 0 > > Before: > > # ip link add name vx1 up type vxlan id 10010 dstport 4789 > # bridge fdb add 00:11:22:33:44:55 dev vx1 self dynamic dst 198.51.100.1 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev vx1 self dynamic dst 198.51.100.1 > # bridge -s -j -p fdb get 00:11:22:33:44:55 br vx1 self | jq '.[]["updated"]' > 10 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev vx1 self use dynamic dst 198.51.100.1 > # bridge -s -j -p fdb get 00:11:22:33:44:55 br vx1 self | jq '.[]["updated"]' > 20 > > After: > > # ip link add name vx1 up type vxlan id 10010 dstport 4789 > # bridge fdb add 00:11:22:33:44:55 dev vx1 self dynamic dst 198.51.100.1 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev vx1 self dynamic dst 198.51.100.1 > # bridge -s -j -p fdb get 00:11:22:33:44:55 br vx1 self | jq '.[]["updated"]' > 10 > # sleep 10 > # bridge fdb replace 00:11:22:33:44:55 dev vx1 self use dynamic dst 198.51.100.1 > # bridge -s -j -p fdb get 00:11:22:33:44:55 br vx1 self | jq '.[]["updated"]' > 0 > > Reviewed-by: Petr Machata <petrm@nvidia.com> > Signed-off-by: Ido Schimmel <idosch@nvidia.com> > --- > drivers/net/vxlan/vxlan_core.c | 4 +++- > 1 file changed, 3 insertions(+), 1 deletion(-) > Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
diff --git a/drivers/net/vxlan/vxlan_core.c b/drivers/net/vxlan/vxlan_core.c index 36cb06a56aca..c73138647110 100644 --- a/drivers/net/vxlan/vxlan_core.c +++ b/drivers/net/vxlan/vxlan_core.c @@ -1051,8 +1051,10 @@ static int vxlan_fdb_update_existing(struct vxlan_dev *vxlan, notify |= rc; } - if (ndm_flags & NTF_USE) + if (ndm_flags & NTF_USE) { WRITE_ONCE(f->used, jiffies); + WRITE_ONCE(f->updated, jiffies); + } if (notify) { if (rd == NULL)