forked from Minki/linux
mlxsw: Move devlink_port_attrs_set() call before register
Since attrs are static during the existence of devlink port, set the before registration of the port. Signed-off-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
773b1f38e3
commit
e519418f89
@ -1718,7 +1718,9 @@ u64 mlxsw_core_res_get(struct mlxsw_core *mlxsw_core,
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_res_get);
|
||||
|
||||
int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port)
|
||||
int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber)
|
||||
{
|
||||
struct devlink *devlink = priv_to_devlink(mlxsw_core);
|
||||
struct mlxsw_core_port *mlxsw_core_port =
|
||||
@ -1727,6 +1729,8 @@ int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port)
|
||||
int err;
|
||||
|
||||
mlxsw_core_port->local_port = local_port;
|
||||
devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
|
||||
port_number, split, split_port_subnumber);
|
||||
err = devlink_port_register(devlink, devlink_port, local_port);
|
||||
if (err)
|
||||
memset(mlxsw_core_port, 0, sizeof(*mlxsw_core_port));
|
||||
@ -1746,17 +1750,13 @@ void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port)
|
||||
EXPORT_SYMBOL(mlxsw_core_port_fini);
|
||||
|
||||
void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
void *port_driver_priv, struct net_device *dev,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber)
|
||||
void *port_driver_priv, struct net_device *dev)
|
||||
{
|
||||
struct mlxsw_core_port *mlxsw_core_port =
|
||||
&mlxsw_core->ports[local_port];
|
||||
struct devlink_port *devlink_port = &mlxsw_core_port->devlink_port;
|
||||
|
||||
mlxsw_core_port->port_driver_priv = port_driver_priv;
|
||||
devlink_port_attrs_set(devlink_port, DEVLINK_PORT_FLAVOUR_PHYSICAL,
|
||||
port_number, split, split_port_subnumber);
|
||||
devlink_port_type_eth_set(devlink_port, dev);
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_port_eth_set);
|
||||
|
@ -164,12 +164,12 @@ void mlxsw_core_lag_mapping_clear(struct mlxsw_core *mlxsw_core,
|
||||
u16 lag_id, u8 local_port);
|
||||
|
||||
void *mlxsw_core_port_driver_priv(struct mlxsw_core_port *mlxsw_core_port);
|
||||
int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port);
|
||||
int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber);
|
||||
void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port);
|
||||
void mlxsw_core_port_eth_set(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
void *port_driver_priv, struct net_device *dev,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber);
|
||||
void *port_driver_priv, struct net_device *dev);
|
||||
void mlxsw_core_port_ib_set(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
void *port_driver_priv);
|
||||
void mlxsw_core_port_clear(struct mlxsw_core *mlxsw_core, u8 local_port,
|
||||
|
@ -150,7 +150,8 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
|
||||
struct net_device *dev;
|
||||
int err;
|
||||
|
||||
err = mlxsw_core_port_init(mlxsw_m->core, local_port);
|
||||
err = mlxsw_core_port_init(mlxsw_m->core, local_port,
|
||||
module + 1, false, 0);
|
||||
if (err) {
|
||||
dev_err(mlxsw_m->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
local_port);
|
||||
@ -190,7 +191,7 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
|
||||
}
|
||||
|
||||
mlxsw_core_port_eth_set(mlxsw_m->core, mlxsw_m_port->local_port,
|
||||
mlxsw_m_port, dev, module + 1, false, 0);
|
||||
mlxsw_m_port, dev);
|
||||
|
||||
return 0;
|
||||
|
||||
|
@ -3391,7 +3391,8 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
|
||||
struct net_device *dev;
|
||||
int err;
|
||||
|
||||
err = mlxsw_core_port_init(mlxsw_sp->core, local_port);
|
||||
err = mlxsw_core_port_init(mlxsw_sp->core, local_port,
|
||||
module + 1, split, lane / width);
|
||||
if (err) {
|
||||
dev_err(mlxsw_sp->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
local_port);
|
||||
@ -3573,8 +3574,7 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
|
||||
}
|
||||
|
||||
mlxsw_core_port_eth_set(mlxsw_sp->core, mlxsw_sp_port->local_port,
|
||||
mlxsw_sp_port, dev, module + 1,
|
||||
mlxsw_sp_port->split, lane / width);
|
||||
mlxsw_sp_port, dev);
|
||||
mlxsw_core_schedule_dw(&mlxsw_sp_port->periodic_hw_stats.update_dw, 0);
|
||||
return 0;
|
||||
|
||||
|
@ -267,7 +267,8 @@ static int mlxsw_sib_port_create(struct mlxsw_sib *mlxsw_sib, u8 local_port,
|
||||
{
|
||||
int err;
|
||||
|
||||
err = mlxsw_core_port_init(mlxsw_sib->core, local_port);
|
||||
err = mlxsw_core_port_init(mlxsw_sib->core, local_port,
|
||||
module + 1, false, 0);
|
||||
if (err) {
|
||||
dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
local_port);
|
||||
|
@ -1102,7 +1102,7 @@ static int __mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port,
|
||||
}
|
||||
|
||||
mlxsw_core_port_eth_set(mlxsw_sx->core, mlxsw_sx_port->local_port,
|
||||
mlxsw_sx_port, dev, module + 1, false, 0);
|
||||
mlxsw_sx_port, dev);
|
||||
mlxsw_sx->ports[local_port] = mlxsw_sx_port;
|
||||
return 0;
|
||||
|
||||
@ -1127,7 +1127,8 @@ static int mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port,
|
||||
{
|
||||
int err;
|
||||
|
||||
err = mlxsw_core_port_init(mlxsw_sx->core, local_port);
|
||||
err = mlxsw_core_port_init(mlxsw_sx->core, local_port,
|
||||
module + 1, false, 0);
|
||||
if (err) {
|
||||
dev_err(mlxsw_sx->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
local_port);
|
||||
|
Loading…
Reference in New Issue
Block a user