Re: [RFC 24/32] event/dsw: replace SMP barriers with release fences
Mattias Rönnblom <[email protected]> Fri, 31 Jul 2026 06:37:50 +0200
| Newsgroups | org.dpdk.dev |
|---|---|
| Message-ID | <[email protected]> |
On 7/29/26 19:54, Stephen Hemminger wrote: > 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. > I also suspect you can remove some or all of these. Not sure it's worth the trouble though. > 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, Reviewed-by: Mattias Rönnblom <[email protected]>