|
@@ -745,27 +745,6 @@ err_port_allow_untagged_set:
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
-static int __mlxsw_sp_port_vlans_set(struct mlxsw_sp_port *mlxsw_sp_port,
|
|
|
- u16 vid_begin, u16 vid_end, bool is_member,
|
|
|
- bool untagged)
|
|
|
-{
|
|
|
- u16 vid, vid_e;
|
|
|
- int err;
|
|
|
-
|
|
|
- for (vid = vid_begin; vid <= vid_end;
|
|
|
- vid += MLXSW_REG_SPVM_REC_MAX_COUNT) {
|
|
|
- vid_e = min((u16) (vid + MLXSW_REG_SPVM_REC_MAX_COUNT - 1),
|
|
|
- vid_end);
|
|
|
-
|
|
|
- err = mlxsw_sp_port_vlan_set(mlxsw_sp_port, vid, vid_e,
|
|
|
- is_member, untagged);
|
|
|
- if (err)
|
|
|
- return err;
|
|
|
- }
|
|
|
-
|
|
|
- return 0;
|
|
|
-}
|
|
|
-
|
|
|
static int mlxsw_sp_port_vid_learning_set(struct mlxsw_sp_port *mlxsw_sp_port,
|
|
|
u16 vid_begin, u16 vid_end,
|
|
|
bool learn_enable)
|
|
@@ -804,8 +783,8 @@ static int __mlxsw_sp_port_vlans_add(struct mlxsw_sp_port *mlxsw_sp_port,
|
|
|
return err;
|
|
|
}
|
|
|
|
|
|
- err = __mlxsw_sp_port_vlans_set(mlxsw_sp_port, vid_begin, vid_end,
|
|
|
- true, flag_untagged);
|
|
|
+ err = mlxsw_sp_port_vlan_set(mlxsw_sp_port, vid_begin, vid_end,
|
|
|
+ true, flag_untagged);
|
|
|
if (err) {
|
|
|
netdev_err(dev, "Unable to add VIDs %d-%d\n", vid_begin,
|
|
|
vid_end);
|
|
@@ -863,8 +842,8 @@ err_port_vid_learning_set:
|
|
|
if (old_pvid != mlxsw_sp_port->pvid)
|
|
|
mlxsw_sp_port_pvid_set(mlxsw_sp_port, old_pvid);
|
|
|
err_port_pvid_set:
|
|
|
- __mlxsw_sp_port_vlans_set(mlxsw_sp_port, vid_begin, vid_end, false,
|
|
|
- false);
|
|
|
+ mlxsw_sp_port_vlan_set(mlxsw_sp_port, vid_begin, vid_end,
|
|
|
+ false, false);
|
|
|
err_port_vlans_set:
|
|
|
mlxsw_sp_port_fid_leave(mlxsw_sp_port, vid_begin, vid_end);
|
|
|
return err;
|
|
@@ -1171,8 +1150,8 @@ static int __mlxsw_sp_port_vlans_del(struct mlxsw_sp_port *mlxsw_sp_port,
|
|
|
if (pvid >= vid_begin && pvid <= vid_end)
|
|
|
mlxsw_sp_port_pvid_set(mlxsw_sp_port, 0);
|
|
|
|
|
|
- __mlxsw_sp_port_vlans_set(mlxsw_sp_port, vid_begin, vid_end, false,
|
|
|
- false);
|
|
|
+ mlxsw_sp_port_vlan_set(mlxsw_sp_port, vid_begin, vid_end,
|
|
|
+ false, false);
|
|
|
|
|
|
mlxsw_sp_port_fid_leave(mlxsw_sp_port, vid_begin, vid_end);
|
|
|
|