diff options
author | Aya Levin <ayal@nvidia.com> | 2021-01-27 02:24:18 +0300 |
---|---|---|
committer | Jakub Kicinski <kuba@kernel.org> | 2021-01-28 06:53:54 +0300 |
commit | 49fdbd23418f5b18536d02f257096bd71fc83086 (patch) | |
tree | 51e40a44edb257c75290e281785c0b53b330a87d /drivers/net/ethernet/mellanox/mlx5/core | |
parent | 70038b73e40e2ce6bc4c8f25bbf0747b7a07a61f (diff) | |
download | linux-49fdbd23418f5b18536d02f257096bd71fc83086.tar.xz |
net/mlx5e: Add listener to DMAC filter trap event
Add support for trapping packets which didn't match any DMAC in the MAC
table. Add a listener which adds/removes MAC trap rule in the flow
steering according to the trap's action trap/drop.
Signed-off-by: Aya Levin <ayal@nvidia.com>
Reviewed-by: Moshe Shemesh <moshe@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en/trap.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/trap.c b/drivers/net/ethernet/mellanox/mlx5/core/en/trap.c index 5507efacb9dc..d078281dbd1d 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/trap.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/trap.c @@ -360,6 +360,11 @@ static int mlx5e_handle_action_trap(struct mlx5e_priv *priv, int trap_id) if (err) goto err_out; break; + case DEVLINK_TRAP_GENERIC_ID_DMAC_FILTER: + err = mlx5e_add_mac_trap(priv, trap_id, mlx5e_trap_get_tirn(priv->en_trap)); + if (err) + goto err_out; + break; default: netdev_warn(priv->netdev, "%s: Unknown trap id %d\n", __func__, trap_id); err = -EINVAL; @@ -379,6 +384,9 @@ static int mlx5e_handle_action_drop(struct mlx5e_priv *priv, int trap_id) case DEVLINK_TRAP_GENERIC_ID_INGRESS_VLAN_FILTER: mlx5e_remove_vlan_trap(priv); break; + case DEVLINK_TRAP_GENERIC_ID_DMAC_FILTER: + mlx5e_remove_mac_trap(priv); + break; default: netdev_warn(priv->netdev, "%s: Unknown trap id %d\n", __func__, trap_id); return -EINVAL; |