bnx2x: Replace doorbell barrier() with wmb()
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>
This commit is contained in:
parent
f9442ac498
commit
edd874235a
|
@ -4153,7 +4153,8 @@ netdev_tx_t bnx2x_start_xmit(struct sk_buff *skb, struct net_device *dev)
|
|||
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);
|
||||
|
||||
|
|
|
@ -2591,7 +2591,8 @@ static int bnx2x_run_loopback(struct bnx2x *bp, int loopback_mode)
|
|||
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();
|
||||
|
|
Loading…
Reference in New Issue