[patch net-next 13/23] mlxsw: spectrum: Use FID instead of vFID to setup flooding
From: Jiri Pirko <jiri@resnulli.us>
Date: 2016-06-20 21:18:18
Subsystem:
mellanox ethernet switch drivers, networking drivers, the rest · Maintainers:
Ido Schimmel, Petr Machata, Andrew Lunn, "David S. Miller", Eric Dumazet, Jakub Kicinski, Paolo Abeni, Linus Torvalds
From: Ido Schimmel <redacted> Use a FID index instead of vFID and ease the transition towards a generic FID struct. Signed-off-by: Ido Schimmel <redacted> Signed-off-by: Jiri Pirko <redacted> --- drivers/net/ethernet/mellanox/mlxsw/spectrum.c | 15 +++++++-------- drivers/net/ethernet/mellanox/mlxsw/spectrum.h | 2 +- drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c | 5 ++++- 3 files changed, 12 insertions(+), 10 deletions(-)
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
index 6df944b..7a75a45 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.c@@ -793,9 +793,9 @@ int mlxsw_sp_port_add_vid(struct net_device *dev, __be16 __always_unused proto, goto err_port_vport_create; } + fid = mlxsw_sp_vfid_to_fid(vfid->vfid); if (!vfid->nr_vports) { - err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, - true); + err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, true); if (err) { netdev_err(dev, "Failed to setup flooding for vFID=%d\n", vfid->vfid);
@@ -815,7 +815,6 @@ int mlxsw_sp_port_add_vid(struct net_device *dev, __be16 __always_unused proto, } } - fid = mlxsw_sp_vfid_to_fid(vfid->vfid); err = mlxsw_sp_vport_fid_map(mlxsw_sp_vport, fid, true); if (err) { netdev_err(dev, "Failed to map {Port, VID=%d} to vFID=%d\n",
@@ -858,7 +857,7 @@ err_vport_fid_map: mlxsw_sp_port_vlan_mode_trans(mlxsw_sp_port); err_port_vp_mode_trans: if (!vfid->nr_vports) - mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false); + mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false); err_vport_flood_set: mlxsw_sp_port_vport_destroy(mlxsw_sp_vport); err_port_vport_create:
@@ -3260,7 +3259,7 @@ static void mlxsw_sp_vport_bridge_leave(struct mlxsw_sp_port *mlxsw_sp_vport, goto err_port_vid_learning_set; } - err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false); + err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false); if (err) { netdev_err(dev, "Failed clear to clear flooding\n"); goto err_vport_flood_set;
@@ -3320,7 +3319,8 @@ static int mlxsw_sp_vport_bridge_join(struct mlxsw_sp_port *mlxsw_sp_vport, } } - err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, true); + fid = mlxsw_sp_vfid_to_fid(vfid->vfid); + err = mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, true); if (err) { netdev_err(dev, "Failed to setup flooding for vFID=%d\n", vfid->vfid);
@@ -3344,7 +3344,6 @@ static int mlxsw_sp_vport_bridge_join(struct mlxsw_sp_port *mlxsw_sp_vport, goto err_vport_fid_unmap; } - fid = mlxsw_sp_vfid_to_fid(vfid->vfid); err = mlxsw_sp_vport_fid_map(mlxsw_sp_vport, fid, true); if (err) { netdev_err(dev, "Failed to map {Port, VID} to vFID=%d\n",
@@ -3371,7 +3370,7 @@ err_vport_fid_map: err_vport_fid_unmap: mlxsw_sp_port_vid_learning_set(mlxsw_sp_vport, vid, false); err_port_vid_learning_set: - mlxsw_sp_vport_flood_set(mlxsw_sp_vport, vfid->vfid, false); + mlxsw_sp_vport_flood_set(mlxsw_sp_vport, fid, false); err_port_flood_set: if (!vfid->nr_vports) mlxsw_sp_br_vfid_destroy(mlxsw_sp, vfid);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
index 58a2a5d..0ae929e 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum.h
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum.h@@ -366,7 +366,7 @@ int mlxsw_sp_port_add_vid(struct net_device *dev, __be16 __always_unused proto, u16 vid); int mlxsw_sp_port_kill_vid(struct net_device *dev, __be16 __always_unused proto, u16 vid); -int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 vfid, +int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid, bool set); void mlxsw_sp_port_active_vlans_del(struct mlxsw_sp_port *mlxsw_sp_port); int mlxsw_sp_port_pvid_set(struct mlxsw_sp_port *mlxsw_sp_port, u16 vid);
diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
index 02c126c..76f53c2 100644
--- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
+++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c@@ -260,12 +260,15 @@ err_port_flood_set: return err; } -int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 vfid, +int mlxsw_sp_vport_flood_set(struct mlxsw_sp_port *mlxsw_sp_vport, u16 fid, bool set) { + u16 vfid; + /* In case of vFIDs, index into the flooding table is relative to * the start of the vFIDs range. */ + vfid = mlxsw_sp_fid_to_vfid(fid); return __mlxsw_sp_port_flood_set(mlxsw_sp_vport, vfid, vfid, set, false); }
--
2.5.5