[dpdk-dev] [PATCH v3 4/5] test/ring: add functional tests for zero copy APIs
Ananyev, Konstantin
konstantin.ananyev at intel.com
Fri Oct 23 16:20:25 CEST 2020
>
> Add functional tests for zero copy APIs. Test enqueue/dequeue
> functions are created using the zero copy APIs to fit into
> the existing testing method.
>
> Signed-off-by: Honnappa Nagarahalli <honnappa.nagarahalli at arm.com>
> Reviewed-by: Dharmik Thakkar <dharmik.thakkar at arm.com>
> ---
> app/test/test_ring.c | 196 +++++++++++++++++++++++++++++++++++++++++++
> app/test/test_ring.h | 42 ++++++++++
> 2 files changed, 238 insertions(+)
....
> diff --git a/app/test/test_ring.h b/app/test/test_ring.h
> index 16697ee02..33c8a31fe 100644
> --- a/app/test/test_ring.h
> +++ b/app/test/test_ring.h
> @@ -53,6 +53,48 @@ test_ring_inc_ptr(void **obj, int esize, unsigned int n)
> (n * esize / sizeof(uint32_t)));
> }
>
> +static inline void
> +test_ring_mem_copy(void *dst, void * const *src, int esize, unsigned int num)
> +{
> + size_t temp_sz;
> +
> + temp_sz = num * sizeof(void *);
> + if (esize != -1)
> + temp_sz = esize * num;
> +
> + memcpy(dst, src, temp_sz);
> +}
> +
> +/* Copy to the ring memory */
> +static inline void
> +test_ring_copy_to(struct rte_ring_zc_data *zcd, void * const *src, int esize,
> + unsigned int num)
> +{
> + test_ring_mem_copy(zcd->ptr1, src, esize, zcd->n1);
> + if (zcd->n1 != num) {
> + if (esize == -1)
> + src = src + zcd->n1;
> + else
> + src = (void * const *)(((const uint32_t *)src) +
> + (zcd->n1 * esize / sizeof(uint32_t)));
Why just not:
src = test_ring_inc_ptr(src, esize, zcd->n1);
?
Acked-by: Konstantin Ananyev <konstantin.ananyev at intel.com>
> + test_ring_mem_copy(zcd->ptr2, src,
> + esize, num - zcd->n1);
> + }
> +}
> +
> +/* Copy from the ring memory */
> +static inline void
> +test_ring_copy_from(struct rte_ring_zc_data *zcd, void *dst, int esize,
> + unsigned int num)
> +{
> + test_ring_mem_copy(dst, zcd->ptr1, esize, zcd->n1);
> +
> + if (zcd->n1 != num) {
> + dst = test_ring_inc_ptr(dst, esize, zcd->n1);
> + test_ring_mem_copy(dst, zcd->ptr2, esize, num - zcd->n1);
> + }
> +}
> +
> static __rte_always_inline unsigned int
> test_ring_enqueue(struct rte_ring *r, void **obj, int esize, unsigned int n,
> unsigned int api_type)
> --
> 2.17.1
More information about the dev
mailing list