> 
> Add test cases to test legacy and rte_ring_xxx_elem APIs for
> burst enqueue/dequeue test cases.
> 
> Signed-off-by: Honnappa Nagarahalli <honnappa.nagaraha...@arm.com>
> Reviewed-by: Gavin Hu <gavin...@arm.com>
> ---
>  app/test/test_ring_perf.c | 78 ++++++++++++++++++++-------------------
>  1 file changed, 40 insertions(+), 38 deletions(-)
> 
> diff --git a/app/test/test_ring_perf.c b/app/test/test_ring_perf.c
> index 5829718c1..508c688dc 100644
> --- a/app/test/test_ring_perf.c
> +++ b/app/test/test_ring_perf.c
> @@ -397,47 +397,40 @@ test_single_enqueue_dequeue(struct rte_ring *r, const 
> int esize,
>  }
> 
>  /*
> - * Test that does both enqueue and dequeue on a core using the burst() API 
> calls
> - * instead of the bulk() calls used in other tests. Results should be the 
> same
> - * as for the bulk function called on a single lcore.
> + * Test that does both enqueue and dequeue on a core using the burst/bulk API
> + * calls Results should be the same as for the bulk function called on a
> + * single lcore.
>   */
> -static void
> -test_burst_enqueue_dequeue(struct rte_ring *r)
> +static int
> +test_burst_bulk_enqueue_dequeue(struct rte_ring *r, const int esize,
> +     const unsigned int api_type)
>  {
> -     const unsigned iter_shift = 23;
> -     const unsigned iterations = 1<<iter_shift;
> -     unsigned sz, i = 0;
> -     void *burst[MAX_BURST] = {0};
> +     int ret;
> +     const unsigned int iter_shift = 23;
> +     const unsigned int iterations = 1 << iter_shift;
> +     unsigned int sz, i = 0;
> +     void **burst = NULL;
> 
> -     for (sz = 0; sz < sizeof(bulk_sizes)/sizeof(bulk_sizes[0]); sz++) {
> -             const uint64_t sc_start = rte_rdtsc();
> -             for (i = 0; i < iterations; i++) {
> -                     rte_ring_sp_enqueue_burst(r, burst,
> -                                     bulk_sizes[sz], NULL);
> -                     rte_ring_sc_dequeue_burst(r, burst,
> -                                     bulk_sizes[sz], NULL);
> -             }
> -             const uint64_t sc_end = rte_rdtsc();
> +     (void)ret;
> +     burst = test_ring_calloc(MAX_BURST, esize);
> +     if (burst == NULL)
> +             return -1;
> 
> -             const uint64_t mc_start = rte_rdtsc();
> +     for (sz = 0; sz < RTE_DIM(bulk_sizes); sz++) {
> +             const uint64_t start = rte_rdtsc();
>               for (i = 0; i < iterations; i++) {
> -                     rte_ring_mp_enqueue_burst(r, burst,
> -                                     bulk_sizes[sz], NULL);
> -                     rte_ring_mc_dequeue_burst(r, burst,
> -                                     bulk_sizes[sz], NULL);
> +                     TEST_RING_ENQUEUE(r, burst, esize, bulk_sizes[sz],
> +                                             ret, api_type);
> +                     TEST_RING_DEQUEUE(r, burst, esize, bulk_sizes[sz],
> +                                             ret, api_type);
>               }
> -             const uint64_t mc_end = rte_rdtsc();
> -
> -             double mc_avg = ((double)(mc_end-mc_start) / iterations) /
> -                                     bulk_sizes[sz];
> -             double sc_avg = ((double)(sc_end-sc_start) / iterations) /
> -                                     bulk_sizes[sz];
> +             const uint64_t end = rte_rdtsc();
> 
> -             printf("SP/SC burst enq/dequeue (size: %u): %.2F\n",
> -                             bulk_sizes[sz], sc_avg);
> -             printf("MP/MC burst enq/dequeue (size: %u): %.2F\n",
> -                             bulk_sizes[sz], mc_avg);
> +             test_ring_print_test_string(api_type, esize, bulk_sizes[sz],
> +                                     ((double)(end - start)) / iterations);
>       }
> +

missing rte_free(burst);
?

> +     return 0;
>  }
> 

Reply via email to