Hi Konstantin, It looks fine overall, few comments inline. <snip>
> Subject: [PATCH] test/ring: add stress test for ST peek API > > Introduce new test case to test ST peek API. > > Signed-off-by: Konstantin Ananyev <konstantin.anan...@intel.com> > --- > > This patch depends on the following patch: > "ring: fix error vlaue of tail in the peek API for ST mode" > (http://patches.dpdk.org/patch/72374/) > to run successfully. > > app/test/Makefile | 1 + > app/test/meson.build | 1 + > app/test/test_ring_st_peek_stress.c | 54 +++++++++++++++++++++++++++++ > app/test/test_ring_stress.c | 3 ++ > app/test/test_ring_stress.h | 1 + > 5 files changed, 60 insertions(+) > create mode 100644 app/test/test_ring_st_peek_stress.c > > diff --git a/app/test/Makefile b/app/test/Makefile index > 7b96a03a6..37bdaf891 100644 > --- a/app/test/Makefile > +++ b/app/test/Makefile > @@ -83,6 +83,7 @@ SRCS-y += test_ring_hts_stress.c SRCS-y += > test_ring_perf.c SRCS-y += test_ring_peek_stress.c SRCS-y += > test_ring_rts_stress.c > +SRCS-y += test_ring_st_peek_stress.c > SRCS-y += test_ring_stress.c > SRCS-y += test_pmd_perf.c > > diff --git a/app/test/meson.build b/app/test/meson.build index > 5233ead46..4ec7da6b2 100644 > --- a/app/test/meson.build > +++ b/app/test/meson.build > @@ -108,6 +108,7 @@ test_sources = files('commands.c', > 'test_ring_peek_stress.c', > 'test_ring_perf.c', > 'test_ring_rts_stress.c', > + 'test_ring_st_peek_stress.c', I think we should rename test_ring_peek_stress.c to test_ring_mpmc_hts_peek_stress.c to be consistent with this? > 'test_ring_stress.c', > 'test_rwlock.c', > 'test_sched.c', > diff --git a/app/test/test_ring_st_peek_stress.c > b/app/test/test_ring_st_peek_stress.c > new file mode 100644 > index 000000000..bc573de47 > --- /dev/null > +++ b/app/test/test_ring_st_peek_stress.c > @@ -0,0 +1,54 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(c) 2020 Intel Corporation > + */ > + > +#include "test_ring_stress_impl.h" > +#include <rte_ring_elem.h> > + > +static inline uint32_t > +_st_ring_dequeue_bulk(struct rte_ring *r, void **obj, uint32_t n, > + uint32_t *avail) > +{ > + uint32_t m; > + > + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; > + > + rte_spinlock_lock(&lck); > + > + m = rte_ring_dequeue_bulk_start(r, obj, n, avail); > + n = (m == n) ? n : 0; > + rte_ring_dequeue_finish(r, n); > + > + rte_spinlock_unlock(&lck); > + return n; > +} > + > +static inline uint32_t > +_st_ring_enqueue_bulk(struct rte_ring *r, void * const *obj, uint32_t n, > + uint32_t *free) > +{ > + uint32_t m; > + > + static rte_spinlock_t lck = RTE_SPINLOCK_INITIALIZER; > + > + rte_spinlock_lock(&lck); > + > + m = rte_ring_enqueue_bulk_start(r, n, free); > + n = (m == n) ? n : 0; > + rte_ring_enqueue_finish(r, obj, n); > + > + rte_spinlock_unlock(&lck); > + return n; > +} > + > +static int > +_st_ring_init(struct rte_ring *r, const char *name, uint32_t num) { > + return rte_ring_init(r, name, num, RING_F_SP_ENQ | > RING_F_SC_DEQ); } > + > +const struct test test_ring_st_peek_stress = { > + .name = "ST_PEEK", > + .nb_case = RTE_DIM(tests), > + .cases = tests, > +}; > diff --git a/app/test/test_ring_stress.c b/app/test/test_ring_stress.c index > 853fcc190..387cfa747 100644 > --- a/app/test/test_ring_stress.c > +++ b/app/test/test_ring_stress.c > @@ -49,6 +49,9 @@ test_ring_stress(void) > n += test_ring_peek_stress.nb_case; > k += run_test(&test_ring_peek_stress); > > + n += test_ring_st_peek_stress.nb_case; > + k += run_test(&test_ring_st_peek_stress); > + > printf("Number of tests:\t%u\nSuccess:\t%u\nFailed:\t%u\n", > n, k, n - k); > return (k != n); > diff --git a/app/test/test_ring_stress.h b/app/test/test_ring_stress.h index > 60953ce47..a9a390341 100644 > --- a/app/test/test_ring_stress.h > +++ b/app/test/test_ring_stress.h > @@ -36,3 +36,4 @@ extern const struct test test_ring_mpmc_stress; extern > const struct test test_ring_rts_stress; extern const struct test > test_ring_hts_stress; extern const struct test test_ring_peek_stress; > +extern const struct test test_ring_st_peek_stress; > -- > 2.17.1