Skip to content

Commit 99e1311

Browse files
committed
Merge branch 'mlxsw-Several-updates'
Ido Schimmel says: ==================== mlxsw: Several updates Patches #1-#3 contain misc updates for the mlxsw driver, one of which is a fix following recent introduction of flow_rule infrastructure. Patch #4 avoids double sourcing of lib.sh in forwarding selftests. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
2 parents 3f9b2d2 + f5c7bd9 commit 99e1311

File tree

4 files changed

+47
-21
lines changed

4 files changed

+47
-21
lines changed

drivers/net/ethernet/mellanox/mlxsw/spectrum.c

Lines changed: 45 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4771,9 +4771,6 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port,
47714771
err = mlxsw_sp_lag_col_port_add(mlxsw_sp_port, lag_id, port_index);
47724772
if (err)
47734773
goto err_col_port_add;
4774-
err = mlxsw_sp_lag_col_port_enable(mlxsw_sp_port, lag_id);
4775-
if (err)
4776-
goto err_col_port_enable;
47774774

47784775
mlxsw_core_lag_mapping_set(mlxsw_sp->core, lag_id, port_index,
47794776
mlxsw_sp_port->local_port);
@@ -4787,8 +4784,6 @@ static int mlxsw_sp_port_lag_join(struct mlxsw_sp_port *mlxsw_sp_port,
47874784

47884785
return 0;
47894786

4790-
err_col_port_enable:
4791-
mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id);
47924787
err_col_port_add:
47934788
if (!lag->ref_count)
47944789
mlxsw_sp_lag_destroy(mlxsw_sp, lag_id);
@@ -4807,7 +4802,6 @@ static void mlxsw_sp_port_lag_leave(struct mlxsw_sp_port *mlxsw_sp_port,
48074802
lag = mlxsw_sp_lag_get(mlxsw_sp, lag_id);
48084803
WARN_ON(lag->ref_count == 0);
48094804

4810-
mlxsw_sp_lag_col_port_disable(mlxsw_sp_port, lag_id);
48114805
mlxsw_sp_lag_col_port_remove(mlxsw_sp_port, lag_id);
48124806

48134807
/* Any VLANs configured on the port are no longer valid */
@@ -4852,21 +4846,56 @@ static int mlxsw_sp_lag_dist_port_remove(struct mlxsw_sp_port *mlxsw_sp_port,
48524846
return mlxsw_reg_write(mlxsw_sp->core, MLXSW_REG(sldr), sldr_pl);
48534847
}
48544848

4855-
static int mlxsw_sp_port_lag_tx_en_set(struct mlxsw_sp_port *mlxsw_sp_port,
4856-
bool lag_tx_enabled)
4849+
static int
4850+
mlxsw_sp_port_lag_col_dist_enable(struct mlxsw_sp_port *mlxsw_sp_port)
48574851
{
4858-
if (lag_tx_enabled)
4859-
return mlxsw_sp_lag_dist_port_add(mlxsw_sp_port,
4860-
mlxsw_sp_port->lag_id);
4861-
else
4862-
return mlxsw_sp_lag_dist_port_remove(mlxsw_sp_port,
4863-
mlxsw_sp_port->lag_id);
4852+
int err;
4853+
4854+
err = mlxsw_sp_lag_col_port_enable(mlxsw_sp_port,
4855+
mlxsw_sp_port->lag_id);
4856+
if (err)
4857+
return err;
4858+
4859+
err = mlxsw_sp_lag_dist_port_add(mlxsw_sp_port, mlxsw_sp_port->lag_id);
4860+
if (err)
4861+
goto err_dist_port_add;
4862+
4863+
return 0;
4864+
4865+
err_dist_port_add:
4866+
mlxsw_sp_lag_col_port_disable(mlxsw_sp_port, mlxsw_sp_port->lag_id);
4867+
return err;
4868+
}
4869+
4870+
static int
4871+
mlxsw_sp_port_lag_col_dist_disable(struct mlxsw_sp_port *mlxsw_sp_port)
4872+
{
4873+
int err;
4874+
4875+
err = mlxsw_sp_lag_dist_port_remove(mlxsw_sp_port,
4876+
mlxsw_sp_port->lag_id);
4877+
if (err)
4878+
return err;
4879+
4880+
err = mlxsw_sp_lag_col_port_disable(mlxsw_sp_port,
4881+
mlxsw_sp_port->lag_id);
4882+
if (err)
4883+
goto err_col_port_disable;
4884+
4885+
return 0;
4886+
4887+
err_col_port_disable:
4888+
mlxsw_sp_lag_dist_port_add(mlxsw_sp_port, mlxsw_sp_port->lag_id);
4889+
return err;
48644890
}
48654891

48664892
static int mlxsw_sp_port_lag_changed(struct mlxsw_sp_port *mlxsw_sp_port,
48674893
struct netdev_lag_lower_state_info *info)
48684894
{
4869-
return mlxsw_sp_port_lag_tx_en_set(mlxsw_sp_port, info->tx_enabled);
4895+
if (info->tx_enabled)
4896+
return mlxsw_sp_port_lag_col_dist_enable(mlxsw_sp_port);
4897+
else
4898+
return mlxsw_sp_port_lag_col_dist_disable(mlxsw_sp_port);
48704899
}
48714900

48724901
static int mlxsw_sp_port_stp_set(struct mlxsw_sp_port *mlxsw_sp_port,
@@ -5089,8 +5118,7 @@ static int mlxsw_sp_netdevice_port_upper_event(struct net_device *lower_dev,
50895118
err = mlxsw_sp_port_lag_join(mlxsw_sp_port,
50905119
upper_dev);
50915120
} else {
5092-
mlxsw_sp_port_lag_tx_en_set(mlxsw_sp_port,
5093-
false);
5121+
mlxsw_sp_port_lag_col_dist_disable(mlxsw_sp_port);
50945122
mlxsw_sp_port_lag_leave(mlxsw_sp_port,
50955123
upper_dev);
50965124
}

drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -102,8 +102,7 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp,
102102
return err;
103103
}
104104
break;
105-
case FLOW_ACTION_VLAN_PUSH:
106-
case FLOW_ACTION_VLAN_POP: {
105+
case FLOW_ACTION_VLAN_MANGLE: {
107106
u16 proto = be16_to_cpu(act->vlan.proto);
108107
u8 prio = act->vlan.prio;
109108
u16 vid = act->vlan.vid;

drivers/net/ethernet/mellanox/mlxsw/spectrum_router.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6142,7 +6142,7 @@ static int mlxsw_sp_router_rif_disable(struct mlxsw_sp *mlxsw_sp, u16 rif)
61426142

61436143
mlxsw_reg_ritr_rif_pack(ritr_pl, rif);
61446144
err = mlxsw_reg_query(mlxsw_sp->core, MLXSW_REG(ritr), ritr_pl);
6145-
if (WARN_ON_ONCE(err))
6145+
if (err)
61466146
return err;
61476147

61486148
mlxsw_reg_ritr_enable_set(ritr_pl, false);

tools/testing/selftests/drivers/net/mlxsw/spectrum/resource_scale.sh

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
# SPDX-License-Identifier: GPL-2.0
33

44
NUM_NETIFS=6
5-
source ../../../../net/forwarding/lib.sh
65
source ../../../../net/forwarding/tc_common.sh
76
source devlink_lib_spectrum.sh
87

0 commit comments

Comments
 (0)