mlxsw: spectrum_router: Extract a helper from mlxsw_sp_port_vlan_router_join()
Split out of mlxsw_sp_port_vlan_router_join() the part that checks for RIF and dispatches to __mlxsw_sp_port_vlan_router_join(), leaving it as wrapper that just manages the router lock. The new function, mlxsw_sp_port_vlan_router_join_existing(), will be useful as an atom in later patches. Signed-off-by: Petr Machata <petrm@nvidia.com> Reviewed-by: Amit Cohen <amcohen@nvidia.com> Signed-off-by: Paolo Abeni <pabeni@redhat.com>
This commit is contained in:
parent
2bddad9ec6
commit
e0db883b69
@ -8562,24 +8562,35 @@ __mlxsw_sp_port_vlan_router_leave(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan)
|
||||
mlxsw_sp_rif_subport_put(rif);
|
||||
}
|
||||
|
||||
static int
|
||||
mlxsw_sp_port_vlan_router_join_existing(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan,
|
||||
struct net_device *l3_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port_vlan->mlxsw_sp_port->mlxsw_sp;
|
||||
|
||||
lockdep_assert_held(&mlxsw_sp->router->lock);
|
||||
|
||||
if (!mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev))
|
||||
return 0;
|
||||
|
||||
return __mlxsw_sp_port_vlan_router_join(mlxsw_sp_port_vlan, l3_dev,
|
||||
extack);
|
||||
}
|
||||
|
||||
int
|
||||
mlxsw_sp_port_vlan_router_join(struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan,
|
||||
struct net_device *l3_dev,
|
||||
struct netlink_ext_ack *extack)
|
||||
{
|
||||
struct mlxsw_sp *mlxsw_sp = mlxsw_sp_port_vlan->mlxsw_sp_port->mlxsw_sp;
|
||||
struct mlxsw_sp_rif *rif;
|
||||
int err = 0;
|
||||
int err;
|
||||
|
||||
mutex_lock(&mlxsw_sp->router->lock);
|
||||
rif = mlxsw_sp_rif_find_by_dev(mlxsw_sp, l3_dev);
|
||||
if (!rif)
|
||||
goto out;
|
||||
|
||||
err = __mlxsw_sp_port_vlan_router_join(mlxsw_sp_port_vlan, l3_dev,
|
||||
extack);
|
||||
out:
|
||||
err = mlxsw_sp_port_vlan_router_join_existing(mlxsw_sp_port_vlan,
|
||||
l3_dev, extack);
|
||||
mutex_unlock(&mlxsw_sp->router->lock);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user