> -----Original Message----- > From: Dekel Peled <dek...@mellanox.com> > Sent: Thursday, August 15, 2019 12:27 > To: Yongseok Koh <ys...@mellanox.com>; Slava Ovsiienko > <viachesl...@mellanox.com>; Shahaf Shuler <shah...@mellanox.com> > Cc: Ori Kam <or...@mellanox.com>; dev@dpdk.org; sta...@dpdk.org > Subject: [PATCH] net/mlx5: fix validation of jump action > > This patch updates the validation function of jump action. > It adds check of conflicting fate actions in flow rule. > It also removes check of action->type which is not needed. > > Fixes: 684b9a1b1f5c ("net/mlx5: support jump action") > Cc: sta...@dpdk.org > > Signed-off-by: Dekel Peled <dek...@mellanox.com> Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
> --- > drivers/net/mlx5/mlx5_flow_dv.c | 14 ++++++++++++-- > 1 file changed, 12 insertions(+), 2 deletions(-) > > diff --git a/drivers/net/mlx5/mlx5_flow_dv.c > b/drivers/net/mlx5/mlx5_flow_dv.c index 21faa98..374dbae 100644 > --- a/drivers/net/mlx5/mlx5_flow_dv.c > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > @@ -1951,7 +1951,9 @@ struct field_modify_info modify_tcp[] = { > * Validate jump action. > * > * @param[in] action > - * Pointer to the modify action. > + * Pointer to the jump action. > + * @param[in] action_flags > + * Holds the actions detected until now. > * @param[in] group > * The group of the current flow. > * @param[out] error > @@ -1962,10 +1964,17 @@ struct field_modify_info modify_tcp[] = { > */ > static int > flow_dv_validate_action_jump(const struct rte_flow_action *action, > + uint64_t action_flags, > uint32_t group, > struct rte_flow_error *error) > { > - if (action->type != RTE_FLOW_ACTION_TYPE_JUMP && !action- > >conf) > + if (action_flags & (MLX5_FLOW_FATE_ACTIONS | > + MLX5_FLOW_FATE_ESWITCH_ACTIONS)) > + return rte_flow_error_set(error, EINVAL, > + RTE_FLOW_ERROR_TYPE_ACTION, > NULL, > + "can't have 2 fate actions in" > + " same flow"); > + if (!action->conf) > return rte_flow_error_set(error, EINVAL, > > RTE_FLOW_ERROR_TYPE_ACTION_CONF, > NULL, "action configuration not > set"); @@ -3220,6 +3229,7 @@ struct field_modify_info modify_tcp[] = { > break; > case RTE_FLOW_ACTION_TYPE_JUMP: > ret = flow_dv_validate_action_jump(actions, > + action_flags, > attr->group, error); > if (ret) > return ret; > -- > 1.8.3.1