mirror of
https://github.com/torvalds/linux.git
synced 2026-05-22 06:01:53 +02:00
vxlan: Insert FDB into hash table in vxlan_fdb_create()
Commit 7c31e54aee ("vxlan: do not destroy fdb if register_netdevice()
is failed") split the insertion of FDB entries into the FDB hash table
from the function where they are created.
This was done in order to work around a problem that is no longer
possible after the previous patch. Simplify the code and move the body
of vxlan_fdb_insert() back into vxlan_fdb_create().
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250415121143.345227-4-idosch@nvidia.com
Reviewed-by: Nikolay Aleksandrov <razor@blackwall.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
884dd448f1
commit
69281e0fe1
|
|
@ -816,14 +816,6 @@ static struct vxlan_fdb *vxlan_fdb_alloc(struct vxlan_dev *vxlan, const u8 *mac,
|
|||
return f;
|
||||
}
|
||||
|
||||
static void vxlan_fdb_insert(struct vxlan_dev *vxlan, const u8 *mac,
|
||||
__be32 src_vni, struct vxlan_fdb *f)
|
||||
{
|
||||
++vxlan->addrcnt;
|
||||
hlist_add_head_rcu(&f->hlist,
|
||||
vxlan_fdb_head(vxlan, mac, src_vni));
|
||||
}
|
||||
|
||||
static int vxlan_fdb_nh_update(struct vxlan_dev *vxlan, struct vxlan_fdb *fdb,
|
||||
u32 nhid, struct netlink_ext_ack *extack)
|
||||
{
|
||||
|
|
@ -913,6 +905,10 @@ int vxlan_fdb_create(struct vxlan_dev *vxlan,
|
|||
if (rc < 0)
|
||||
goto errout;
|
||||
|
||||
++vxlan->addrcnt;
|
||||
hlist_add_head_rcu(&f->hlist,
|
||||
vxlan_fdb_head(vxlan, mac, src_vni));
|
||||
|
||||
*fdb = f;
|
||||
|
||||
return 0;
|
||||
|
|
@ -1101,7 +1097,6 @@ static int vxlan_fdb_update_create(struct vxlan_dev *vxlan,
|
|||
if (rc < 0)
|
||||
return rc;
|
||||
|
||||
vxlan_fdb_insert(vxlan, mac, src_vni, f);
|
||||
rc = vxlan_fdb_notify(vxlan, f, first_remote_rtnl(f), RTM_NEWNEIGH,
|
||||
swdev_notify, extack);
|
||||
if (rc)
|
||||
|
|
@ -3994,8 +3989,6 @@ static int __vxlan_dev_create(struct net *net, struct net_device *dev,
|
|||
}
|
||||
|
||||
if (f) {
|
||||
vxlan_fdb_insert(vxlan, all_zeros_mac, dst->remote_vni, f);
|
||||
|
||||
/* notify default fdb entry */
|
||||
err = vxlan_fdb_notify(vxlan, f, first_remote_rtnl(f),
|
||||
RTM_NEWNEIGH, true, extack);
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user