All four barriers publish flow table or ring updates before a
control message enqueue, which is release ordering. All are on the
migration control path, not per event.

The fences may in fact be removable: the control messages travel
through rte_ring, whose producer tail update is itself a release
store covering the preceding writes. Left in place here to keep
this a like for like conversion.

Signed-off-by: Stephen Hemminger <[email protected]>
---
 drivers/event/dsw/dsw_event.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/drivers/event/dsw/dsw_event.c b/drivers/event/dsw/dsw_event.c
index 399d9f050e..82d3636b29 100644
--- a/drivers/event/dsw/dsw_event.c
+++ b/drivers/event/dsw/dsw_event.c
@@ -339,7 +339,7 @@ dsw_port_handle_pause_flows(struct dsw_evdev *dsw, struct 
dsw_port *port,
        /* Make sure any stores to the original port's in_ring is seen
         * before the ctl message.
         */
-       rte_smp_wmb();
+       rte_atomic_thread_fence(rte_memory_order_release);
 
        dsw_port_ctl_enqueue(&dsw->ports[originating_port_id], &cfm);
 }
@@ -821,7 +821,7 @@ dsw_port_move_parallel_flows(struct dsw_evdev *dsw,
                }
        }
 
-       rte_smp_wmb();
+       rte_atomic_thread_fence(rte_memory_order_release);
 
        dsw_port_end_emigration(dsw, source_port, RTE_SCHED_TYPE_PARALLEL);
 }
@@ -1190,7 +1190,7 @@ dsw_port_move_emigrating_flows(struct dsw_evdev *dsw,
                    dest_port_id;
        }
 
-       rte_smp_wmb();
+       rte_atomic_thread_fence(rte_memory_order_release);
 
        dsw_port_drain_in_ring(source_port);
        dsw_port_forward_emigrated_flows(dsw, source_port);
@@ -1213,7 +1213,7 @@ dsw_port_move_emigrating_flows(struct dsw_evdev *dsw,
        /* Flow table update and migration destination port's enqueues
         * must be seen before the control message.
         */
-       rte_smp_wmb();
+       rte_atomic_thread_fence(rte_memory_order_release);
 
        dsw_port_ctl_broadcast(dsw, source_port, DSW_CTL_UNPAUSE_REQ,
                               source_port->emigration_target_qfs,
-- 
2.53.0

Reply via email to