avf: use atomic store instead of barrier 28/29628/2
authorDamjan Marion <damarion@cisco.com>
Mon, 26 Oct 2020 10:27:13 +0000 (11:27 +0100)
committerOle Tr�an <otroan@employees.org>
Mon, 26 Oct 2020 14:16:59 +0000 (14:16 +0000)
Type: improvement
Change-Id: Ifea5f0c2fecb99fd320a2e1141f4b4f0d6a793ca
Signed-off-by: Damjan Marion <damarion@cisco.com>
src/plugins/avf/input.c
src/plugins/avf/output.c

index 0ccf772..9d677ab 100644 (file)
@@ -125,8 +125,7 @@ avf_rxq_refill (vlib_main_t * vm, vlib_node_runtime_t * node, avf_rxq_t * rxq,
       n_alloc -= 8;
     }
 
-  CLIB_MEMORY_STORE_BARRIER ();
-  *(rxq->qrx_tail) = slot;
+  clib_atomic_store_rel_n (rxq->qrx_tail, slot);
 }
 
 
index e5b53ba..de64531 100644 (file)
@@ -257,8 +257,8 @@ avf_tx_enqueue (vlib_main_t * vm, vlib_node_runtime_t * node, avf_txq_t * txq,
       d[0].qword[1] |= AVF_TXD_CMD_RS;
     }
 
-  CLIB_MEMORY_BARRIER ();
-  *(txq->qtx_tail) = txq->next = next & mask;
+  txq->next = next & mask;
+  clib_atomic_store_rel_n (txq->qtx_tail, txq->next);
   txq->n_enqueued += n_desc;
   return n_packets - n_packets_left;
 }