mlx4/mlx5: Use dma_wmb/rmb where appropriate
authorAlexander Duyck <alexander.h.duyck@redhat.com>
Thu, 9 Apr 2015 01:49:36 +0000 (18:49 -0700)
committerDavid S. Miller <davem@davemloft.net>
Thu, 9 Apr 2015 18:25:25 +0000 (14:25 -0400)
commit12b3375f3963536ba3ad47d2db49f72067b4905e
tree1aa5051a9936718911a87d8cc4eed864d703132b
parent019be1cff44bdfed23163be7469419be4f38589b
mlx4/mlx5: Use dma_wmb/rmb where appropriate

This patch should help to improve the performance of the mlx4 and mlx5 on a
number of architectures.  For example, on x86 the dma_wmb/rmb equates out
to a barrer() call as the architecture is already strong ordered, and on
PowerPC the call works out to a lwsync which is significantly less expensive
than the sync call that was being used for wmb.

I placed the new barriers between any spots that seemed to be trying to
order memory/memory reads or writes, if there are any spots that involved
MMIO I left the existing wmb in place as the new barriers cannot order
transactions between coherent and non-coherent memories.

v2: Reduced the replacments to just the spots where I could clearly
    identify the usage pattern.

Cc: Amir Vadai <amirv@mellanox.com>
Cc: Ido Shamay <idos@mellanox.com>
Cc: Eli Cohen <eli@mellanox.com>
Signed-off-by: Alexander Duyck <alexander.h.duyck@redhat.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx4/en_rx.c
drivers/net/ethernet/mellanox/mlx4/en_tx.c
drivers/net/ethernet/mellanox/mlx4/eq.c
drivers/net/ethernet/mellanox/mlx5/core/eq.c