diff options
author | Benjamin Poirier <bpoirier@suse.com> | 2016-11-07 10:57:56 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-11-09 19:31:10 +0100 |
commit | d667f78514c656a6a8bf0b3d6134a7fe5cd4d317 (patch) | |
tree | 7ed61aa920207a95b8f1bbcfb89d6623f0336e37 /drivers/net/ethernet/broadcom/bgmac.c | |
parent | Revert "net/mlx4_en: Fix panic during reboot" (diff) | |
download | linux-d667f78514c656a6a8bf0b3d6134a7fe5cd4d317.tar.xz linux-d667f78514c656a6a8bf0b3d6134a7fe5cd4d317.zip |
bna: Add synchronization for tx ring.
We received two reports of BUG_ON in bnad_txcmpl_process() where
hw_consumer_index appeared to be ahead of producer_index. Out of order
write/read of these variables could explain these reports.
bnad_start_xmit(), as a producer of tx descriptors, has a few memory
barriers sprinkled around writes to producer_index and the device's
doorbell but they're not paired with anything in bnad_txcmpl_process(), a
consumer.
Since we are synchronizing with a device, we must use mandatory barriers,
not smp_*. Also, I didn't see the purpose of the last smp_mb() in
bnad_start_xmit().
Signed-off-by: Benjamin Poirier <bpoirier@suse.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/broadcom/bgmac.c')
0 files changed, 0 insertions, 0 deletions