stack: remove acquire fence on push
authorSteven Lariau <steven.lariau@arm.com>
Fri, 25 Sep 2020 17:43:36 +0000 (18:43 +0100)
committerDavid Marchand <david.marchand@redhat.com>
Wed, 30 Sep 2020 19:08:39 +0000 (21:08 +0200)
An acquire fence is used to make sure loads after the fence can observe
all store operations before a specific store-release.
But push doesn't read any data, except for the head which is part of a
CAS operation (the items on the list are not read).
So there is no need for the acquire barrier.

Signed-off-by: Steven Lariau <steven.lariau@arm.com>
Reviewed-by: Dharmik Thakkar <dharmik.thakkar@arm.com>
Reviewed-by: Ruifeng Wang <ruifeng.wang@arm.com>
Acked-by: Gage Eads <gage.eads@intel.com>
lib/librte_stack/rte_stack_lf_c11.h

index 1e0ea0b..82b7287 100644 (file)
@@ -44,12 +44,6 @@ __rte_stack_lf_push_elems(struct rte_stack_lf_list *list,
        do {
                struct rte_stack_lf_head new_head;
 
-               /* Use an acquire fence to establish a synchronized-with
-                * relationship between the list->head load and store-release
-                * operations (as part of the rte_atomic128_cmp_exchange()).
-                */
-               __atomic_thread_fence(__ATOMIC_ACQUIRE);
-
                /* Swing the top pointer to the first element in the list and
                 * make the last element point to the old top.
                 */