| From 6d962d36e16339bdc88e1964e3d4fc0d4b6734f2 Mon Sep 17 00:00:00 2001 |
| From: Danielle Ratson <danieller@mellanox.com> |
| Date: Thu, 26 Sep 2019 14:43:40 +0300 |
| Subject: [PATCH] mlxsw: spectrum_flower: Fail in case user specifies multiple |
| mirror actions |
| |
| commit 52feb8b588f6d23673dd7cc2b44b203493b627f6 upstream. |
| |
| The ASIC can only mirror a packet to one port, but when user is trying |
| to set more than one mirror action, it doesn't fail. |
| |
| Add a check if more than one mirror action was specified per rule and if so, |
| fail for not being supported. |
| |
| Fixes: d0d13c1858a11 ("mlxsw: spectrum_acl: Add support for mirror action") |
| Signed-off-by: Danielle Ratson <danieller@mellanox.com> |
| Acked-by: Jiri Pirko <jiri@mellanox.com> |
| Signed-off-by: Ido Schimmel <idosch@mellanox.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> |
| |
| diff --git a/drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c b/drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c |
| index 96b23c856f4d..ca31c26e98c1 100644 |
| --- a/drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c |
| +++ b/drivers/net/ethernet/mellanox/mlxsw/spectrum_flower.c |
| @@ -21,6 +21,7 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp, |
| struct netlink_ext_ack *extack) |
| { |
| const struct flow_action_entry *act; |
| + int mirror_act_count = 0; |
| int err, i; |
| |
| if (!flow_action_has_entries(flow_action)) |
| @@ -95,6 +96,11 @@ static int mlxsw_sp_flower_parse_actions(struct mlxsw_sp *mlxsw_sp, |
| case FLOW_ACTION_MIRRED: { |
| struct net_device *out_dev = act->dev; |
| |
| + if (mirror_act_count++) { |
| + NL_SET_ERR_MSG_MOD(extack, "Multiple mirror actions per rule are not supported"); |
| + return -EOPNOTSUPP; |
| + } |
| + |
| err = mlxsw_sp_acl_rulei_act_mirror(mlxsw_sp, rulei, |
| block, out_dev, |
| extack); |
| -- |
| 2.7.4 |
| |