mlxsw: Set number of port lanes attribute in driver

Currently, port attributes like flavour, port number and whether the
port was split are set when initializing a port.

Set the number of lanes of the port as well 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:
Danielle Ratson 2020-07-09 16:18:17 +03:00 committed by David S. Miller
parent 71ad8d55f8
commit 622d3e9201
6 changed files with 11 additions and 6 deletions

View File

@ -2122,6 +2122,7 @@ static int __mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
enum devlink_port_flavour flavour, enum devlink_port_flavour flavour,
u32 port_number, bool split, u32 port_number, bool split,
u32 split_port_subnumber, u32 split_port_subnumber,
u32 lanes,
const unsigned char *switch_id, const unsigned char *switch_id,
unsigned char switch_id_len) unsigned char switch_id_len)
{ {
@ -2159,13 +2160,14 @@ 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, int mlxsw_core_port_init(struct mlxsw_core *mlxsw_core, u8 local_port,
u32 port_number, bool split, u32 port_number, bool split,
u32 split_port_subnumber, u32 split_port_subnumber,
u32 lanes,
const unsigned char *switch_id, const unsigned char *switch_id,
unsigned char switch_id_len) unsigned char switch_id_len)
{ {
return __mlxsw_core_port_init(mlxsw_core, local_port, return __mlxsw_core_port_init(mlxsw_core, local_port,
DEVLINK_PORT_FLAVOUR_PHYSICAL, DEVLINK_PORT_FLAVOUR_PHYSICAL,
port_number, split, split_port_subnumber, port_number, split, split_port_subnumber,
switch_id, switch_id_len); lanes, switch_id, switch_id_len);
} }
EXPORT_SYMBOL(mlxsw_core_port_init); EXPORT_SYMBOL(mlxsw_core_port_init);
@ -2186,7 +2188,7 @@ int mlxsw_core_cpu_port_init(struct mlxsw_core *mlxsw_core,
err = __mlxsw_core_port_init(mlxsw_core, MLXSW_PORT_CPU_PORT, err = __mlxsw_core_port_init(mlxsw_core, MLXSW_PORT_CPU_PORT,
DEVLINK_PORT_FLAVOUR_CPU, DEVLINK_PORT_FLAVOUR_CPU,
0, false, 0, 0, false, 0, 0,
switch_id, switch_id_len); switch_id, switch_id_len);
if (err) if (err)
return err; return err;

View File

@ -193,6 +193,7 @@ 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 port_number, bool split,
u32 split_port_subnumber, u32 split_port_subnumber,
u32 lanes,
const unsigned char *switch_id, const unsigned char *switch_id,
unsigned char switch_id_len); unsigned char switch_id_len);
void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port); void mlxsw_core_port_fini(struct mlxsw_core *mlxsw_core, u8 local_port);

View File

@ -164,7 +164,7 @@ mlxsw_m_port_create(struct mlxsw_m *mlxsw_m, u8 local_port, u8 module)
int err; 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, module + 1, false, 0, 0,
mlxsw_m->base_mac, mlxsw_m->base_mac,
sizeof(mlxsw_m->base_mac)); sizeof(mlxsw_m->base_mac));
if (err) { if (err) {

View File

@ -1733,12 +1733,14 @@ static int mlxsw_sp_port_create(struct mlxsw_sp *mlxsw_sp, u8 local_port,
struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan; struct mlxsw_sp_port_vlan *mlxsw_sp_port_vlan;
bool split = !!split_base_local_port; bool split = !!split_base_local_port;
struct mlxsw_sp_port *mlxsw_sp_port; struct mlxsw_sp_port *mlxsw_sp_port;
u32 lanes = port_mapping->width;
struct net_device *dev; struct net_device *dev;
int err; int err;
err = mlxsw_core_port_init(mlxsw_sp->core, local_port, err = mlxsw_core_port_init(mlxsw_sp->core, local_port,
port_mapping->module + 1, split, port_mapping->module + 1, split,
port_mapping->lane / port_mapping->width, port_mapping->lane / lanes,
lanes,
mlxsw_sp->base_mac, mlxsw_sp->base_mac,
sizeof(mlxsw_sp->base_mac)); sizeof(mlxsw_sp->base_mac));
if (err) { if (err) {

View File

@ -281,7 +281,7 @@ static int mlxsw_sib_port_create(struct mlxsw_sib *mlxsw_sib, u8 local_port,
int err; 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, module + 1, false, 0, 0,
mlxsw_sib->hw_id, sizeof(mlxsw_sib->hw_id)); mlxsw_sib->hw_id, sizeof(mlxsw_sib->hw_id));
if (err) { if (err) {
dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n", dev_err(mlxsw_sib->bus_info->dev, "Port %d: Failed to init core port\n",

View File

@ -1107,7 +1107,7 @@ static int mlxsw_sx_port_eth_create(struct mlxsw_sx *mlxsw_sx, u8 local_port,
int err; 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, module + 1, false, 0, 0,
mlxsw_sx->hw_id, sizeof(mlxsw_sx->hw_id)); mlxsw_sx->hw_id, sizeof(mlxsw_sx->hw_id));
if (err) { if (err) {
dev_err(mlxsw_sx->bus_info->dev, "Port %d: Failed to init core port\n", dev_err(mlxsw_sx->bus_info->dev, "Port %d: Failed to init core port\n",