[dpdk-dev] [PATCH 2/2] net/mlx5: fix allocation when no memory on device NUMA node

Nélio Laranjeiro nelio.laranjeiro at 6wind.com
Thu Jan 18 17:19:26 CET 2018


On Thu, Jan 18, 2018 at 02:00:43PM +0100, Olivier Matz wrote:
> If there is no memory available on the same numa node than the
> device, it is preferable to fallback on another socket instead
> of failing.
> 
> Fixes: 1e3a39f72d5d ("net/mlx5: allocate verbs object into shared memory")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Olivier Matz <olivier.matz at 6wind.com>
> ---
>  drivers/net/mlx5/mlx5.c | 4 ++++
>  1 file changed, 4 insertions(+)
> 
> diff --git a/drivers/net/mlx5/mlx5.c b/drivers/net/mlx5/mlx5.c
> index 1c95f3520..312f3d5be 100644
> --- a/drivers/net/mlx5/mlx5.c
> +++ b/drivers/net/mlx5/mlx5.c
> @@ -143,6 +143,10 @@ mlx5_alloc_verbs_buf(size_t size, void *data)
>  	assert(data != NULL);
>  	ret = rte_malloc_socket(__func__, size, alignment,
>  				priv->dev->device->numa_node);
> +	if (ret == NULL)
> +		ret = rte_malloc_socket(__func__, size, alignment,
> +					SOCKET_ID_ANY);
> +
>  	DEBUG("Extern alloc size: %lu, align: %lu: %p", size, alignment, ret);
>  	return ret;
>  }
> -- 
> 2.11.0
> 

This function is the finalisation of the creation of the queues and
contains the buffers to the CQ/WQ which must be on the correct socket
otherwise the performances will be limited.

Even if this function is only called on dev_start() it must reflect the
configuration requested from the application on the
rte_eth_{tx,rx}_queue_setup().

Regards,

-- 
Nélio Laranjeiro
6WIND


More information about the dev mailing list