[dpdk-dev] [PATCH v2 00/10] net/mlx5: optimize flow resource allocation

Ferruh Yigit ferruh.yigit at intel.com
Fri Apr 17 16:58:39 CEST 2020


On 4/16/2020 3:41 AM, Suanming Mou wrote:
> Currently, flow may allocate several action resources during creation.
> Both allocate the individual resources and save the object handles have
> big memory overhead for the flow.
> 
> Indexed memory pool is introduced to optimize the memory overhead. The
> resources can be allocated from the resource's own individual memory pool
> and only the 32-bits index is saved to the flow.
> 
> In this case, it saves MALLOC_ELEM_OVERHEAD and 4 bytes for every flow
> resources.
> 
> This patch series depends on the path which has been acked as below:
> https://patches.dpdk.org/patch/68143/
> 
> v2: 
> - rebase to the lastet version.
> - add the missing 10th patch.
> 
> Suanming Mou (10):
>   net/mlx5: add indexed memory pool
>   net/mlx5: add trunk dynamic grow for indexed pool
>   net/mlx5: add trunk release for indexed pool
>   net/mlx5: convert encap/decap resource to indexed
>   net/mlx5: convert push VLAN resource to indexed
>   net/mlx5: convert tag resource to indexed
>   net/mlx5: convert port id action to indexed
>   net/mlx5: convert jump resource to indexed
>   net/mlx5: convert hrxq to indexed
>   net/mlx5: convert flow dev handle to indexed

Hi Suanming, Raslan,

There is a 32-bit build error [1], can you please check it?

[1]
.../drivers/net/mlx5/mlx5_utils.c: In function ‘mlx5_ipool_dump’:
.../drivers/net/mlx5/mlx5_utils.c:475:26: error: format ‘%ld’ expects argument
of type ‘long int’, but argument 3 has type ‘int64_t’ {aka ‘long long int’}
[-Werror=format=]
  475 |  printf("Pool %s entry %ld, trunk alloc %ld, empty: %ld, "
      |                        ~~^
      |                          |
      |                          long int
      |                        %lld
  476 |         "available %ld free %ld\n",
  477 |         pool->cfg.type, pool->n_entry, pool->trunk_new,
      |                         ~~~~~~~~~~~~~
      |                             |
      |                             int64_t {aka long long int}
.../drivers/net/mlx5/mlx5_utils.c:475:43: error: format ‘%ld’ expects argument
of type ‘long int’, but argument 4 has type ‘int64_t’ {aka ‘long long int’}
[-Werror=format=]
  475 |  printf("Pool %s entry %ld, trunk alloc %ld, empty: %ld, "
      |                                         ~~^
      |                                           |
      |                                           long int
      |                                         %lld
  476 |         "available %ld free %ld\n",
  477 |         pool->cfg.type, pool->n_entry, pool->trunk_new,
      |                                        ~~~~~~~~~~~~~~~
      |                                            |
      |                                            int64_t {aka long long int}
.../drivers/net/mlx5/mlx5_utils.c:475:55: error: format ‘%ld’ expects argument
of type ‘long int’, but argument 5 has type ‘int64_t’ {aka ‘long long int’}
[-Werror=format=]
  475 |  printf("Pool %s entry %ld, trunk alloc %ld, empty: %ld, "
      |                                                     ~~^
      |                                                       |
      |                                                       long int
      |                                                     %lld
......
  478 |         pool->trunk_empty, pool->trunk_avail, pool->trunk_free);
      |         ~~~~~~~~~~~~~~~~~
      |             |
      |             int64_t {aka long long int}
.../drivers/net/mlx5/mlx5_utils.c:475:9: error: format ‘%ld’ expects argument of
type ‘long int’, but argument 6 has type ‘int64_t’ {aka ‘long long int’}
[-Werror=format=]
  475 |  printf("Pool %s entry %ld, trunk alloc %ld, empty: %ld, "
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
  478 |         pool->trunk_empty, pool->trunk_avail, pool->trunk_free);
      |                            ~~~~~~~~~~~~~~~~~
      |                                |
      |                                int64_t {aka long long int}
.../drivers/net/mlx5/mlx5_utils.c:476:22: note: format string is defined here
  476 |         "available %ld free %ld\n",
      |                    ~~^
      |                      |
      |                      long int
      |                    %lld
.../drivers/net/mlx5/mlx5_utils.c:475:9: error: format ‘%ld’ expects argument of
type ‘long int’, but argument 7 has type ‘int64_t’ {aka ‘long long int’}
[-Werror=format=]
  475 |  printf("Pool %s entry %ld, trunk alloc %ld, empty: %ld, "
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
......
  478 |         pool->trunk_empty, pool->trunk_avail, pool->trunk_free);
      |                                               ~~~~~~~~~~~~~~~~
      |                                                   |
      |                                                   int64_t {aka long long
int}
      .../drivers/net/mlx5/mlx5_utils.c:476:31: note: format string is defined here
  476 |         "available %ld free %ld\n",
      |                             ~~^
      |                               |
      |                               long int
      |                             %lld
cc1: all warnings being treated as errors



More information about the dev mailing list