aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2.h
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2008-06-19 19:38:19 -0400
committerDavid S. Miller <davem@davemloft.net>2008-06-19 19:38:19 -0400
commitbb4f98abf590cf9899017f14f1a54984f02a0009 (patch)
tree602da9b7cab22a16f2f1fd77f5db51a3de44b085 /drivers/net/bnx2.h
parent35e9010b22503f42cbf88144ffe1feff90ea3835 (diff)
bnx2: Put rx ring variables in a separate struct.
In preparation for multi-ring support, rx ring variables are now put in a separate bnx2_rx_ring_info struct. With MSI-X, we can support multiple rx rings. The functions to allocate/free rx memory and to initialize rx rings are now modified to handle multiple rings. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: Benjamin Li <benli@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2.h')
-rw-r--r--drivers/net/bnx2.h38
1 files changed, 24 insertions, 14 deletions
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index e4f0fb45bc6d..1c5ce80f6269 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -6479,6 +6479,7 @@ struct l2_fhdr {
6479#define TX_CID 16 6479#define TX_CID 16
6480#define TX_TSS_CID 32 6480#define TX_TSS_CID 32
6481#define RX_CID 0 6481#define RX_CID 0
6482#define RX_RSS_CID 4
6482 6483
6483#define MB_TX_CID_ADDR MB_GET_CID_ADDR(TX_CID) 6484#define MB_TX_CID_ADDR MB_GET_CID_ADDR(TX_CID)
6484#define MB_RX_CID_ADDR MB_GET_CID_ADDR(RX_CID) 6485#define MB_RX_CID_ADDR MB_GET_CID_ADDR(RX_CID)
@@ -6584,6 +6585,27 @@ struct bnx2_tx_ring_info {
6584 dma_addr_t tx_desc_mapping; 6585 dma_addr_t tx_desc_mapping;
6585}; 6586};
6586 6587
6588struct bnx2_rx_ring_info {
6589 u32 rx_prod_bseq;
6590 u16 rx_prod;
6591 u16 rx_cons;
6592
6593 u32 rx_bidx_addr;
6594 u32 rx_bseq_addr;
6595 u32 rx_pg_bidx_addr;
6596
6597 u16 rx_pg_prod;
6598 u16 rx_pg_cons;
6599
6600 struct sw_bd *rx_buf_ring;
6601 struct rx_bd *rx_desc_ring[MAX_RX_RINGS];
6602 struct sw_pg *rx_pg_ring;
6603 struct rx_bd *rx_pg_desc_ring[MAX_RX_PG_RINGS];
6604
6605 dma_addr_t rx_desc_mapping[MAX_RX_RINGS];
6606 dma_addr_t rx_pg_desc_mapping[MAX_RX_PG_RINGS];
6607};
6608
6587struct bnx2_napi { 6609struct bnx2_napi {
6588 struct napi_struct napi ____cacheline_aligned; 6610 struct napi_struct napi ____cacheline_aligned;
6589 struct bnx2 *bp; 6611 struct bnx2 *bp;
@@ -6592,13 +6614,7 @@ struct bnx2_napi {
6592 u32 last_status_idx; 6614 u32 last_status_idx;
6593 u32 int_num; 6615 u32 int_num;
6594 6616
6595 u32 rx_prod_bseq; 6617 struct bnx2_rx_ring_info rx_ring;
6596 u16 rx_prod;
6597 u16 rx_cons;
6598
6599 u16 rx_pg_prod;
6600 u16 rx_pg_cons;
6601
6602 struct bnx2_tx_ring_info tx_ring; 6618 struct bnx2_tx_ring_info tx_ring;
6603}; 6619};
6604 6620
@@ -6642,11 +6658,6 @@ struct bnx2 {
6642 6658
6643 u32 rx_csum; 6659 u32 rx_csum;
6644 6660
6645 struct sw_bd *rx_buf_ring;
6646 struct rx_bd *rx_desc_ring[MAX_RX_RINGS];
6647 struct sw_pg *rx_pg_ring;
6648 struct rx_bd *rx_pg_desc_ring[MAX_RX_PG_RINGS];
6649
6650 /* TX constants */ 6661 /* TX constants */
6651 int tx_ring_size; 6662 int tx_ring_size;
6652 u32 tx_wake_thresh; 6663 u32 tx_wake_thresh;
@@ -6727,11 +6738,9 @@ struct bnx2 {
6727 6738
6728 int rx_max_ring; 6739 int rx_max_ring;
6729 int rx_ring_size; 6740 int rx_ring_size;
6730 dma_addr_t rx_desc_mapping[MAX_RX_RINGS];
6731 6741
6732 int rx_max_pg_ring; 6742 int rx_max_pg_ring;
6733 int rx_pg_ring_size; 6743 int rx_pg_ring_size;
6734 dma_addr_t rx_pg_desc_mapping[MAX_RX_PG_RINGS];
6735 6744
6736 u16 tx_quick_cons_trip; 6745 u16 tx_quick_cons_trip;
6737 u16 tx_quick_cons_trip_int; 6746 u16 tx_quick_cons_trip_int;
@@ -6814,6 +6823,7 @@ struct bnx2 {
6814 int irq_nvecs; 6823 int irq_nvecs;
6815 6824
6816 u8 num_tx_rings; 6825 u8 num_tx_rings;
6826 u8 num_rx_rings;
6817}; 6827};
6818 6828
6819#define REG_RD(bp, offset) \ 6829#define REG_RD(bp, offset) \