[dpdk-dev] [PATCH v4 08/11] net/mlx5: add hardware flow debug dump

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Wed Apr 18 08:57:20 CEST 2018


On Tue, Apr 17, 2018 at 11:14:33PM +0800, Xueming Li wrote:
> Dump verb flow detail including flow spec type and size for debugging
> purpose.
> 
> Signed-off-by: Xueming Li <xuemingl at mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_flow.c  | 68 ++++++++++++++++++++++++++++++++++++-------
>  drivers/net/mlx5/mlx5_rxq.c   | 25 +++++++++++++---
>  drivers/net/mlx5/mlx5_utils.h |  6 ++++
>  3 files changed, 85 insertions(+), 14 deletions(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow.c b/drivers/net/mlx5/mlx5_flow.c
> index a6791c525..371d029c8 100644
> --- a/drivers/net/mlx5/mlx5_flow.c
> +++ b/drivers/net/mlx5/mlx5_flow.c
> @@ -2050,6 +2050,57 @@ mlx5_flow_create_update_rxqs(struct rte_eth_dev *dev, struct rte_flow *flow)
>  }
>  
>  /**
> + * Dump flow hash RX queue detail.
> + *
> + * @param dev
> + *   Pointer to Ethernet device.
> + * @param flow
> + *   Pointer to the rte_flow.
> + * @param i
> + *   Hash RX queue index.
> + */
> +static void
> +mlx5_flow_dump(struct rte_eth_dev *dev __rte_unused,
> +	       struct rte_flow *flow __rte_unused,
> +	       unsigned int i __rte_unused)

Can this "i" be renamed to hrxq_idx to have something more
understandable across the code?

> +{
> +#ifndef NDEBUG
> +	uintptr_t spec_ptr;
> +	uint16_t j;
> +	char buf[256];
> +	uint8_t off;
> +
> +	spec_ptr = (uintptr_t)(flow->frxq[i].ibv_attr + 1);
> +	for (j = 0, off = 0; j < flow->frxq[i].ibv_attr->num_of_specs;
> +	     j++) {
> +		struct ibv_flow_spec *spec = (void *)spec_ptr;
> +		off += sprintf(buf + off, " %x(%hu)", spec->hdr.type,
> +			       spec->hdr.size);
> +		spec_ptr += spec->hdr.size;
> +	}
> +	DRV_LOG(DEBUG,
> +		"port %u Verbs flow %p type %u: hrxq:%p qp:%p ind:%p, hash:%lx/%u"
> +		" specs:%hhu(%hu), priority:%hu, type:%d, flags:%x,"
> +		" comp_mask:%x specs:%s",
> +		dev->data->port_id, (void *)flow, i,
> +		(void *)flow->frxq[i].hrxq,
> +		(void *)flow->frxq[i].hrxq->qp,
> +		(void *)flow->frxq[i].hrxq->ind_table,
> +		flow->frxq[i].hash_fields |
> +		(flow->tunnel &&
> +		 flow->rss_conf.level > 1 ? (uint32_t)IBV_RX_HASH_INNER : 0),
> +		flow->rss_conf.queue_num,
> +		flow->frxq[i].ibv_attr->num_of_specs,
> +		flow->frxq[i].ibv_attr->size,
> +		flow->frxq[i].ibv_attr->priority,
> +		flow->frxq[i].ibv_attr->type,
> +		flow->frxq[i].ibv_attr->flags,
> +		flow->frxq[i].ibv_attr->comp_mask,
> +		buf);
> +#endif
>[...]

Thanks,

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list