{
        bufs[count++] = ev->event_ptr;
 
-       /* wmb here ensures event_prt is stored before
-        * updating the number of processed packets
-        * for worker lcores
+       /* release fence here ensures event_prt is
+        * stored before updating the number of
+        * processed packets for worker lcores
         */
-       rte_smp_wmb();
+       rte_atomic_thread_fence(__ATOMIC_RELEASE);
        w->processed_pkts++;
 
        if (unlikely(count == buf_sz)) {
 
        bufs[count++] = ev->event_ptr;
 
-       /* wmb here ensures event_prt is stored before
-        * updating the number of processed packets
-        * for worker lcores
+       /* release fence here ensures event_prt is
+        * stored before updating the number of
+        * processed packets for worker lcores
         */
-       rte_smp_wmb();
+       rte_atomic_thread_fence(__ATOMIC_RELEASE);
        w->processed_pkts++;
 
        if (unlikely(count == buf_sz)) {