mirror of
https://github.com/torvalds/linux.git
synced 2026-06-03 03:53:37 +02:00
net/mlx5e: E-Switch, Add peer fdb miss rules for vport manager or ecpf
Add peer fdb rules for E-Switch that are vport managers or ecpf device. It is not needed for other devices. Signed-off-by: Roi Dayan <roid@nvidia.com> Reviewed-by: Shay Drory <shayd@nvidia.com> Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
This commit is contained in:
parent
1da9f36252
commit
1552e9b518
|
|
@ -1069,6 +1069,9 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
|||
void *misc;
|
||||
int err;
|
||||
|
||||
if (!MLX5_VPORT_MANAGER(esw->dev) && !mlx5_core_is_ecpf_esw_manager(esw->dev))
|
||||
return 0;
|
||||
|
||||
spec = kvzalloc(sizeof(*spec), GFP_KERNEL);
|
||||
if (!spec)
|
||||
return -ENOMEM;
|
||||
|
|
@ -1177,11 +1180,14 @@ static int esw_add_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
|||
static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
||||
struct mlx5_core_dev *peer_dev)
|
||||
{
|
||||
u16 peer_index = mlx5_get_dev_index(peer_dev);
|
||||
struct mlx5_flow_handle **flows;
|
||||
struct mlx5_vport *vport;
|
||||
unsigned long i;
|
||||
|
||||
flows = esw->fdb_table.offloads.peer_miss_rules[mlx5_get_dev_index(peer_dev)];
|
||||
flows = esw->fdb_table.offloads.peer_miss_rules[peer_index];
|
||||
if (!flows)
|
||||
return;
|
||||
|
||||
if (mlx5_core_ec_sriov_enabled(esw->dev)) {
|
||||
mlx5_esw_for_each_ec_vf_vport(esw, i, vport, mlx5_core_max_ec_vfs(esw->dev)) {
|
||||
|
|
@ -1206,7 +1212,9 @@ static void esw_del_fdb_peer_miss_rules(struct mlx5_eswitch *esw,
|
|||
vport = mlx5_eswitch_get_vport(esw, MLX5_VPORT_PF);
|
||||
mlx5_del_flow_rules(flows[vport->index]);
|
||||
}
|
||||
|
||||
kvfree(flows);
|
||||
esw->fdb_table.offloads.peer_miss_rules[peer_index] = NULL;
|
||||
}
|
||||
|
||||
static int esw_add_fdb_miss_rule(struct mlx5_eswitch *esw)
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user