aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIdo Schimmel <idosch@mellanox.com>2015-10-16 08:01:23 -0400
committerDavid S. Miller <davem@davemloft.net>2015-10-16 10:15:08 -0400
commitbc2055f878acb1fbbb3f3e7cb851f2e318def010 (patch)
treede4636a99f4855752817e00ffdf40b92cbb5550f
parent573c7ba006edbecff0714db651dd3602b9d0a6a0 (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.h6
-rw-r--r--drivers/net/ethernet/mellanox/mlxsw/switchx2.c3
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)