mlxsw: Set port split ability attribute in driver
Currently, port attributes like flavour, port number and whether the port was split are set when initializing a port. Set the split ability of the port as well, based on port_mapping->width field and split attribute of devlink port in spectrum, so that it could be easily passed to devlink in the next patch. Signed-off-by: Danielle Ratson <danieller@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
Родитель
a21cf0a833
Коммит
1b604efb6c
|
@ -2122,7 +2122,7 @@ static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
|
|||
enum devlink_port_flavour flavour,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber,
|
||||
u32 lanes,
|
||||
bool splittable, u32 lanes,
|
||||
const unsigned char *switch_id,
|
||||
unsigned char switch_id_len)
|
||||
{
|
||||
|
@ -2161,14 +2161,15 @@ static void __mlxsw_core_port_fini(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,
|
||||
u32 lanes,
|
||||
bool splittable, u32 lanes,
|
||||
const unsigned char *switch_id,
|
||||
unsigned char switch_id_len)
|
||||
{
|
||||
return __mlxsw_core_port_init(mlxsw_core, local_port,
|
||||
DEVLINK_PORT_FLAVOUR_PHYSICAL,
|
||||
port_number, split, split_port_subnumber,
|
||||
lanes, switch_id, switch_id_len);
|
||||
splittable, lanes,
|
||||
switch_id, switch_id_len);
|
||||
}
|
||||
EXPORT_SYMBOL(mlxsw_core_port_init);
|
||||
|
||||
|
@ -2189,7 +2190,7 @@ int mlxsw_core_cpu_port_init(struct mlxsw_core *mlxsw_core,
|
|||
|
||||
err = __mlxsw_core_port_init(mlxsw_core, MLXSW_PORT_CPU_PORT,
|
||||
DEVLINK_PORT_FLAVOUR_CPU,
|
||||
0, false, 0, 0,
|
||||
0, false, 0, false, 0,
|
||||
switch_id, switch_id_len);
|
||||
if (err)
|
||||
return err;
|
||||
|
|
|
@ -191,9 +191,8 @@ void mlxsw_core_lag_mapping_clear(struct mlxsw_core *mlxsw_core,
|
|||
|
||||
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,
|
||||
u32 port_number, bool split,
|
||||
u32 split_port_subnumber,
|
||||
u32 lanes,
|
||||
u32 port_number, bool split, u32 split_port_subnumber,
|
||||
bool splittable, u32 lanes,
|
||||
const unsigned char *switch_id,
|
||||
unsigned char switch_id_len);
|
||||
void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port);
|
||||
|
|
|
@ -164,8 +164,8 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
|
|||
int err;
|
||||
|
||||
err = mlxsw_core_port_init(mlxsw_m->core, local_port,
|
||||
module + 1, false, 0, 0,
|
||||
mlxsw_m->base_mac,
|
||||
module + 1, false, 0, false,
|
||||
0, mlxsw_m->base_mac,
|
||||
sizeof(mlxsw_m->base_mac));
|
||||
if (err) {
|
||||
dev_err(mlxsw_m->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
|
|
|
@ -1735,12 +1735,14 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
|
|||
struct mlxsw_sp_port *mlxsw_sp_port;
|
||||
u32 lanes = port_mapping->width;
|
||||
struct net_device *dev;
|
||||
bool splittable;
|
||||
int err;
|
||||
|
||||
splittable = lanes > 1 && !split;
|
||||
err = mlxsw_core_port_init(mlxsw_sp->core, local_port,
|
||||
port_mapping->module + 1, split,
|
||||
port_mapping->lane / lanes,
|
||||
lanes,
|
||||
splittable, lanes,
|
||||
mlxsw_sp->base_mac,
|
||||
sizeof(mlxsw_sp->base_mac));
|
||||
if (err) {
|
||||
|
|
|
@ -281,7 +281,7 @@ 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,
|
||||
module + 1, false, 0, 0,
|
||||
module + 1, false, 0, false, 0,
|
||||
mlxsw_sib->hw_id, sizeof(mlxsw_sib->hw_id));
|
||||
if (err) {
|
||||
dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
|
|
|
@ -1107,7 +1107,7 @@ 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,
|
||||
module + 1, false, 0, 0,
|
||||
module + 1, false, 0, false, 0,
|
||||
mlxsw_sx->hw_id, sizeof(mlxsw_sx->hw_id));
|
||||
if (err) {
|
||||
dev_err(mlxsw_sx->bus_info->dev, "Port %d: Failed to init core port\n",
|
||||
|
|
Загрузка…
Ссылка в новой задаче