[dpdk-dev] [dpdk-stable] [PATCH 3/3] test/hash: init hash parameters in the correct function

David Marchand david.marchand at redhat.com
Thu Jun 27 10:07:54 CEST 2019


On Thu, Jun 27, 2019 at 5:25 AM Honnappa Nagarahalli <
honnappa.nagarahalli at arm.com> wrote:

> Each test case initializes its hash parameters in the test case
> function. To be consistent, generate keys function should initialize
> hash parameters similarly.
>
> Fixes: c7eb0972e74b ("test/hash: add lock-free r/w concurrency")
> Cc: stable at dpdk.org
>
> Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli at arm.com>
> Reviewed-by: Dharmik Thakkar <dharmik.thakkar at arm.com>
> ---
>  app/test/test_hash_readwrite_lf.c | 98 +++++++++++++++----------------
>  1 file changed, 49 insertions(+), 49 deletions(-)
>
> diff --git a/app/test/test_hash_readwrite_lf.c
> b/app/test/test_hash_readwrite_lf.c
> index e92d1065b..efabb60ef 100644
> --- a/app/test/test_hash_readwrite_lf.c
> +++ b/app/test/test_hash_readwrite_lf.c
> @@ -141,6 +141,52 @@ get_enabled_cores_list(void)
>         return 0;
>  }
>
> +static int
> +init_params(int rwc_lf, int use_jhash, int htm, int ext_bkt)
> +{
> +       struct rte_hash *handle;
> +
> +       struct rte_hash_parameters hash_params = {
> +               .entries = TOTAL_ENTRY,
> +               .key_len = sizeof(uint32_t),
> +               .hash_func_init_val = 0,
> +               .socket_id = rte_socket_id(),
> +       };
> +
> +       if (use_jhash)
> +               hash_params.hash_func = rte_jhash;
> +       else
> +               hash_params.hash_func = rte_hash_crc;
> +
> +       if (rwc_lf)
> +               hash_params.extra_flag =
> +                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF |
> +                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> +       else if (htm)
> +               hash_params.extra_flag =
> +                       RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT |
> +                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY |
> +                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> +       else
> +               hash_params.extra_flag =
> +                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY |
> +                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> +
> +       if (ext_bkt)
> +               hash_params.extra_flag |= RTE_HASH_EXTRA_FLAGS_EXT_TABLE;
> +
> +       hash_params.name = "tests";
> +
> +       handle = rte_hash_create(&hash_params);
> +       if (handle == NULL) {
> +               printf("hash creation failed");
> +               return -1;
> +       }
> +
> +       tbl_rwc_test_param.h = handle;
> +       return 0;
> +}
> +
>  static inline int
>  check_bucket(uint32_t bkt_idx, uint32_t key)
>  {
> @@ -215,6 +261,9 @@ generate_keys(void)
>         uint32_t count_keys_extbkt = 0;
>         uint32_t i;
>
> +       if (init_params(0, 0, 0, 0) != 0)
> +               return -1;
> +
>         /*
>          * keys will consist of a) keys whose addition to the hash table
>          * will result in shifting of the existing keys to their alternate
> @@ -504,52 +553,6 @@ generate_keys(void)
>         return -1;
>  }
>
> -static int
> -init_params(int rwc_lf, int use_jhash, int htm, int ext_bkt)
> -{
> -       struct rte_hash *handle;
> -
> -       struct rte_hash_parameters hash_params = {
> -               .entries = TOTAL_ENTRY,
> -               .key_len = sizeof(uint32_t),
> -               .hash_func_init_val = 0,
> -               .socket_id = rte_socket_id(),
> -       };
> -
> -       if (use_jhash)
> -               hash_params.hash_func = rte_jhash;
> -       else
> -               hash_params.hash_func = rte_hash_crc;
> -
> -       if (rwc_lf)
> -               hash_params.extra_flag =
> -                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY_LF |
> -                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> -       else if (htm)
> -               hash_params.extra_flag =
> -                       RTE_HASH_EXTRA_FLAGS_TRANS_MEM_SUPPORT |
> -                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY |
> -                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> -       else
> -               hash_params.extra_flag =
> -                       RTE_HASH_EXTRA_FLAGS_RW_CONCURRENCY |
> -                       RTE_HASH_EXTRA_FLAGS_MULTI_WRITER_ADD;
> -
> -       if (ext_bkt)
> -               hash_params.extra_flag |= RTE_HASH_EXTRA_FLAGS_EXT_TABLE;
> -
> -       hash_params.name = "tests";
> -
> -       handle = rte_hash_create(&hash_params);
> -       if (handle == NULL) {
> -               printf("hash creation failed");
> -               return -1;
> -       }
> -
> -       tbl_rwc_test_param.h = handle;
> -       return 0;
> -}
> -
>  static int
>  test_rwc_reader(__attribute__((unused)) void *arg)
>  {
> @@ -1254,7 +1257,6 @@ test_hash_readwrite_lf_main(void)
>          */
>         int rwc_lf = 0;
>         int htm;
> -       int use_jhash = 0;
>         int ext_bkt = 0;
>         if (rte_lcore_count() == 1) {
>                 printf("More than one lcore is required "
> @@ -1272,8 +1274,6 @@ test_hash_readwrite_lf_main(void)
>         else
>                 htm = 0;
>
> -       if (init_params(rwc_lf, use_jhash, htm, ext_bkt) != 0)
> -               return -1;
>         if (generate_keys() != 0)
>                 return -1;
>         if (get_enabled_cores_list() != 0)
> --
> 2.17.1
>
>
This patch impacts the memory allocations, it should be placed before patch
2.


-- 
David Marchand


More information about the dev mailing list