Commit 35e9010b authored by Michael Chan's avatar Michael Chan Committed by David S. Miller

bnx2: Put tx ring variables in a separate struct.

In preparation for multi-ring support, tx ring variables are now put
in a separate bnx2_tx_ring_info struct.  Multi tx ring will not be
enabled until it is fully supported by the stack.  Only 1 tx ring
will be used at the moment.

The functions to allocate/free tx memory and to initialize tx rings
are now modified to handle multiple rings.
Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
Signed-off-by: default avatarBenjamin Li <benli@broadcom.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 4497b076
This diff is collapsed.
...@@ -6569,6 +6569,21 @@ struct bnx2_irq { ...@@ -6569,6 +6569,21 @@ struct bnx2_irq {
char name[16]; char name[16];
}; };
struct bnx2_tx_ring_info {
u32 tx_prod_bseq;
u16 tx_prod;
u32 tx_bidx_addr;
u32 tx_bseq_addr;
struct tx_bd *tx_desc_ring;
struct sw_bd *tx_buf_ring;
u16 tx_cons;
u16 hw_tx_cons;
dma_addr_t tx_desc_mapping;
};
struct bnx2_napi { struct bnx2_napi {
struct napi_struct napi ____cacheline_aligned; struct napi_struct napi ____cacheline_aligned;
struct bnx2 *bp; struct bnx2 *bp;
...@@ -6577,9 +6592,6 @@ struct bnx2_napi { ...@@ -6577,9 +6592,6 @@ struct bnx2_napi {
u32 last_status_idx; u32 last_status_idx;
u32 int_num; u32 int_num;
u16 tx_cons;
u16 hw_tx_cons;
u32 rx_prod_bseq; u32 rx_prod_bseq;
u16 rx_prod; u16 rx_prod;
u16 rx_cons; u16 rx_cons;
...@@ -6587,6 +6599,7 @@ struct bnx2_napi { ...@@ -6587,6 +6599,7 @@ struct bnx2_napi {
u16 rx_pg_prod; u16 rx_pg_prod;
u16 rx_pg_cons; u16 rx_pg_cons;
struct bnx2_tx_ring_info tx_ring;
}; };
struct bnx2 { struct bnx2 {
...@@ -6614,14 +6627,6 @@ struct bnx2 { ...@@ -6614,14 +6627,6 @@ struct bnx2 {
BNX2_FLAG_USING_MSIX) BNX2_FLAG_USING_MSIX)
#define BNX2_FLAG_JUMBO_BROKEN 0x00000800 #define BNX2_FLAG_JUMBO_BROKEN 0x00000800
/* Put tx producer and consumer fields in separate cache lines. */
u32 tx_prod_bseq __attribute__((aligned(L1_CACHE_BYTES)));
u16 tx_prod;
u8 tx_vec;
u32 tx_bidx_addr;
u32 tx_bseq_addr;
struct bnx2_napi bnx2_napi[BNX2_MAX_MSIX_VEC]; struct bnx2_napi bnx2_napi[BNX2_MAX_MSIX_VEC];
#ifdef BCM_VLAN #ifdef BCM_VLAN
...@@ -6643,8 +6648,6 @@ struct bnx2 { ...@@ -6643,8 +6648,6 @@ struct bnx2 {
struct rx_bd *rx_pg_desc_ring[MAX_RX_PG_RINGS]; struct rx_bd *rx_pg_desc_ring[MAX_RX_PG_RINGS];
/* TX constants */ /* TX constants */
struct tx_bd *tx_desc_ring;
struct sw_bd *tx_buf_ring;
int tx_ring_size; int tx_ring_size;
u32 tx_wake_thresh; u32 tx_wake_thresh;
...@@ -6722,9 +6725,6 @@ struct bnx2 { ...@@ -6722,9 +6725,6 @@ struct bnx2 {
u16 fw_wr_seq; u16 fw_wr_seq;
u16 fw_drv_pulse_wr_seq; u16 fw_drv_pulse_wr_seq;
dma_addr_t tx_desc_mapping;
int rx_max_ring; int rx_max_ring;
int rx_ring_size; int rx_ring_size;
dma_addr_t rx_desc_mapping[MAX_RX_RINGS]; dma_addr_t rx_desc_mapping[MAX_RX_RINGS];
...@@ -6812,6 +6812,8 @@ struct bnx2 { ...@@ -6812,6 +6812,8 @@ struct bnx2 {
struct bnx2_irq irq_tbl[BNX2_MAX_MSIX_VEC]; struct bnx2_irq irq_tbl[BNX2_MAX_MSIX_VEC];
int irq_nvecs; int irq_nvecs;
u8 num_tx_rings;
}; };
#define REG_RD(bp, offset) \ #define REG_RD(bp, offset) \
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment