[dpdk-dev] [PATCH 1/2] ethdev: allow negative values in flow rule types

Andrew Rybchenko arybchenko at solarflare.com
Sun Jul 5 15:34:21 CEST 2020


On 6/25/20 7:03 PM, Gregory Etelson wrote:
> RTE flow items & actions use positive values in item & action type.
> Negative values are reserved for PMD private types. PMD
> items & actions usually are not exposed to application and are not
> used to create RTE flows.
> 
> The patch allows applications with access to PMD flow
> items & actions ability to integrate RTE and PMD items & actions
> and use them to create flow rule.
> 
> Signed-off-by: Gregory Etelson <getelson at mellanox.com>
> Acked-by: Ori Kam <orika at mellanox.com>
> ---
>  lib/librte_ethdev/rte_flow.c | 30 ++++++++++++++++++++++++------
>  1 file changed, 24 insertions(+), 6 deletions(-)
> 
> diff --git a/lib/librte_ethdev/rte_flow.c b/lib/librte_ethdev/rte_flow.c
> index 1685be5f73..c19d25649f 100644
> --- a/lib/librte_ethdev/rte_flow.c
> +++ b/lib/librte_ethdev/rte_flow.c
> @@ -563,7 +563,12 @@ rte_flow_conv_item_spec(void *buf, const size_t size,
>  		}
>  		break;
>  	default:
> -		off = rte_flow_desc_item[item->type].size;
> +		/**
> +		 * allow PMD private flow item
> +		 */
> +		off = (uint32_t)item->type <= INT_MAX ?
> +			rte_flow_desc_item[item->type].size :
> +			sizeof(void *);

May be it is out-of-scope of the patch (strictly speaking), but
usage of 'off' variable is very misleading here. It is not used
as an offset. It is used as a size to copy.

Also it is absolutely unclear why sizeof(void *) is a right
size for PMD private flow items.


More information about the dev mailing list