DPDK patches and discussions
 help / color / mirror / Atom feed
* [dpdk-dev] [PATCH] net/mlx5: fix Verbs counter pool allocation
@ 2020-05-15  0:48 Suanming Mou
  2020-05-17  8:34 ` Raslan Darawsheh
  0 siblings, 1 reply; 2+ messages in thread
From: Suanming Mou @ 2020-05-15  0:48 UTC (permalink / raw)
  To: Matan Azrad, Shahaf Shuler, Viacheslav Ovsiienko
  Cc: dev, rasland, dongz, wisamm

When create the Verbs flows with counter, randomly SEGSEV will also
comes. The reason is that the counter pool memory is not allocated
sufficiently and initialized correctly in Verbs case.

As the mlx5_flow_counter array member is moved out of the counter pool
struct, the counter pool memory layout currently contain implicitly
with mlx5_flow_counter, mlx5_age_param(if the pool is an age pool),
mlx5_flow_counter_ext(if the pool is a none batch pool). When allocate
the pool memory, the pool size should be calculated based on the pool
type accordingly.

Currently, for Verbs counter pool, both mlx5_flow_counter and
mlx5_flow_counter_ext need to be taken into account in the pool size.
And the pool type should also be initialized as CNT_POOL_TYPE_EXT.

This patch add the missing size and type for the Verbs counter pool.

Fixes: 8d93c830e450 ("net/mlx5: modify ext-counter memory allocation")

Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
---
 drivers/net/mlx5/mlx5_flow_verbs.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c b/drivers/net/mlx5/mlx5_flow_verbs.c
index 01eec31..c266e56 100644
--- a/drivers/net/mlx5/mlx5_flow_verbs.c
+++ b/drivers/net/mlx5/mlx5_flow_verbs.c
@@ -201,11 +201,12 @@
 			cont->n += MLX5_CNT_CONTAINER_RESIZE;
 		}
 		/* Allocate memory for new pool*/
-		size = sizeof(*pool) + sizeof(*cnt_ext) *
+		size = sizeof(*pool) + (sizeof(*cnt_ext) + sizeof(*cnt)) *
 		       MLX5_COUNTERS_PER_POOL;
 		pool = rte_calloc(__func__, 1, size, 0);
 		if (!pool)
 			return 0;
+		pool->type |= CNT_POOL_TYPE_EXT;
 		for (i = 0; i < MLX5_COUNTERS_PER_POOL; ++i) {
 			cnt = MLX5_POOL_GET_CNT(pool, i);
 			TAILQ_INSERT_HEAD(&pool->counters, cnt, next);
-- 
1.8.3.1


^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: [dpdk-dev] [PATCH] net/mlx5: fix Verbs counter pool allocation
  2020-05-15  0:48 [dpdk-dev] [PATCH] net/mlx5: fix Verbs counter pool allocation Suanming Mou
@ 2020-05-17  8:34 ` Raslan Darawsheh
  0 siblings, 0 replies; 2+ messages in thread
From: Raslan Darawsheh @ 2020-05-17  8:34 UTC (permalink / raw)
  To: Suanming Mou, Matan Azrad, Shahaf Shuler, Slava Ovsiienko
  Cc: dev, Bill Zhou, Wisam Monther

Hi,

> -----Original Message-----
> From: Suanming Mou <suanmingm@mellanox.com>
> Sent: Friday, May 15, 2020 3:48 AM
> To: Matan Azrad <matan@mellanox.com>; Shahaf Shuler
> <shahafs@mellanox.com>; Slava Ovsiienko <viacheslavo@mellanox.com>
> Cc: dev@dpdk.org; Raslan Darawsheh <rasland@mellanox.com>; Bill Zhou
> <dongz@mellanox.com>; Wisam Monther <wisamm@mellanox.com>
> Subject: [PATCH] net/mlx5: fix Verbs counter pool allocation
> 
> When create the Verbs flows with counter, randomly SEGSEV will also
> comes. The reason is that the counter pool memory is not allocated
> sufficiently and initialized correctly in Verbs case.
> 
> As the mlx5_flow_counter array member is moved out of the counter pool
> struct, the counter pool memory layout currently contain implicitly
> with mlx5_flow_counter, mlx5_age_param(if the pool is an age pool),
> mlx5_flow_counter_ext(if the pool is a none batch pool). When allocate
> the pool memory, the pool size should be calculated based on the pool
> type accordingly.
> 
> Currently, for Verbs counter pool, both mlx5_flow_counter and
> mlx5_flow_counter_ext need to be taken into account in the pool size.
> And the pool type should also be initialized as CNT_POOL_TYPE_EXT.
> 
> This patch add the missing size and type for the Verbs counter pool.
> 
> Fixes: 8d93c830e450 ("net/mlx5: modify ext-counter memory allocation")
> 
> Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
> Acked-by: Matan Azrad <matan@mellanox.com>
> ---
>  drivers/net/mlx5/mlx5_flow_verbs.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c
> b/drivers/net/mlx5/mlx5_flow_verbs.c
> index 01eec31..c266e56 100644
> --- a/drivers/net/mlx5/mlx5_flow_verbs.c
> +++ b/drivers/net/mlx5/mlx5_flow_verbs.c
> @@ -201,11 +201,12 @@
>  			cont->n += MLX5_CNT_CONTAINER_RESIZE;
>  		}
>  		/* Allocate memory for new pool*/
> -		size = sizeof(*pool) + sizeof(*cnt_ext) *
> +		size = sizeof(*pool) + (sizeof(*cnt_ext) + sizeof(*cnt)) *
>  		       MLX5_COUNTERS_PER_POOL;
>  		pool = rte_calloc(__func__, 1, size, 0);
>  		if (!pool)
>  			return 0;
> +		pool->type |= CNT_POOL_TYPE_EXT;
>  		for (i = 0; i < MLX5_COUNTERS_PER_POOL; ++i) {
>  			cnt = MLX5_POOL_GET_CNT(pool, i);
>  			TAILQ_INSERT_HEAD(&pool->counters, cnt, next);
> --
> 1.8.3.1

Patch applied to next-net-mlx,

Kindest regards,
Raslan Darawsheh

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-05-17  8:34 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-15  0:48 [dpdk-dev] [PATCH] net/mlx5: fix Verbs counter pool allocation Suanming Mou
2020-05-17  8:34 ` Raslan Darawsheh

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).