rdesc->desc3 = 0;
 
        /* Make sure ownership is written to the descriptor */
-       wmb();
+       dma_wmb();
 }
 
 static void xgbe_tx_desc_init(struct xgbe_channel *channel)
         * is written to the descriptor(s) before setting the OWN bit
         * for the descriptor
         */
-       wmb();
+       dma_wmb();
 
        XGMAC_SET_BITS_LE(rdesc->desc3, RX_NORMAL_DESC3, OWN, 1);
 
        /* Make sure ownership is written to the descriptor */
-       wmb();
+       dma_wmb();
 }
 
 static void xgbe_rx_desc_init(struct xgbe_channel *channel)
        struct xgbe_prv_data *pdata = channel->pdata;
        struct xgbe_ring_data *rdata;
 
+       /* Make sure everything is written before the register write */
+       wmb();
+
        /* Issue a poll command to Tx DMA by writing address
         * of next immediate free descriptor */
        rdata = XGBE_GET_DESC_DATA(ring, ring->cur);
         * is written to the descriptor(s) before setting the OWN bit
         * for the first descriptor
         */
-       wmb();
+       dma_wmb();
 
        /* Set OWN bit for the first descriptor */
        rdata = XGBE_GET_DESC_DATA(ring, start_index);
 #endif
 
        /* Make sure ownership is written to the descriptor */
-       wmb();
+       dma_wmb();
 
        ring->cur = cur_index + 1;
        if (!packet->skb->xmit_more ||
                return 1;
 
        /* Make sure descriptor fields are read after reading the OWN bit */
-       rmb();
+       dma_rmb();
 
 #ifdef XGMAC_ENABLE_RX_DESC_DUMP
        xgbe_dump_rx_desc(ring, rdesc, ring->cur);
 
                ring->dirty++;
        }
 
+       /* Make sure everything is written before the register write */
+       wmb();
+
        /* Update the Rx Tail Pointer Register with address of
         * the last cleaned entry */
        rdata = XGBE_GET_DESC_DATA(ring, ring->dirty - 1);
 
                /* Make sure descriptor fields are read after reading the OWN
                 * bit */
-               rmb();
+               dma_rmb();
 
 #ifdef XGMAC_ENABLE_TX_DESC_DUMP
                xgbe_dump_tx_desc(ring, ring->dirty, 1, 0);