net/enetc: relax read for Tx CI in clean Tx
authorAlex Marginean <alexandru.marginean@nxp.com>
Mon, 2 Mar 2020 14:32:01 +0000 (20:02 +0530)
committerFerruh Yigit <ferruh.yigit@intel.com>
Wed, 18 Mar 2020 09:21:41 +0000 (10:21 +0100)
We don't need barriers here since this read doesn't have to be strictly
serialized in relation to other surrounding memory/register accesses.
We only want a reasonably recent value out of hardware so we know how
much we can clean.

Signed-off-by: Alex Marginean <alexandru.marginean@nxp.com>
Acked-by: Gagandeep Singh <g.singh@nxp.com>
drivers/net/enetc/enetc_rxtx.c

index b7ecb75..395f5ec 100644 (file)
@@ -23,12 +23,15 @@ enetc_clean_tx_ring(struct enetc_bdr *tx_ring)
        struct enetc_swbd *tx_swbd;
        int i, hwci;
 
+       /* we don't need barriers here, we just want a relatively current value
+        * from HW.
+        */
+       hwci = (int)(rte_read32_relaxed(tx_ring->tcisr) &
+                    ENETC_TBCISR_IDX_MASK);
+
        i = tx_ring->next_to_clean;
        tx_swbd = &tx_ring->q_swbd[i];
 
-       hwci = (int)(enetc_rd_reg(tx_ring->tcisr) &
-                    ENETC_TBCISR_IDX_MASK);
-
        /* we're only reading the CI index once here, which means HW may update
         * it while we're doing clean-up.  We could read the register in a loop
         * but for now I assume it's OK to leave a few Tx frames for next call.