aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/bnx2.h
diff options
context:
space:
mode:
authorMichael Chan <mchan@broadcom.com>2007-12-20 22:59:30 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 17:57:37 -0500
commitb4b360420dcbbffb15f5749fc78225f4113cc7e2 (patch)
treea7378249d52fd80ac2599c66f624abf5918318ed /drivers/net/bnx2.h
parenta1f6019090f2c075b41624c32a825775f6865577 (diff)
[BNX2]: Support multiple MSIX IRQs.
Change bnx2_napi struct into an array and add code to manage multiple IRQs. MSIX hardware structures and new registers are also added. Signed-off-by: Michael Chan <mchan@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/bnx2.h')
-rw-r--r--drivers/net/bnx2.h40
1 files changed, 38 insertions, 2 deletions
diff --git a/drivers/net/bnx2.h b/drivers/net/bnx2.h
index b75795b4f8cf..d71ceb6c176f 100644
--- a/drivers/net/bnx2.h
+++ b/drivers/net/bnx2.h
@@ -154,6 +154,33 @@ struct status_block {
154#endif 154#endif
155}; 155};
156 156
157/*
158 * status_block definition
159 */
160struct status_block_msix {
161#if defined(__BIG_ENDIAN)
162 u16 status_tx_quick_consumer_index;
163 u16 status_rx_quick_consumer_index;
164 u16 status_completion_producer_index;
165 u16 status_cmd_consumer_index;
166 u32 status_unused;
167 u16 status_idx;
168 u8 status_unused2;
169 u8 status_blk_num;
170#elif defined(__LITTLE_ENDIAN)
171 u16 status_rx_quick_consumer_index;
172 u16 status_tx_quick_consumer_index;
173 u16 status_cmd_consumer_index;
174 u16 status_completion_producer_index;
175 u32 status_unused;
176 u8 status_blk_num;
177 u8 status_unused2;
178 u16 status_idx;
179#endif
180};
181
182#define BNX2_SBLK_MSIX_ALIGN_SIZE 128
183
157 184
158/* 185/*
159 * statistics_block definition 186 * statistics_block definition
@@ -413,6 +440,7 @@ struct l2_fhdr {
413#define BNX2_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM (1L<<17) 440#define BNX2_PCICFG_INT_ACK_CMD_USE_INT_HC_PARAM (1L<<17)
414#define BNX2_PCICFG_INT_ACK_CMD_MASK_INT (1L<<18) 441#define BNX2_PCICFG_INT_ACK_CMD_MASK_INT (1L<<18)
415#define BNX2_PCICFG_INT_ACK_CMD_INTERRUPT_NUM (0xfL<<24) 442#define BNX2_PCICFG_INT_ACK_CMD_INTERRUPT_NUM (0xfL<<24)
443#define BNX2_PCICFG_INT_ACK_CMD_INT_NUM_SHIFT 24
416 444
417#define BNX2_PCICFG_STATUS_BIT_SET_CMD 0x00000088 445#define BNX2_PCICFG_STATUS_BIT_SET_CMD 0x00000088
418#define BNX2_PCICFG_STATUS_BIT_CLEAR_CMD 0x0000008c 446#define BNX2_PCICFG_STATUS_BIT_CLEAR_CMD 0x0000008c
@@ -428,6 +456,9 @@ struct l2_fhdr {
428#define BNX2_PCI_GRC_WINDOW_ADDR_VALUE (0x1ffL<<13) 456#define BNX2_PCI_GRC_WINDOW_ADDR_VALUE (0x1ffL<<13)
429#define BNX2_PCI_GRC_WINDOW_ADDR_SEP_WIN (1L<<31) 457#define BNX2_PCI_GRC_WINDOW_ADDR_SEP_WIN (1L<<31)
430 458
459#define BNX2_PCI_GRC_WINDOW2_BASE 0xc000
460#define BNX2_PCI_GRC_WINDOW3_BASE 0xe000
461
431#define BNX2_PCI_CONFIG_1 0x00000404 462#define BNX2_PCI_CONFIG_1 0x00000404
432#define BNX2_PCI_CONFIG_1_RESERVED0 (0xffL<<0) 463#define BNX2_PCI_CONFIG_1_RESERVED0 (0xffL<<0)
433#define BNX2_PCI_CONFIG_1_READ_BOUNDARY (0x7L<<8) 464#define BNX2_PCI_CONFIG_1_READ_BOUNDARY (0x7L<<8)
@@ -700,6 +731,8 @@ struct l2_fhdr {
700#define BNX2_PCI_GRC_WINDOW3_ADDR 0x00000618 731#define BNX2_PCI_GRC_WINDOW3_ADDR 0x00000618
701#define BNX2_PCI_GRC_WINDOW3_ADDR_VALUE (0x1ffL<<13) 732#define BNX2_PCI_GRC_WINDOW3_ADDR_VALUE (0x1ffL<<13)
702 733
734#define BNX2_MSIX_TABLE_ADDR 0x318000
735#define BNX2_MSIX_PBA_ADDR 0x31c000
703 736
704/* 737/*
705 * misc_reg definition 738 * misc_reg definition
@@ -6500,6 +6533,7 @@ struct flash_spec {
6500struct bnx2_irq { 6533struct bnx2_irq {
6501 irq_handler_t handler; 6534 irq_handler_t handler;
6502 u16 vector; 6535 u16 vector;
6536 u8 requested;
6503 char name[16]; 6537 char name[16];
6504}; 6538};
6505 6539
@@ -6535,13 +6569,15 @@ struct bnx2 {
6535 u32 flags; 6569 u32 flags;
6536#define PCIX_FLAG 0x00000001 6570#define PCIX_FLAG 0x00000001
6537#define PCI_32BIT_FLAG 0x00000002 6571#define PCI_32BIT_FLAG 0x00000002
6538#define ONE_TDMA_FLAG 0x00000004 /* no longer used */ 6572#define MSIX_CAP_FLAG 0x00000004
6539#define NO_WOL_FLAG 0x00000008 6573#define NO_WOL_FLAG 0x00000008
6540#define USING_MSI_FLAG 0x00000020 6574#define USING_MSI_FLAG 0x00000020
6541#define ASF_ENABLE_FLAG 0x00000040 6575#define ASF_ENABLE_FLAG 0x00000040
6542#define MSI_CAP_FLAG 0x00000080 6576#define MSI_CAP_FLAG 0x00000080
6543#define ONE_SHOT_MSI_FLAG 0x00000100 6577#define ONE_SHOT_MSI_FLAG 0x00000100
6544#define PCIE_FLAG 0x00000200 6578#define PCIE_FLAG 0x00000200
6579#define USING_MSIX_FLAG 0x00000400
6580#define USING_MSI_OR_MSIX_FLAG (USING_MSI_FLAG | USING_MSIX_FLAG)
6545 6581
6546 /* Put tx producer and consumer fields in separate cache lines. */ 6582 /* Put tx producer and consumer fields in separate cache lines. */
6547 6583
@@ -6550,7 +6586,7 @@ struct bnx2 {
6550 u32 tx_bidx_addr; 6586 u32 tx_bidx_addr;
6551 u32 tx_bseq_addr; 6587 u32 tx_bseq_addr;
6552 6588
6553 struct bnx2_napi bnx2_napi; 6589 struct bnx2_napi bnx2_napi[BNX2_MAX_MSIX_VEC];
6554 6590
6555#ifdef BCM_VLAN 6591#ifdef BCM_VLAN
6556 struct vlan_group *vlgrp; 6592 struct vlan_group *vlgrp;