barrier() doesn't guarantee memory writes to be observed by the hardware on
all architectures. barrier() only tells compiler not to move this code
with respect to other read/writes.
If memory write needs to be observed by the HW, wmb() is the right choice.
Signed-off-by: Sinan Kaya <okaya@codeaurora.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
        wmb();
 
        txdata->tx_db.data.prod += nbd;
-       barrier();
+       /* make sure descriptor update is observed by HW */
+       wmb();
 
        DOORBELL(bp, txdata->cid, txdata->tx_db.raw);
 
 
        wmb();
 
        txdata->tx_db.data.prod += 2;
-       barrier();
+       /* make sure descriptor update is observed by the HW */
+       wmb();
        DOORBELL(bp, txdata->cid, txdata->tx_db.raw);
 
        mmiowb();