[dpdk-dev] [RFC] net/mlx5: support count flow action

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Thu Aug 24 08:54:19 CEST 2017


Hi Ori,

Please keep the coding style of the file, and pass checkpatch before
submitting a patch on the mailing list.  It helps the review by having a
correct patch respecting the coding style of the file.
I won't spot out here all the coding style issues, if you need some help, feel
free to ask.

On Mon, Aug 21, 2017 at 03:35:41PM +0300, Ori Kam wrote:
> Support count flow action.

Why copy/pasting the title in the commit message?

> This patch is basic design only, do to missing features on the verbs
> driver. As soon as the features will be implemented on the verbs driver this
> will be updated and rebased on top of dpdk.org/ml/archives/dev/2017-August/072351.html
> (The verbs driver should be ready starting September)
>
> This RFC should be applied on top of
> dpdk.org/ml/archives/dev/2017-August/072351.html

Last two comments should be after '---' line.

> Signed-off-by: Ori Kam <orika at mellanox.com>
> ---
>  drivers/net/mlx5/mlx5.h      |   4 ++
>  drivers/net/mlx5/mlx5_flow.c | 163 ++++++++++++++++++++++++++++++++++++++++++-

There are missing changes in the Makefile to have the
HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_COUNT and the include of the
mlx5_autoconf.h in mlx5_flow.c.

>  2 files changed, 166 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5.h b/drivers/net/mlx5/mlx5.h
> index e89aba8..434e848 100644
> --- a/drivers/net/mlx5/mlx5.h
> +++ b/drivers/net/mlx5/mlx5.h
>[...] 
> +/**
> + * Query an existing flow rule.
> + *
> + * @see rte_flow_query()
> + * @see rte_flow_ops
> + */
> +int
> +mlx5_flow_query(struct rte_eth_dev *dev,
> +		struct rte_flow *flow,
> +		enum rte_flow_action_type type,
> +		void *res,
> +		struct rte_flow_error *error)
> +{
> +
> +	int res_value = 0;
> +	switch (type){
> +		case RTE_FLOW_ACTION_TYPE_COUNT:
> +			if (!flow->counter) {
> +				rte_flow_error_set(error, EINVAL,
> +								   RTE_FLOW_ERROR_TYPE_UNSPECIFIED,
> +								   NULL,
> +								   "No counter is set for this flow");
> +				return -1;

Wrong returned value, read the rte_flow_query API allowed values.

> +			}
> +#ifdef HAVE_VERBS_IBV_EXP_FLOW_SPEC_ACTION_COUNT
> +			res_value = priv_flow_query_counter(mlx5_get_priv(dev), flow->counter,
> +					(struct rte_flow_query_count*)res,
> +					error);
> +#else
> +			rte_flow_error_set(error, ENOTSUP, RTE_FLOW_ERROR_TYPE_ACTION,
> +									NULL, "Flow count unsupported");
> +			(void)dev;
> +			(void)flow;
> +			(void)type;
> +			(void)res;
> +			(void)error;
> +			return -1;

Same here.

> +#endif

I'll suggest to have a dedicated function here to handle this situation, like
a mlx5_flow_query_counters() and call it from this case.  It will clearly ease
the readability and maintenance.

Thanks,

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list