[dpdk-dev] [PATCH v3 2/4] net/mlx5: add software support for rte_flow
Ferruh Yigit
ferruh.yigit at intel.com
Fri Dec 23 13:19:30 CET 2016
On 12/21/2016 3:19 PM, Nelio Laranjeiro wrote:
> Introduce initial software validation for rte_flow rules.
>
> Signed-off-by: Nelio Laranjeiro <nelio.laranjeiro at 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.
More information about the dev
mailing list