On 12/21/2016 3:19 PM, Nelio Laranjeiro wrote:
> Introduce initial software validation for rte_flow rules.
> 
> Signed-off-by: Nelio Laranjeiro <nelio.laranje...@6wind.com>
> ---
>  drivers/net/mlx5/mlx5.h         |   2 +
>  drivers/net/mlx5/mlx5_flow.c    | 202 
> ++++++++++++++++++++++++++++++++++------
>  drivers/net/mlx5/mlx5_trigger.c |   2 +
>  3 files changed, 177 insertions(+), 29 deletions(-)

<...>

> +     for (; items->type != RTE_FLOW_ITEM_TYPE_END; ++items) {
> +             if (items->type == RTE_FLOW_ITEM_TYPE_VOID) {
> +                     continue;
> +             } else if (items->type == RTE_FLOW_ITEM_TYPE_ETH) {
> +                     if (ilast)
> +                             goto exit_item_not_supported;
> +                     ilast = items;
> +             } else if ((items->type == RTE_FLOW_ITEM_TYPE_IPV4) ||
> +                        (items->type == RTE_FLOW_ITEM_TYPE_IPV6)) {
> +                     if (!ilast)
> +                             goto exit_item_not_supported;
> +                     else if (ilast->type != RTE_FLOW_ITEM_TYPE_ETH)
> +                             goto exit_item_not_supported;
> +                     ilast = items;
> +             } else if ((items->type == RTE_FLOW_ITEM_TYPE_UDP) ||
> +                        (items->type == RTE_FLOW_ITEM_TYPE_TCP)) {
> +                     if (!ilast)
> +                             goto exit_item_not_supported;
> +                     else if ((ilast->type != RTE_FLOW_ITEM_TYPE_IPV4) &&
> +                              (ilast->type != RTE_FLOW_ITEM_TYPE_IPV6))
> +                             goto exit_item_not_supported;
> +                     ilast = items;
> +             } else {
> +                     goto exit_item_not_supported;
> +             }
> +     }

I was thinking rte_flow_validate() is validating rule against hardware /
PMD, but here the API input validation is also done.
In patch 3/4 API input validation continues with validating each item
one by one.

Shouldn't each PMD needs to do this kind of input validation?
Why not move generic input validation to rte_flow API?
And if it is valid, call PMD specific one.


Reply via email to