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>
                                         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))
                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);