diff options
author | Ido Schimmel <idosch@mellanox.com> | 2015-10-16 08:01:23 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-10-16 10:15:08 -0400 |
commit | bc2055f878acb1fbbb3f3e7cb851f2e318def010 (patch) | |
tree | de4636a99f4855752817e00ffdf40b92cbb5550f | |
parent | 573c7ba006edbecff0714db651dd3602b9d0a6a0 (diff) |
mlxsw: Enable configuration of flooding domains
As part of the introduction of L2 offloads, allow different ports to
join/leave the flooding domain, according to user configuration.
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: Jiri Pirko <jiri@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/reg.h | 6 | ||||
-rw-r--r-- | drivers/net/ethernet/mellanox/mlxsw/switchx2.c | 3 |
2 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/ethernet/mellanox/mlxsw/reg.h b/drivers/net/ethernet/mellanox/mlxsw/reg.h index 7b245af10e42..4099d4b39649 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/reg.h +++ b/drivers/net/ethernet/mellanox/mlxsw/reg.h | |||
@@ -363,7 +363,7 @@ static inline void mlxsw_reg_sftr_pack(char *payload, | |||
363 | unsigned int flood_table, | 363 | unsigned int flood_table, |
364 | unsigned int index, | 364 | unsigned int index, |
365 | enum mlxsw_flood_table_type table_type, | 365 | enum mlxsw_flood_table_type table_type, |
366 | unsigned int range) | 366 | unsigned int range, u8 port, bool set) |
367 | { | 367 | { |
368 | MLXSW_REG_ZERO(sftr, payload); | 368 | MLXSW_REG_ZERO(sftr, payload); |
369 | mlxsw_reg_sftr_swid_set(payload, 0); | 369 | mlxsw_reg_sftr_swid_set(payload, 0); |
@@ -371,8 +371,8 @@ static inline void mlxsw_reg_sftr_pack(char *payload, | |||
371 | mlxsw_reg_sftr_index_set(payload, index); | 371 | mlxsw_reg_sftr_index_set(payload, index); |
372 | mlxsw_reg_sftr_table_type_set(payload, table_type); | 372 | mlxsw_reg_sftr_table_type_set(payload, table_type); |
373 | mlxsw_reg_sftr_range_set(payload, range); | 373 | mlxsw_reg_sftr_range_set(payload, range); |
374 | mlxsw_reg_sftr_port_set(payload, MLXSW_PORT_CPU_PORT, 1); | 374 | mlxsw_reg_sftr_port_set(payload, port, set); |
375 | mlxsw_reg_sftr_port_mask_set(payload, MLXSW_PORT_CPU_PORT, 1); | 375 | mlxsw_reg_sftr_port_mask_set(payload, port, 1); |
376 | } | 376 | } |
377 | 377 | ||
378 | /* SPMLR - Switch Port MAC Learning Register | 378 | /* SPMLR - Switch Port MAC Learning Register |
diff --git a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c index 4f72e0a423d9..2fd2279b628e 100644 --- a/drivers/net/ethernet/mellanox/mlxsw/switchx2.c +++ b/drivers/net/ethernet/mellanox/mlxsw/switchx2.c | |||
@@ -1377,7 +1377,8 @@ static int mlxsw_sx_flood_init(struct mlxsw_sx *mlxsw_sx) | |||
1377 | sftr_pl = kmalloc(MLXSW_REG_SFTR_LEN, GFP_KERNEL); | 1377 | sftr_pl = kmalloc(MLXSW_REG_SFTR_LEN, GFP_KERNEL); |
1378 | if (!sftr_pl) | 1378 | if (!sftr_pl) |
1379 | return -ENOMEM; | 1379 | return -ENOMEM; |
1380 | mlxsw_reg_sftr_pack(sftr_pl, 0, 0, MLXSW_REG_SFGC_TABLE_TYPE_SINGLE, 0); | 1380 | mlxsw_reg_sftr_pack(sftr_pl, 0, 0, MLXSW_REG_SFGC_TABLE_TYPE_SINGLE, 0, |
1381 | MLXSW_PORT_CPU_PORT, true); | ||
1381 | err = mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(sftr), sftr_pl); | 1382 | err = mlxsw_reg_write(mlxsw_sx->core, MLXSW_REG(sftr), sftr_pl); |
1382 | kfree(sftr_pl); | 1383 | kfree(sftr_pl); |
1383 | if (err) | 1384 | if (err) |