> -----Original Message-----
> From: Medvedkin, Vladimir <vladimir.medved...@intel.com>
> Sent: Thursday, March 26, 2020 9:47 AM
> To: dev@dpdk.org
> Cc: Wang, Yipeng1 <yipeng1.w...@intel.com>; Gobriel, Sameh
> <sameh.gobr...@intel.com>; Richardson, Bruce
> <bruce.richard...@intel.com>
> Subject: [PATCH v2 2/2] test: update hash performance tests
> 
> Add preformance test for rte_hash_lookup_with_hash_bulk_data()
> 
> Signed-off-by: Vladimir Medvedkin <vladimir.medved...@intel.com>
> ---
>  app/test/test_hash_perf.c | 45
> ++++++++++++++++++++++++++++++++++++++++-----
>  1 file changed, 40 insertions(+), 5 deletions(-)
> 
> diff --git a/app/test/test_hash_perf.c b/app/test/test_hash_perf.c index
> a438eae..e0d1600 100644
> --- a/app/test/test_hash_perf.c
> +++ b/app/test/test_hash_perf.c
> @@ -391,8 +391,8 @@ timed_lookups(unsigned int with_hash, unsigned int
> with_data,  }
> 
>  static int
> -timed_lookups_multi(unsigned int with_data, unsigned int table_index,
> -                                                     unsigned int ext)
> +timed_lookups_multi(unsigned int with_hash, unsigned int with_data,
> +             unsigned int table_index, unsigned int ext)
>  {
>       unsigned i, j, k;
>       int32_t positions_burst[BURST_SIZE];
> @@ -417,7 +417,7 @@ timed_lookups_multi(unsigned int with_data,
> unsigned int table_index,
>               for (j = 0; j < keys_to_add/BURST_SIZE; j++) {
>                       for (k = 0; k < BURST_SIZE; k++)
>                               keys_burst[k] = keys[j * BURST_SIZE + k];
> -                     if (with_data) {
> +                     if (!with_hash && with_data) {
>                               ret =
> rte_hash_lookup_bulk_data(h[table_index],
>                                       (const void **) keys_burst,
>                                       BURST_SIZE,
> @@ -442,6 +442,39 @@ timed_lookups_multi(unsigned int with_data,
> unsigned int table_index,
>                                               return -1;
>                                       }
>                               }
> +                     } else if (with_hash && with_data) {
> +                             ret =
> rte_hash_lookup_with_hash_bulk_data(
> +                                     h[table_index],
> +                                     (const void **)keys_burst,
> +                                     &signatures[j * BURST_SIZE],
> +                                     BURST_SIZE, &hit_mask, ret_data);
> +                             if (ret != BURST_SIZE) {
> +                                     printf("Expect to find %u keys,"
> +                                            " but found %d\n",
> +                                             BURST_SIZE, ret);
> +                                     return -1;
> +                             }
> +                             for (k = 0; k < BURST_SIZE; k++) {
> +                                     if ((hit_mask & (1ULL << k))  == 0) {
> +                                             printf("Key number %u"
> +                                                     " not found\n",
> +                                                     j * BURST_SIZE + k);
> +                                             return -1;
> +                                     }
> +                                     expected_data[k] =
> +                                             (void
> *)((uintptr_t)signatures[
> +                                             j * BURST_SIZE + k]);
> +                                     if (ret_data[k] != expected_data[k]) {
> +                                             printf("Data returned for
> key"
> +                                                     " number %u is %p,"
> +                                                     " but should
> be %p\n",
> +                                                     j * BURST_SIZE + k,
> +                                                     ret_data[k],
> +                                                     expected_data[k]);
> +                                             return -1;
> +                                     }
> +                             }
> +
>                       } else {
>                               rte_hash_lookup_bulk(h[table_index],
>                                               (const void **) keys_burst,
[Wang, Yipeng] 
Although not implemented for (with_hash && !with_data), data would be still 
printed to output.
This could be misleading.

Reply via email to