Skip to content

Commit

Permalink
mlxsw: spectrum: Use FID instead of vFID to setup flooding
Browse files Browse the repository at this point in the history
Use a FID index instead of vFID and ease the transition towards a
generic FID struct.

Signed-off-by: Ido Schimmel <[email protected]>
Signed-off-by: Jiri Pirko <[email protected]>
Signed-off-by: David S. Miller <[email protected]>
  • Loading branch information
idosch authored and davem330 committed Jun 21, 2016
1 parent 9c4d442 commit e606002
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 10 deletions.
15 changes: 7 additions & 8 deletions drivers/net/ethernet/mellanox/mlxsw/spectrum.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand All @@ -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",
Expand Down Expand Up @@ -858,7 +857,7 @@ int mlxsw_sp_port_add_vid(struct net_device *dev, __be16 __always_unused proto,
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:
Expand Down Expand Up @@ -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;
Expand Down Expand Up @@ -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);
Expand All @@ -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",
Expand All @@ -3371,7 +3370,7 @@ static int mlxsw_sp_vport_bridge_join(struct mlxsw_sp_port *mlxsw_sp_vport,
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);
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/ethernet/mellanox/mlxsw/spectrum.h
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Expand Down
5 changes: 4 additions & 1 deletion drivers/net/ethernet/mellanox/mlxsw/spectrum_switchdev.c
Original file line number Diff line number Diff line change
Expand Up @@ -260,12 +260,15 @@ static int mlxsw_sp_port_uc_flood_set(struct mlxsw_sp_port *mlxsw_sp_port,
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);
}
Expand Down

0 comments on commit e606002

Please sign in to comment.