[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