diff options
author | Amit S. Kale <amitkale@netxen.com> | 2006-10-21 15:33:03 -0400 |
---|---|---|
committer | Jeff Garzik <jeff@garzik.org> | 2006-12-02 00:11:58 -0500 |
commit | 3d396eb17e9f8c5f59314078b45b88647591378d (patch) | |
tree | d0c54e4555c1bee13d403f6dad36b40ae26d74a2 /drivers/net/netxen/netxen_nic_phan_reg.h | |
parent | f3d1fca3eb05cf6ff3879a385a15d24fbf556c57 (diff) |
Add NetXen 1G/10G ethernet driver.
Signed-off-by: Amit S. Kale <amitkale@netxen.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
Diffstat (limited to 'drivers/net/netxen/netxen_nic_phan_reg.h')
-rw-r--r-- | drivers/net/netxen/netxen_nic_phan_reg.h | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/drivers/net/netxen/netxen_nic_phan_reg.h b/drivers/net/netxen/netxen_nic_phan_reg.h new file mode 100644 index 000000000000..863645ed1cd3 --- /dev/null +++ b/drivers/net/netxen/netxen_nic_phan_reg.h | |||
@@ -0,0 +1,195 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2003 - 2006 NetXen, Inc. | ||
3 | * All rights reserved. | ||
4 | * | ||
5 | * This program is free software; you can redistribute it and/or | ||
6 | * modify it under the terms of the GNU General Public License | ||
7 | * as published by the Free Software Foundation; either version 2 | ||
8 | * of the License, or (at your option) any later version. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, but | ||
11 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, | ||
18 | * MA 02111-1307, USA. | ||
19 | * | ||
20 | * The full GNU General Public License is included in this distribution | ||
21 | * in the file called LICENSE. | ||
22 | * | ||
23 | * Contact Information: | ||
24 | * info@netxen.com | ||
25 | * NetXen, | ||
26 | * 3965 Freedom Circle, Fourth floor, | ||
27 | * Santa Clara, CA 95054 | ||
28 | */ | ||
29 | |||
30 | #ifndef __NIC_PHAN_REG_H_ | ||
31 | #define __NIC_PHAN_REG_H_ | ||
32 | |||
33 | /* | ||
34 | * CRB Registers or queue message done only at initialization time. | ||
35 | */ | ||
36 | |||
37 | /* | ||
38 | * The following 2 are the base adresses for the CRB registers and their | ||
39 | * offsets will be added to get addresses for the index addresses. | ||
40 | */ | ||
41 | #define NIC_CRB_BASE_PORT1 NETXEN_CAM_RAM(0x200) | ||
42 | #define NIC_CRB_BASE_PORT2 NETXEN_CAM_RAM(0x250) | ||
43 | |||
44 | #define NETXEN_NIC_REG(X) (NIC_CRB_BASE_PORT1+(X)) | ||
45 | |||
46 | /* | ||
47 | * CrbPortPhanCntrHi/Lo is used to pass the address of HostPhantomIndex address | ||
48 | * which can be read by the Phantom host to get producer/consumer indexes from | ||
49 | * Phantom/Casper. If it is not HOST_SHARED_MEMORY, then the following | ||
50 | * registers will be used for the addresses of the ring's shared memory | ||
51 | * on the Phantom. | ||
52 | */ | ||
53 | |||
54 | #define CRB_PHAN_CNTRL_LO_OFFSET NETXEN_NIC_REG(0x00) | ||
55 | #define CRB_PHAN_CNTRL_HI_OFFSET NETXEN_NIC_REG(0x04) | ||
56 | |||
57 | /* point to the indexes */ | ||
58 | #define CRB_CMD_PRODUCER_OFFSET NETXEN_NIC_REG(0x08) | ||
59 | #define CRB_CMD_CONSUMER_OFFSET NETXEN_NIC_REG(0x0c) | ||
60 | |||
61 | /* address of command descriptors in the host memory */ | ||
62 | #define CRB_HOST_CMD_ADDR_HI NETXEN_NIC_REG(0x30) | ||
63 | #define CRB_HOST_CMD_ADDR_LO NETXEN_NIC_REG(0x34) | ||
64 | |||
65 | /* The following 4 CRB registers are for doing performance coal */ | ||
66 | #define CRB_CMD_INTR_LOOP NETXEN_NIC_REG(0x38) | ||
67 | #define CRB_CMD_DMA_LOOP NETXEN_NIC_REG(0x3c) | ||
68 | #define CRB_RCV_INTR_LOOP NETXEN_NIC_REG(0x40) | ||
69 | #define CRB_RCV_DMA_LOOP NETXEN_NIC_REG(0x44) | ||
70 | |||
71 | /* Needed by the host to find out the state of Phantom's initialization */ | ||
72 | #define CRB_ENABLE_TX_INTR NETXEN_NIC_REG(0x4c) | ||
73 | #define CRB_CMDPEG_STATE NETXEN_NIC_REG(0x50) | ||
74 | #define CRB_CMDPEG_CMDRING NETXEN_NIC_REG(0x54) | ||
75 | |||
76 | /* Interrupt coalescing parameters */ | ||
77 | #define CRB_GLOBAL_INT_COAL NETXEN_NIC_REG(0x80) | ||
78 | #define CRB_INT_COAL_MODE NETXEN_NIC_REG(0x84) | ||
79 | #define CRB_MAX_RCV_BUFS NETXEN_NIC_REG(0x88) | ||
80 | #define CRB_TX_INT_THRESHOLD NETXEN_NIC_REG(0x8c) | ||
81 | #define CRB_RX_PKT_TIMER NETXEN_NIC_REG(0x90) | ||
82 | #define CRB_TX_PKT_TIMER NETXEN_NIC_REG(0x94) | ||
83 | #define CRB_RX_PKT_CNT NETXEN_NIC_REG(0x98) | ||
84 | #define CRB_RX_TMR_CNT NETXEN_NIC_REG(0x9c) | ||
85 | |||
86 | /* Register for communicating XG link status */ | ||
87 | #define CRB_XG_STATE NETXEN_NIC_REG(0xa0) | ||
88 | |||
89 | /* Debug registers for controlling NIC pkt gen agent */ | ||
90 | #define CRB_AGENT_GO NETXEN_NIC_REG(0xb0) | ||
91 | #define CRB_AGENT_TX_SIZE NETXEN_NIC_REG(0xb4) | ||
92 | #define CRB_AGENT_TX_TYPE NETXEN_NIC_REG(0xb8) | ||
93 | #define CRB_AGENT_TX_ADDR NETXEN_NIC_REG(0xbc) | ||
94 | #define CRB_AGENT_TX_MSS NETXEN_NIC_REG(0xc0) | ||
95 | |||
96 | /* Debug registers for observing NIC performance */ | ||
97 | #define CRB_TX_STATE NETXEN_NIC_REG(0xd0) | ||
98 | #define CRB_TX_COUNT NETXEN_NIC_REG(0xd4) | ||
99 | #define CRB_RX_STATE NETXEN_NIC_REG(0xd8) | ||
100 | |||
101 | /* CRB registers per Rcv Descriptor ring */ | ||
102 | struct netxen_rcv_desc_crb { | ||
103 | u32 crb_rcv_producer_offset __attribute__ ((aligned(512))); | ||
104 | u32 crb_rcv_consumer_offset; | ||
105 | u32 crb_globalrcv_ring; | ||
106 | }; | ||
107 | |||
108 | /* | ||
109 | * CRB registers used by the receive peg logic. One instance of these | ||
110 | * needs to be instantiated per instance of the receive peg. | ||
111 | */ | ||
112 | |||
113 | struct netxen_recv_crb { | ||
114 | struct netxen_rcv_desc_crb rcv_desc_crb[NUM_RCV_DESC_RINGS]; | ||
115 | u32 crb_rcvstatus_ring; | ||
116 | u32 crb_rcv_status_producer; | ||
117 | u32 crb_rcv_status_consumer; | ||
118 | u32 crb_rcvpeg_state; | ||
119 | }; | ||
120 | |||
121 | #if defined(DEFINE_GLOBAL_RECV_CRB) | ||
122 | struct netxen_recv_crb recv_crb_registers[] = { | ||
123 | /* | ||
124 | * Instance 0. | ||
125 | */ | ||
126 | { | ||
127 | /* rcv_desc_crb: */ | ||
128 | { | ||
129 | { | ||
130 | /* crb_rcv_producer_offset: */ | ||
131 | NETXEN_NIC_REG(0x18), | ||
132 | /* crb_rcv_consumer_offset: */ | ||
133 | NETXEN_NIC_REG(0x1c), | ||
134 | /* crb_gloablrcv_ring: */ | ||
135 | NETXEN_NIC_REG(0x20), | ||
136 | }, | ||
137 | /* Jumbo frames */ | ||
138 | { | ||
139 | /* crb_rcv_producer_offset: */ | ||
140 | NETXEN_NIC_REG(0x100), | ||
141 | /* crb_rcv_consumer_offset: */ | ||
142 | NETXEN_NIC_REG(0x104), | ||
143 | /* crb_gloablrcv_ring: */ | ||
144 | NETXEN_NIC_REG(0x108), | ||
145 | } | ||
146 | }, | ||
147 | /* crb_rcvstatus_ring: */ | ||
148 | NETXEN_NIC_REG(0x24), | ||
149 | /* crb_rcv_status_producer: */ | ||
150 | NETXEN_NIC_REG(0x28), | ||
151 | /* crb_rcv_status_consumer: */ | ||
152 | NETXEN_NIC_REG(0x2c), | ||
153 | /* crb_rcvpeg_state: */ | ||
154 | NETXEN_NIC_REG(0x48), | ||
155 | |||
156 | }, | ||
157 | /* | ||
158 | * Instance 1, | ||
159 | */ | ||
160 | { | ||
161 | /* rcv_desc_crb: */ | ||
162 | { | ||
163 | { | ||
164 | /* crb_rcv_producer_offset: */ | ||
165 | NETXEN_NIC_REG(0x80), | ||
166 | /* crb_rcv_consumer_offset: */ | ||
167 | NETXEN_NIC_REG(0x84), | ||
168 | /* crb_globalrcv_ring: */ | ||
169 | NETXEN_NIC_REG(0x88), | ||
170 | }, | ||
171 | /* Jumbo frames */ | ||
172 | { | ||
173 | /* crb_rcv_producer_offset: */ | ||
174 | NETXEN_NIC_REG(0x10C), | ||
175 | /* crb_rcv_consumer_offset: */ | ||
176 | NETXEN_NIC_REG(0x110), | ||
177 | /* crb_globalrcv_ring: */ | ||
178 | NETXEN_NIC_REG(0x114), | ||
179 | } | ||
180 | }, | ||
181 | /* crb_rcvstatus_ring: */ | ||
182 | NETXEN_NIC_REG(0x8c), | ||
183 | /* crb_rcv_status_producer: */ | ||
184 | NETXEN_NIC_REG(0x90), | ||
185 | /* crb_rcv_status_consumer: */ | ||
186 | NETXEN_NIC_REG(0x94), | ||
187 | /* crb_rcvpeg_state: */ | ||
188 | NETXEN_NIC_REG(0x98), | ||
189 | }, | ||
190 | }; | ||
191 | #else | ||
192 | extern struct netxen_recv_crb recv_crb_registers[]; | ||
193 | #endif /* DEFINE_GLOBAL_RECEIVE_CRB */ | ||
194 | |||
195 | #endif /* __NIC_PHAN_REG_H_ */ | ||