summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/bnx2.c1
-rw-r--r--drivers/net/bnx2.h21
2 files changed, 13 insertions, 9 deletions
diff --git a/drivers/net/bnx2.c b/drivers/net/bnx2.c
index 3f2eaf52d197..6ccacb5f2545 100644
--- a/drivers/net/bnx2.c
+++ b/drivers/net/bnx2.c
@@ -48,6 +48,7 @@
#include <linux/workqueue.h>
#include <linux/crc32.h>
#include <linux/prefetch.h>
+#include <linux/cache.h>
#include "bnx2.h"
#include "bnx2_fw.h"
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index 60598849acd4..b87925f6a228 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -3877,15 +3877,17 @@ struct bnx2 {
#define USING_MSI_FLAG 0x20
#define ASF_ENABLE_FLAG 0x40
- struct tx_bd *tx_desc_ring;
- struct sw_bd *tx_buf_ring;
- u32 tx_prod_bseq;
- u16 tx_prod;
- u16 tx_cons;
- int tx_ring_size;
-
- u16 hw_tx_cons;
- u16 hw_rx_cons;
+ /* Put tx producer and consumer fields in separate cache lines. */
+
+ u32 tx_prod_bseq __attribute__((aligned(L1_CACHE_BYTES)));
+ u16 tx_prod;
+
+ struct tx_bd *tx_desc_ring;
+ struct sw_bd *tx_buf_ring;
+ int tx_ring_size;
+
+ u16 tx_cons __attribute__((aligned(L1_CACHE_BYTES)));
+ u16 hw_tx_cons;
#ifdef BCM_VLAN
struct vlan_group *vlgrp;
@@ -3899,6 +3901,7 @@ struct bnx2 {
u32 rx_prod_bseq;
u16 rx_prod;
u16 rx_cons;
+ u16 hw_rx_cons;
u32 rx_csum;