Skip to content

Commit 76324e4

Browse files
cjubrankuba-moo
authored andcommitted
net/mlx5: Fix peer miss rules host disabled checks
The check on mlx5_esw_host_functions_enabled(esw->dev) for adding VF peer miss rules is incorrect. These rules match traffic from peer's VFs, so the local device's host function status is irrelevant. Remove this check to ensure peer VF traffic is properly handled regardless of local host configuration. Also fix the PF peer miss rule deletion to be symmetric with the add path, so only attempt to delete the rule if it was actually created. Fixes: 520369e ("net/mlx5: Support disabling host PFs") Signed-off-by: Carolina Jubran <[email protected]> Signed-off-by: Tariq Toukan <[email protected]> Link: https://patch.msgid.link/[email protected] Signed-off-by: Jakub Kicinski <[email protected]>
1 parent 24b2795 commit 76324e4

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

drivers/net/ethernet/mellanox/mlx5/core/eswitch_offloads.c

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1241,21 +1241,17 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
12411241
flows[peer_vport->index] = flow;
12421242
}
12431243

1244-
if (mlx5_esw_host_functions_enabled(esw->dev)) {
1245-
mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
1246-
mlx5_core_max_vfs(peer_dev)) {
1247-
esw_set_peer_miss_rule_source_port(esw, peer_esw,
1248-
spec,
1249-
peer_vport->vport);
1250-
1251-
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
1252-
spec, &flow_act, &dest, 1);
1253-
if (IS_ERR(flow)) {
1254-
err = PTR_ERR(flow);
1255-
goto add_vf_flow_err;
1256-
}
1257-
flows[peer_vport->index] = flow;
1244+
mlx5_esw_for_each_vf_vport(peer_esw, i, peer_vport,
1245+
mlx5_core_max_vfs(peer_dev)) {
1246+
esw_set_peer_miss_rule_source_port(esw, peer_esw, spec,
1247+
peer_vport->vport);
1248+
flow = mlx5_add_flow_rules(mlx5_eswitch_get_slow_fdb(esw),
1249+
spec, &flow_act, &dest, 1);
1250+
if (IS_ERR(flow)) {
1251+
err = PTR_ERR(flow);
1252+
goto add_vf_flow_err;
12581253
}
1254+
flows[peer_vport->index] = flow;
12591255
}
12601256

12611257
if (mlx5_core_ec_sriov_enabled(peer_dev)) {
@@ -1347,7 +1343,8 @@ static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
13471343
mlx5_del_flow_rules(flows[peer_vport->index]);
13481344
}
13491345

1350-
if (mlx5_core_is_ecpf_esw_manager(peer_dev)) {
1346+
if (mlx5_core_is_ecpf_esw_manager(peer_dev) &&
1347+
mlx5_esw_host_functions_enabled(peer_dev)) {
13511348
peer_vport = mlx5_eswitch_get_vport(peer_esw, MLX5_VPORT_PF);
13521349
mlx5_del_flow_rules(flows[peer_vport->index]);
13531350
}

0 commit comments

Comments
 (0)