Linux-2.6.12-rc2
[GitHub/mt8127/android_kernel_alcatel_ttab.git] / drivers / net / tokenring / smctr.h
1 /* smctr.h: SMC Token Ring driver header for Linux
2 *
3 * Authors:
4 * - Jay Schulist <jschlst@samba.org>
5 */
6
7 #ifndef __LINUX_SMCTR_H
8 #define __LINUX_SMCTR_H
9
10 #ifdef __KERNEL__
11
12 #define MAX_TX_QUEUE 10
13
14 #define SMC_HEADER_SIZE 14
15
16 #define SMC_PAGE_OFFSET(X) (((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask)
17
18 #define INIT 0x0D
19 #define RQ_ATTCH 0x10
20 #define RQ_STATE 0x0F
21 #define RQ_ADDR 0x0E
22 #define CHG_PARM 0x0C
23 #define RSP 0x00
24 #define TX_FORWARD 0x09
25
26 #define AC_FC_DAT ((3<<13) | 1)
27 #define DAT 0x07
28
29 #define RPT_NEW_MON 0x25
30 #define RPT_SUA_CHG 0x26
31 #define RPT_ACTIVE_ERR 0x28
32 #define RPT_NN_INCMP 0x27
33 #define RPT_ERROR 0x29
34
35 #define RQ_INIT 0x20
36 #define RPT_ATTCH 0x24
37 #define RPT_STATE 0x23
38 #define RPT_ADDR 0x22
39
40 #define POSITIVE_ACK 0x0001
41 #define A_FRAME_WAS_FORWARDED 0x8888
42
43 #define GROUP_ADDRESS 0x2B
44 #define PHYSICAL_DROP 0x0B
45 #define AUTHORIZED_ACCESS_PRIORITY 0x07
46 #define AUTHORIZED_FUNCTION_CLASS 0x06
47 #define FUNCTIONAL_ADDRESS 0x2C
48 #define RING_STATION_STATUS 0x29
49 #define TRANSMIT_STATUS_CODE 0x2A
50 #define IBM_PASS_SOURCE_ADDR 0x01
51 #define AC_FC_RPT_TX_FORWARD ((0<<13) | 0)
52 #define AC_FC_RPT_STATE ((0<<13) | 0)
53 #define AC_FC_RPT_ADDR ((0<<13) | 0)
54 #define CORRELATOR 0x09
55
56 #define POSITIVE_ACK 0x0001 /* */
57 #define E_MAC_DATA_INCOMPLETE 0x8001 /* not used */
58 #define E_VECTOR_LENGTH_ERROR 0x8002 /* */
59 #define E_UNRECOGNIZED_VECTOR_ID 0x8003 /* */
60 #define E_INAPPROPRIATE_SOURCE_CLASS 0x8004 /* */
61 #define E_SUB_VECTOR_LENGTH_ERROR 0x8005 /* */
62 #define E_TRANSMIT_FORWARD_INVALID 0x8006 /* def. by IBM */
63 #define E_MISSING_SUB_VECTOR 0x8007 /* */
64 #define E_SUB_VECTOR_UNKNOWN 0x8008 /* */
65 #define E_MAC_HEADER_TOO_LONG 0x8009 /* */
66 #define E_FUNCTION_DISABLED 0x800A /* not used */
67
68 #define A_FRAME_WAS_FORWARDED 0x8888 /* used by send_TX_FORWARD */
69
70 #define UPSTREAM_NEIGHBOR_ADDRESS 0x02
71 #define LOCAL_RING_NUMBER 0x03
72 #define ASSIGN_PHYSICAL_DROP 0x04
73 #define ERROR_TIMER_VALUE 0x05
74 #define AUTHORIZED_FUNCTION_CLASS 0x06
75 #define AUTHORIZED_ACCESS_PRIORITY 0x07
76 #define CORRELATOR 0x09
77 #define PHYSICAL_DROP 0x0B
78 #define RESPONSE_CODE 0x20
79 #define ADDRESS_MODIFER 0x21
80 #define PRODUCT_INSTANCE_ID 0x22
81 #define RING_STATION_VERSION_NUMBER 0x23
82 #define WRAP_DATA 0x26
83 #define FRAME_FORWARD 0x27
84 #define STATION_IDENTIFER 0x28
85 #define RING_STATION_STATUS 0x29
86 #define TRANSMIT_STATUS_CODE 0x2A
87 #define GROUP_ADDRESS 0x2B
88 #define FUNCTIONAL_ADDRESS 0x2C
89
90 #define F_NO_SUB_VECTORS_FOUND 0x0000
91 #define F_UPSTREAM_NEIGHBOR_ADDRESS 0x0001
92 #define F_LOCAL_RING_NUMBER 0x0002
93 #define F_ASSIGN_PHYSICAL_DROP 0x0004
94 #define F_ERROR_TIMER_VALUE 0x0008
95 #define F_AUTHORIZED_FUNCTION_CLASS 0x0010
96 #define F_AUTHORIZED_ACCESS_PRIORITY 0x0020
97 #define F_CORRELATOR 0x0040
98 #define F_PHYSICAL_DROP 0x0080
99 #define F_RESPONSE_CODE 0x0100
100 #define F_PRODUCT_INSTANCE_ID 0x0200
101 #define F_RING_STATION_VERSION_NUMBER 0x0400
102 #define F_STATION_IDENTIFER 0x0800
103 #define F_RING_STATION_STATUS 0x1000
104 #define F_GROUP_ADDRESS 0x2000
105 #define F_FUNCTIONAL_ADDRESS 0x4000
106 #define F_FRAME_FORWARD 0x8000
107
108 #define R_INIT 0x00
109 #define R_RQ_ATTCH_STATE_ADDR 0x00
110 #define R_CHG_PARM 0x00
111 #define R_TX_FORWARD F_FRAME_FORWARD
112
113
114 #define UPSTREAM_NEIGHBOR_ADDRESS 0x02
115 #define ADDRESS_MODIFER 0x21
116 #define RING_STATION_VERSION_NUMBER 0x23
117 #define PRODUCT_INSTANCE_ID 0x22
118
119 #define RPT_TX_FORWARD 0x2A
120
121 #define AC_FC_INIT (3<<13) | 0 /* */
122 #define AC_FC_RQ_INIT ((3<<13) | 0) /* */
123 #define AC_FC_RQ_ATTCH (3<<13) | 0 /* DC = SC of rx frame */
124 #define AC_FC_RQ_STATE (3<<13) | 0 /* DC = SC of rx frame */
125 #define AC_FC_RQ_ADDR (3<<13) | 0 /* DC = SC of rx frame */
126 #define AC_FC_CHG_PARM (3<<13) | 0 /* */
127 #define AC_FC_RSP (0<<13) | 0 /* DC = SC of rx frame */
128 #define AC_FC_RPT_ATTCH (0<<13) | 0
129
130 #define S_UPSTREAM_NEIGHBOR_ADDRESS 6 + 2
131 #define S_LOCAL_RING_NUMBER 2 + 2
132 #define S_ASSIGN_PHYSICAL_DROP 4 + 2
133 #define S_ERROR_TIMER_VALUE 2 + 2
134 #define S_AUTHORIZED_FUNCTION_CLASS 2 + 2
135 #define S_AUTHORIZED_ACCESS_PRIORITY 2 + 2
136 #define S_CORRELATOR 2 + 2
137 #define S_PHYSICAL_DROP 4 + 2
138 #define S_RESPONSE_CODE 4 + 2
139 #define S_ADDRESS_MODIFER 2 + 2
140 #define S_PRODUCT_INSTANCE_ID 18 + 2
141 #define S_RING_STATION_VERSION_NUMBER 10 + 2
142 #define S_STATION_IDENTIFER 6 + 2
143 #define S_RING_STATION_STATUS 6 + 2
144 #define S_GROUP_ADDRESS 4 + 2
145 #define S_FUNCTIONAL_ADDRESS 4 + 2
146 #define S_FRAME_FORWARD 252 + 2
147 #define S_TRANSMIT_STATUS_CODE 2 + 2
148
149 #define ISB_IMC_RES0 0x0000 /* */
150 #define ISB_IMC_MAC_TYPE_3 0x0001 /* MAC_ARC_INDICATE */
151 #define ISB_IMC_MAC_ERROR_COUNTERS 0x0002 /* */
152 #define ISB_IMC_RES1 0x0003 /* */
153 #define ISB_IMC_MAC_TYPE_2 0x0004 /* QUE_MAC_INDICATE */
154 #define ISB_IMC_TX_FRAME 0x0005 /* */
155 #define ISB_IMC_END_OF_TX_QUEUE 0x0006 /* */
156 #define ISB_IMC_NON_MAC_RX_RESOURCE 0x0007 /* */
157 #define ISB_IMC_MAC_RX_RESOURCE 0x0008 /* */
158 #define ISB_IMC_NON_MAC_RX_FRAME 0x0009 /* */
159 #define ISB_IMC_MAC_RX_FRAME 0x000A /* */
160 #define ISB_IMC_TRC_FIFO_STATUS 0x000B /* */
161 #define ISB_IMC_COMMAND_STATUS 0x000C /* */
162 #define ISB_IMC_MAC_TYPE_1 0x000D /* Self Removed */
163 #define ISB_IMC_TRC_INTRNL_TST_STATUS 0x000E /* */
164 #define ISB_IMC_RES2 0x000F /* */
165
166 #define NON_MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */
167 #define NON_MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */
168 #define NON_MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */
169 #define NON_MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */
170 #define RAW_NON_MAC_RX_RESOURCE_BW 0x1000 /* */
171 #define RAW_NON_MAC_RX_RESOURCE_FW 0x2000 /* */
172 #define RAW_NON_MAC_RX_RESOURCE_BE 0x4000 /* */
173 #define RAW_NON_MAC_RX_RESOURCE_FE 0x8000 /* */
174
175 #define MAC_RX_RESOURCE_BW 0x10 /* shifted right 8 bits */
176 #define MAC_RX_RESOURCE_FW 0x20 /* shifted right 8 bits */
177 #define MAC_RX_RESOURCE_BE 0x40 /* shifted right 8 bits */
178 #define MAC_RX_RESOURCE_FE 0x80 /* shifted right 8 bits */
179 #define RAW_MAC_RX_RESOURCE_BW 0x1000 /* */
180 #define RAW_MAC_RX_RESOURCE_FW 0x2000 /* */
181 #define RAW_MAC_RX_RESOURCE_BE 0x4000 /* */
182 #define RAW_MAC_RX_RESOURCE_FE 0x8000 /* */
183
184 #define TRC_FIFO_STATUS_TX_UNDERRUN 0x40 /* shifted right 8 bits */
185 #define TRC_FIFO_STATUS_RX_OVERRUN 0x80 /* shifted right 8 bits */
186 #define RAW_TRC_FIFO_STATUS_TX_UNDERRUN 0x4000 /* */
187 #define RAW_TRC_FIFO_STATUS_RX_OVERRUN 0x8000 /* */
188
189 #define CSR_CLRTINT 0x08
190
191 #define MSB(X) ((__u8)((__u16) X >> 8))
192 #define LSB(X) ((__u8)((__u16) X & 0xff))
193
194 #define AC_FC_LOBE_MEDIA_TEST ((3<<13) | 0)
195 #define S_WRAP_DATA 248 + 2 /* 500 + 2 */
196 #define WRAP_DATA 0x26
197 #define LOBE_MEDIA_TEST 0x08
198
199 /* Destination Class (dc) */
200
201 #define DC_MASK 0xF0
202 #define DC_RS 0x00
203 #define DC_CRS 0x40
204 #define DC_RPS 0x50
205 #define DC_REM 0x60
206
207 /* Source Classes (sc) */
208
209 #define SC_MASK 0x0F
210 #define SC_RS 0x00
211 #define SC_CRS 0x04
212 #define SC_RPS 0x05
213 #define SC_REM 0x06
214
215 #define PR 0x11
216 #define PR_PAGE_MASK 0x0C000
217
218 #define MICROCHANNEL 0x0008
219 #define INTERFACE_CHIP 0x0010
220 #define BOARD_16BIT 0x0040
221 #define PAGED_RAM 0x0080
222 #define WD8115TA (TOKEN_MEDIA | MICROCHANNEL | INTERFACE_CHIP | PAGED_RAM)
223 #define WD8115T (TOKEN_MEDIA | INTERFACE_CHIP | BOARD_16BIT | PAGED_RAM)
224
225 #define BRD_ID_8316 0x50
226
227 #define r587_SER 0x001
228 #define SER_DIN 0x80
229 #define SER_DOUT 0x40
230 #define SER_CLK 0x20
231 #define SER_ECS 0x10
232 #define SER_E806 0x08
233 #define SER_PNP 0x04
234 #define SER_BIO 0x02
235 #define SER_16B 0x01
236
237 #define r587_IDR 0x004
238 #define IDR_IRQ_MASK 0x0F0
239 #define IDR_DCS_MASK 0x007
240 #define IDR_RWS 0x008
241
242
243 #define r587_BIO 0x003
244 #define BIO_ENB 0x080
245 #define BIO_MASK 0x03F
246
247 #define r587_PCR 0x005
248 #define PCR_RAMS 0x040
249
250
251
252 #define NUM_ADDR_BITS 8
253
254 #define ISA_MAX_ADDRESS 0x00ffffff
255
256 #define SMCTR_MAX_ADAPTERS 7
257
258 #define MC_TABLE_ENTRIES 16
259
260 #define MAXFRAGMENTS 32
261
262 #define CHIP_REV_MASK 0x3000
263
264 #define MAX_TX_QS 8
265 #define NUM_TX_QS_USED 3
266
267 #define MAX_RX_QS 2
268 #define NUM_RX_QS_USED 2
269
270 #define INTEL_DATA_FORMAT 0x4000
271 #define INTEL_ADDRESS_POINTER_FORMAT 0x8000
272 #define PAGE_POINTER(X) ((((unsigned long)(X) - tp->ram_access) & tp->page_offset_mask) + tp->ram_access)
273 #define SWAP_WORDS(X) (((X & 0xFFFF) << 16) | (X >> 16))
274
275 #define INTERFACE_CHIP 0x0010 /* Soft Config Adapter */
276 #define ADVANCED_FEATURES 0x0020 /* Adv. netw. interface features */
277 #define BOARD_16BIT 0x0040 /* 16 bit capability */
278 #define PAGED_RAM 0x0080 /* Adapter has paged RAM */
279
280 #define PAGED_ROM 0x0100 /* Adapter has paged ROM */
281
282 #define RAM_SIZE_UNKNOWN 0x0000 /* Unknown RAM size */
283 #define RAM_SIZE_0K 0x0001 /* 0K RAM */
284 #define RAM_SIZE_8K 0x0002 /* 8k RAM */
285 #define RAM_SIZE_16K 0x0003 /* 16k RAM */
286 #define RAM_SIZE_32K 0x0004 /* 32k RAM */
287 #define RAM_SIZE_64K 0x0005 /* 64k RAM */
288 #define RAM_SIZE_RESERVED_6 0x0006 /* Reserved RAM size */
289 #define RAM_SIZE_RESERVED_7 0x0007 /* Reserved RAM size */
290 #define RAM_SIZE_MASK 0x0007 /* Isolates RAM Size */
291
292 #define TOKEN_MEDIA 0x0005
293
294 #define BID_REG_0 0x00
295 #define BID_REG_1 0x01
296 #define BID_REG_2 0x02
297 #define BID_REG_3 0x03
298 #define BID_REG_4 0x04
299 #define BID_REG_5 0x05
300 #define BID_REG_6 0x06
301 #define BID_REG_7 0x07
302 #define BID_LAR_0 0x08
303 #define BID_LAR_1 0x09
304 #define BID_LAR_2 0x0A
305 #define BID_LAR_3 0x0B
306 #define BID_LAR_4 0x0C
307 #define BID_LAR_5 0x0D
308
309 #define BID_BOARD_ID_BYTE 0x0E
310 #define BID_CHCKSM_BYTE 0x0F
311 #define BID_LAR_OFFSET 0x08
312
313 #define BID_MSZ_583_BIT 0x08
314 #define BID_SIXTEEN_BIT_BIT 0x01
315
316 #define BID_BOARD_REV_MASK 0x1E
317
318 #define BID_MEDIA_TYPE_BIT 0x01
319 #define BID_SOFT_CONFIG_BIT 0x20
320 #define BID_RAM_SIZE_BIT 0x40
321 #define BID_BUS_TYPE_BIT 0x80
322
323 #define BID_CR 0x10
324
325 #define BID_TXP 0x04 /* Transmit Packet Command */
326
327 #define BID_TCR_DIFF 0x0D /* Transmit Configuration Register */
328
329 #define BID_TCR_VAL 0x18 /* Value to Test 8390 or 690 */
330 #define BID_PS0 0x00 /* Register Page Select 0 */
331 #define BID_PS1 0x40 /* Register Page Select 1 */
332 #define BID_PS2 0x80 /* Register Page Select 2 */
333 #define BID_PS_MASK 0x3F /* For Masking Off Page Select Bits */
334
335 #define BID_EEPROM_0 0x08
336 #define BID_EEPROM_1 0x09
337 #define BID_EEPROM_2 0x0A
338 #define BID_EEPROM_3 0x0B
339 #define BID_EEPROM_4 0x0C
340 #define BID_EEPROM_5 0x0D
341 #define BID_EEPROM_6 0x0E
342 #define BID_EEPROM_7 0x0F
343
344 #define BID_OTHER_BIT 0x02
345 #define BID_ICR_MASK 0x0C
346 #define BID_EAR_MASK 0x0F
347 #define BID_ENGR_PAGE 0x0A0
348 #define BID_RLA 0x10
349 #define BID_EA6 0x80
350 #define BID_RECALL_DONE_MASK 0x10
351 #define BID_BID_EEPROM_OVERRIDE 0xFFB0
352 #define BID_EXTRA_EEPROM_OVERRIDE 0xFFD0
353 #define BID_EEPROM_MEDIA_MASK 0x07
354 #define BID_STARLAN_TYPE 0x00
355 #define BID_ETHERNET_TYPE 0x01
356 #define BID_TP_TYPE 0x02
357 #define BID_EW_TYPE 0x03
358 #define BID_TOKEN_RING_TYPE 0x04
359 #define BID_UTP2_TYPE 0x05
360 #define BID_EEPROM_IRQ_MASK 0x18
361 #define BID_PRIMARY_IRQ 0x00
362 #define BID_ALTERNATE_IRQ_1 0x08
363 #define BID_ALTERNATE_IRQ_2 0x10
364 #define BID_ALTERNATE_IRQ_3 0x18
365 #define BID_EEPROM_RAM_SIZE_MASK 0xE0
366 #define BID_EEPROM_RAM_SIZE_RES1 0x00
367 #define BID_EEPROM_RAM_SIZE_RES2 0x20
368 #define BID_EEPROM_RAM_SIZE_8K 0x40
369 #define BID_EEPROM_RAM_SIZE_16K 0x60
370 #define BID_EEPROM_RAM_SIZE_32K 0x80
371 #define BID_EEPROM_RAM_SIZE_64K 0xA0
372 #define BID_EEPROM_RAM_SIZE_RES3 0xC0
373 #define BID_EEPROM_RAM_SIZE_RES4 0xE0
374 #define BID_EEPROM_BUS_TYPE_MASK 0x07
375 #define BID_EEPROM_BUS_TYPE_AT 0x00
376 #define BID_EEPROM_BUS_TYPE_MCA 0x01
377 #define BID_EEPROM_BUS_TYPE_EISA 0x02
378 #define BID_EEPROM_BUS_TYPE_NEC 0x03
379 #define BID_EEPROM_BUS_SIZE_MASK 0x18
380 #define BID_EEPROM_BUS_SIZE_8BIT 0x00
381 #define BID_EEPROM_BUS_SIZE_16BIT 0x08
382 #define BID_EEPROM_BUS_SIZE_32BIT 0x10
383 #define BID_EEPROM_BUS_SIZE_64BIT 0x18
384 #define BID_EEPROM_BUS_MASTER 0x20
385 #define BID_EEPROM_RAM_PAGING 0x40
386 #define BID_EEPROM_ROM_PAGING 0x80
387 #define BID_EEPROM_PAGING_MASK 0xC0
388 #define BID_EEPROM_LOW_COST 0x08
389 #define BID_EEPROM_IO_MAPPED 0x10
390 #define BID_EEPROM_HMI 0x01
391 #define BID_EEPROM_AUTO_MEDIA_DETECT 0x01
392 #define BID_EEPROM_CHIP_REV_MASK 0x0C
393
394 #define BID_EEPROM_LAN_ADDR 0x30
395
396 #define BID_EEPROM_MEDIA_OPTION 0x54
397 #define BID_EEPROM_MEDIA_UTP 0x01
398 #define BID_EEPROM_4MB_RING 0x08
399 #define BID_EEPROM_16MB_RING 0x10
400 #define BID_EEPROM_MEDIA_STP 0x40
401
402 #define BID_EEPROM_MISC_DATA 0x56
403 #define BID_EEPROM_EARLY_TOKEN_RELEASE 0x02
404
405 #define CNFG_ID_8003E 0x6fc0
406 #define CNFG_ID_8003S 0x6fc1
407 #define CNFG_ID_8003W 0x6fc2
408 #define CNFG_ID_8115TRA 0x6ec6
409 #define CNFG_ID_8013E 0x61C8
410 #define CNFG_ID_8013W 0x61C9
411 #define CNFG_ID_BISTRO03E 0xEFE5
412 #define CNFG_ID_BISTRO13E 0xEFD5
413 #define CNFG_ID_BISTRO13W 0xEFD4
414 #define CNFG_MSR_583 0x0
415 #define CNFG_ICR_583 0x1
416 #define CNFG_IAR_583 0x2
417 #define CNFG_BIO_583 0x3
418 #define CNFG_EAR_583 0x3
419 #define CNFG_IRR_583 0x4
420 #define CNFG_LAAR_584 0x5
421 #define CNFG_GP2 0x7
422 #define CNFG_LAAR_MASK 0x1F
423 #define CNFG_LAAR_ZWS 0x20
424 #define CNFG_LAAR_L16E 0x40
425 #define CNFG_ICR_IR2_584 0x04
426 #define CNFG_ICR_MASK 0x08
427 #define CNFG_ICR_MSZ 0x08
428 #define CNFG_ICR_RLA 0x10
429 #define CNFG_ICR_STO 0x80
430 #define CNFG_IRR_IRQS 0x60
431 #define CNFG_IRR_IEN 0x80
432 #define CNFG_IRR_ZWS 0x01
433 #define CNFG_GP2_BOOT_NIBBLE 0x0F
434 #define CNFG_IRR_OUT2 0x04
435 #define CNFG_IRR_OUT1 0x02
436
437 #define CNFG_SIZE_8KB 8
438 #define CNFG_SIZE_16KB 16
439 #define CNFG_SIZE_32KB 32
440 #define CNFG_SIZE_64KB 64
441 #define CNFG_SIZE_128KB 128
442 #define CNFG_SIZE_256KB 256
443 #define ROM_DISABLE 0x0
444
445 #define CNFG_SLOT_ENABLE_BIT 0x08
446
447 #define CNFG_POS_CONTROL_REG 0x096
448 #define CNFG_POS_REG0 0x100
449 #define CNFG_POS_REG1 0x101
450 #define CNFG_POS_REG2 0x102
451 #define CNFG_POS_REG3 0x103
452 #define CNFG_POS_REG4 0x104
453 #define CNFG_POS_REG5 0x105
454
455 #define CNFG_ADAPTER_TYPE_MASK 0x0e
456
457 #define SLOT_16BIT 0x0008
458 #define INTERFACE_5X3_CHIP 0x0000 /* 0000 = 583 or 593 chips */
459 #define NIC_690_BIT 0x0010 /* NIC is 690 */
460 #define ALTERNATE_IRQ_BIT 0x0020 /* Alternate IRQ is used */
461 #define INTERFACE_584_CHIP 0x0040 /* 0001 = 584 chip */
462 #define INTERFACE_594_CHIP 0x0080 /* 0010 = 594 chip */
463 #define INTERFACE_585_CHIP 0x0100 /* 0100 = 585/790 chip */
464 #define INTERFACE_CHIP_MASK 0x03C0 /* Isolates Intfc Chip Type */
465
466 #define BOARD_16BIT 0x0040
467 #define NODE_ADDR_CKSUM 0xEE
468 #define BRD_ID_8115T 0x04
469
470 #define NIC_825_BIT 0x0400 /* TRC 83C825 NIC */
471 #define NIC_790_BIT 0x0800 /* NIC is 83C790 Ethernet */
472
473 #define CHIP_REV_MASK 0x3000
474
475 #define HWR_CBUSY 0x02
476 #define HWR_CA 0x01
477
478 #define MAC_QUEUE 0
479 #define NON_MAC_QUEUE 1
480 #define BUG_QUEUE 2 /* NO RECEIVE QUEUE, ONLY TX */
481
482 #define NUM_MAC_TX_FCBS 8
483 #define NUM_MAC_TX_BDBS NUM_MAC_TX_FCBS
484 #define NUM_MAC_RX_FCBS 7
485 #define NUM_MAC_RX_BDBS 8
486
487 #define NUM_NON_MAC_TX_FCBS 6
488 #define NUM_NON_MAC_TX_BDBS NUM_NON_MAC_TX_FCBS
489
490 #define NUM_NON_MAC_RX_BDBS 0 /* CALCULATED DYNAMICALLY */
491
492 #define NUM_BUG_TX_FCBS 8
493 #define NUM_BUG_TX_BDBS NUM_BUG_TX_FCBS
494
495 #define MAC_TX_BUFFER_MEMORY 1024
496 #define NON_MAC_TX_BUFFER_MEMORY (20 * 1024)
497 #define BUG_TX_BUFFER_MEMORY (NUM_BUG_TX_FCBS * 32)
498
499 #define RX_BUFFER_MEMORY 0 /* CALCULATED DYNAMICALLY */
500 #define RX_DATA_BUFFER_SIZE 256
501 #define RX_BDB_SIZE_SHIFT 3 /* log2(RX_DATA_BUFFER_SIZE)-log2(sizeof(BDBlock)) */
502 #define RX_BDB_SIZE_MASK (sizeof(BDBlock) - 1)
503 #define RX_DATA_BUFFER_SIZE_MASK (RX_DATA_BUFFER_SIZE-1)
504
505 #define NUM_OF_INTERRUPTS 0x20
506
507 #define NOT_TRANSMITING 0
508 #define TRANSMITING 1
509
510 #define TRC_INTERRUPT_ENABLE_MASK 0x7FF6
511
512 #define UCODE_VERSION 0x58
513
514 #define UCODE_SIZE_OFFSET 0x0000 /* WORD */
515 #define UCODE_CHECKSUM_OFFSET 0x0002 /* WORD */
516 #define UCODE_VERSION_OFFSET 0x0004 /* BYTE */
517
518 #define CS_RAM_SIZE 0X2000
519 #define CS_RAM_CHECKSUM_OFFSET 0x1FFE /* WORD 1FFE(MSB)-1FFF(LSB)*/
520 #define CS_RAM_VERSION_OFFSET 0x1FFC /* WORD 1FFC(MSB)-1FFD(LSB)*/
521
522 #define MISC_DATA_SIZE 128
523 #define NUM_OF_ACBS 1
524
525 #define ACB_COMMAND_NOT_DONE 0x0000 /* Init, command not done */
526 #define ACB_COMMAND_DONE 0x8000 /* TRC says command done */
527 #define ACB_COMMAND_STATUS_MASK 0x00FF /* low byte is status */
528 #define ACB_COMMAND_SUCCESSFUL 0x0000 /* means cmd was successful */
529 #define ACB_NOT_CHAIN_END 0x0000 /* tell TRC more CBs in chain */
530 #define ACB_CHAIN_END 0x8000 /* tell TRC last CB in chain */
531 #define ACB_COMMAND_NO_INTERRUPT 0x0000 /* tell TRC no INT after CB */
532 #define ACB_COMMAND_INTERRUPT 0x2000 /* tell TRC to INT after CB */
533 #define ACB_SUB_CMD_NOP 0x0000
534 #define ACB_CMD_HIC_NOP 0x0080
535 #define ACB_CMD_MCT_NOP 0x0000
536 #define ACB_CMD_MCT_TEST 0x0001
537 #define ACB_CMD_HIC_TEST 0x0081
538 #define ACB_CMD_INSERT 0x0002
539 #define ACB_CMD_REMOVE 0x0003
540 #define ACB_CMD_MCT_WRITE_VALUE 0x0004
541 #define ACB_CMD_HIC_WRITE_VALUE 0x0084
542 #define ACB_CMD_MCT_READ_VALUE 0x0005
543 #define ACB_CMD_HIC_READ_VALUE 0x0085
544 #define ACB_CMD_INIT_TX_RX 0x0086
545 #define ACB_CMD_INIT_TRC_TIMERS 0x0006
546 #define ACB_CMD_READ_TRC_STATUS 0x0007
547 #define ACB_CMD_CHANGE_JOIN_STATE 0x0008
548 #define ACB_CMD_RESERVED_9 0x0009
549 #define ACB_CMD_RESERVED_A 0x000A
550 #define ACB_CMD_RESERVED_B 0x000B
551 #define ACB_CMD_RESERVED_C 0x000C
552 #define ACB_CMD_RESERVED_D 0x000D
553 #define ACB_CMD_RESERVED_E 0x000E
554 #define ACB_CMD_RESERVED_F 0x000F
555
556 #define TRC_MAC_REGISTERS_TEST 0x0000
557 #define TRC_INTERNAL_LOOPBACK 0x0001
558 #define TRC_TRI_LOOPBACK 0x0002
559 #define TRC_INTERNAL_ROM_TEST 0x0003
560 #define TRC_LOBE_MEDIA_TEST 0x0004
561 #define TRC_ANALOG_TEST 0x0005
562 #define TRC_HOST_INTERFACE_REG_TEST 0x0003
563
564 #define TEST_DMA_1 0x0000
565 #define TEST_DMA_2 0x0001
566 #define TEST_MCT_ROM 0x0002
567 #define HIC_INTERNAL_DIAG 0x0003
568
569 #define ABORT_TRANSMIT_PRIORITY_0 0x0001
570 #define ABORT_TRANSMIT_PRIORITY_1 0x0002
571 #define ABORT_TRANSMIT_PRIORITY_2 0x0004
572 #define ABORT_TRANSMIT_PRIORITY_3 0x0008
573 #define ABORT_TRANSMIT_PRIORITY_4 0x0010
574 #define ABORT_TRANSMIT_PRIORITY_5 0x0020
575 #define ABORT_TRANSMIT_PRIORITY_6 0x0040
576 #define ABORT_TRANSMIT_PRIORITY_7 0x0080
577
578 #define TX_PENDING_PRIORITY_0 0x0001
579 #define TX_PENDING_PRIORITY_1 0x0002
580 #define TX_PENDING_PRIORITY_2 0x0004
581 #define TX_PENDING_PRIORITY_3 0x0008
582 #define TX_PENDING_PRIORITY_4 0x0010
583 #define TX_PENDING_PRIORITY_5 0x0020
584 #define TX_PENDING_PRIORITY_6 0x0040
585 #define TX_PENDING_PRIORITY_7 0x0080
586
587 #define FCB_FRAME_LENGTH 0x100
588 #define FCB_COMMAND_DONE 0x8000 /* FCB Word 0 */
589 #define FCB_NOT_CHAIN_END 0x0000 /* FCB Word 1 */
590 #define FCB_CHAIN_END 0x8000
591 #define FCB_NO_WARNING 0x0000
592 #define FCB_WARNING 0x4000
593 #define FCB_INTERRUPT_DISABLE 0x0000
594 #define FCB_INTERRUPT_ENABLE 0x2000
595
596 #define FCB_ENABLE_IMA 0x0008
597 #define FCB_ENABLE_TES 0x0004 /* Guarantee Tx before Int */
598 #define FCB_ENABLE_TFS 0x0002 /* Post Tx Frame Status */
599 #define FCB_ENABLE_NTC 0x0001 /* No Tx CRC */
600
601 #define FCB_TX_STATUS_CR2 0x0004
602 #define FCB_TX_STATUS_AR2 0x0008
603 #define FCB_TX_STATUS_CR1 0x0040
604 #define FCB_TX_STATUS_AR1 0x0080
605 #define FCB_TX_AC_BITS (FCB_TX_STATUS_AR1+FCB_TX_STATUS_AR2+FCB_TX_STATUS_CR1+FCB_TX_STATUS_CR2)
606 #define FCB_TX_STATUS_E 0x0100
607
608 #define FCB_RX_STATUS_ANY_ERROR 0x0001
609 #define FCB_RX_STATUS_FCS_ERROR 0x0002
610
611 #define FCB_RX_STATUS_IA_MATCHED 0x0400
612 #define FCB_RX_STATUS_IGA_BSGA_MATCHED 0x0500
613 #define FCB_RX_STATUS_FA_MATCHED 0x0600
614 #define FCB_RX_STATUS_BA_MATCHED 0x0700
615 #define FCB_RX_STATUS_DA_MATCHED 0x0400
616 #define FCB_RX_STATUS_SOURCE_ROUTING 0x0800
617
618 #define BDB_BUFFER_SIZE 0x100
619 #define BDB_NOT_CHAIN_END 0x0000
620 #define BDB_CHAIN_END 0x8000
621 #define BDB_NO_WARNING 0x0000
622 #define BDB_WARNING 0x4000
623
624 #define ERROR_COUNTERS_CHANGED 0x0001
625 #define TI_NDIS_RING_STATUS_CHANGED 0x0002
626 #define UNA_CHANGED 0x0004
627 #define READY_TO_SEND_RQ_INIT 0x0008
628
629 #define SCGB_ADDRESS_POINTER_FORMAT INTEL_ADDRESS_POINTER_FORMAT
630 #define SCGB_DATA_FORMAT INTEL_DATA_FORMAT
631 #define SCGB_MULTI_WORD_CONTROL 0
632 #define SCGB_BURST_LENGTH 0x000E /* DMA Burst Length */
633
634 #define SCGB_CONFIG (INTEL_ADDRESS_POINTER_FORMAT+INTEL_DATA_FORMAT+SCGB_BURST_LENGTH)
635
636 #define ISCP_BLOCK_SIZE 0x0A
637 #define RAM_SIZE 0x10000
638 #define INIT_SYS_CONFIG_PTR_OFFSET (RAM_SIZE-ISCP_BLOCK_SIZE)
639 #define SCGP_BLOCK_OFFSET 0
640
641 #define SCLB_NOT_VALID 0x0000 /* Initially, SCLB not valid */
642 #define SCLB_VALID 0x8000 /* Host tells TRC SCLB valid */
643 #define SCLB_PROCESSED 0x0000 /* TRC says SCLB processed */
644 #define SCLB_RESUME_CONTROL_NOT_VALID 0x0000 /* Initially, RC not valid */
645 #define SCLB_RESUME_CONTROL_VALID 0x4000 /* Host tells TRC RC valid */
646 #define SCLB_IACK_CODE_NOT_VALID 0x0000 /* Initially, IACK not valid */
647 #define SCLB_IACK_CODE_VALID 0x2000 /* Host tells TRC IACK valid */
648 #define SCLB_CMD_NOP 0x0000
649 #define SCLB_CMD_REMOVE 0x0001
650 #define SCLB_CMD_SUSPEND_ACB_CHAIN 0x0002
651 #define SCLB_CMD_SET_INTERRUPT_MASK 0x0003
652 #define SCLB_CMD_CLEAR_INTERRUPT_MASK 0x0004
653 #define SCLB_CMD_RESERVED_5 0x0005
654 #define SCLB_CMD_RESERVED_6 0x0006
655 #define SCLB_CMD_RESERVED_7 0x0007
656 #define SCLB_CMD_RESERVED_8 0x0008
657 #define SCLB_CMD_RESERVED_9 0x0009
658 #define SCLB_CMD_RESERVED_A 0x000A
659 #define SCLB_CMD_RESERVED_B 0x000B
660 #define SCLB_CMD_RESERVED_C 0x000C
661 #define SCLB_CMD_RESERVED_D 0x000D
662 #define SCLB_CMD_RESERVED_E 0x000E
663 #define SCLB_CMD_RESERVED_F 0x000F
664
665 #define SCLB_RC_ACB 0x0001 /* Action Command Block Chain */
666 #define SCLB_RC_RES0 0x0002 /* Always Zero */
667 #define SCLB_RC_RES1 0x0004 /* Always Zero */
668 #define SCLB_RC_RES2 0x0008 /* Always Zero */
669 #define SCLB_RC_RX_MAC_FCB 0x0010 /* RX_MAC_FCB Chain */
670 #define SCLB_RC_RX_MAC_BDB 0x0020 /* RX_MAC_BDB Chain */
671 #define SCLB_RC_RX_NON_MAC_FCB 0x0040 /* RX_NON_MAC_FCB Chain */
672 #define SCLB_RC_RX_NON_MAC_BDB 0x0080 /* RX_NON_MAC_BDB Chain */
673 #define SCLB_RC_TFCB0 0x0100 /* TX Priority 0 FCB Chain */
674 #define SCLB_RC_TFCB1 0x0200 /* TX Priority 1 FCB Chain */
675 #define SCLB_RC_TFCB2 0x0400 /* TX Priority 2 FCB Chain */
676 #define SCLB_RC_TFCB3 0x0800 /* TX Priority 3 FCB Chain */
677 #define SCLB_RC_TFCB4 0x1000 /* TX Priority 4 FCB Chain */
678 #define SCLB_RC_TFCB5 0x2000 /* TX Priority 5 FCB Chain */
679 #define SCLB_RC_TFCB6 0x4000 /* TX Priority 6 FCB Chain */
680 #define SCLB_RC_TFCB7 0x8000 /* TX Priority 7 FCB Chain */
681
682 #define SCLB_IMC_RES0 0x0001 /* */
683 #define SCLB_IMC_MAC_TYPE_3 0x0002 /* MAC_ARC_INDICATE */
684 #define SCLB_IMC_MAC_ERROR_COUNTERS 0x0004 /* */
685 #define SCLB_IMC_RES1 0x0008 /* */
686 #define SCLB_IMC_MAC_TYPE_2 0x0010 /* QUE_MAC_INDICATE */
687 #define SCLB_IMC_TX_FRAME 0x0020 /* */
688 #define SCLB_IMC_END_OF_TX_QUEUE 0x0040 /* */
689 #define SCLB_IMC_NON_MAC_RX_RESOURCE 0x0080 /* */
690 #define SCLB_IMC_MAC_RX_RESOURCE 0x0100 /* */
691 #define SCLB_IMC_NON_MAC_RX_FRAME 0x0200 /* */
692 #define SCLB_IMC_MAC_RX_FRAME 0x0400 /* */
693 #define SCLB_IMC_TRC_FIFO_STATUS 0x0800 /* */
694 #define SCLB_IMC_COMMAND_STATUS 0x1000 /* */
695 #define SCLB_IMC_MAC_TYPE_1 0x2000 /* Self Removed */
696 #define SCLB_IMC_TRC_INTRNL_TST_STATUS 0x4000 /* */
697 #define SCLB_IMC_RES2 0x8000 /* */
698
699 #define DMA_TRIGGER 0x0004
700 #define FREQ_16MB_BIT 0x0010
701 #define THDREN 0x0020
702 #define CFG0_RSV1 0x0040
703 #define CFG0_RSV2 0x0080
704 #define ETREN 0x0100
705 #define RX_OWN_BIT 0x0200
706 #define RXATMAC 0x0400
707 #define PROMISCUOUS_BIT 0x0800
708 #define USETPT 0x1000
709 #define SAVBAD_BIT 0x2000
710 #define ONEQUE 0x4000
711 #define NO_AUTOREMOVE 0x8000
712
713 #define RX_FCB_AREA_8316 0x00000000
714 #define RX_BUFF_AREA_8316 0x00000000
715
716 #define TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access)
717 #define RX_FCB_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_FCB_AREA_8316)
718 #define RX_BUFF_TRC_POINTER(X) ((unsigned long)(X) - tp->ram_access + RX_BUFF_AREA_8316)
719
720 // Offset 0: MSR - Memory Select Register
721 //
722 #define r587_MSR 0x000 // Register Offset
723 //#define MSR_RST 0x080 // LAN Controller Reset
724 #define MSR_MENB 0x040 // Shared Memory Enable
725 #define MSR_RA18 0x020 // Ram Address bit 18 (583, 584, 587)
726 #define MSR_RA17 0x010 // Ram Address bit 17 (583, 584, 585/790)
727 #define MSR_RA16 0x008 // Ram Address bit 16 (583, 584, 585/790)
728 #define MSR_RA15 0x004 // Ram Address bit 15 (583, 584, 585/790)
729 #define MSR_RA14 0x002 // Ram Address bit 14 (583, 584, 585/790)
730 #define MSR_RA13 0x001 // Ram Address bit 13 (583, 584, 585/790)
731
732 #define MSR_MASK 0x03F // Mask for Address bits RA18-RA13 (583, 584, 587)
733
734 #define MSR 0x00
735 #define IRR 0x04
736 #define HWR 0x04
737 #define LAAR 0x05
738 #define IMCCR 0x05
739 #define LAR0 0x08
740 #define BDID 0x0E // Adapter ID byte register offset
741 #define CSR 0x10
742 #define PR 0x11
743
744 #define MSR_RST 0x80
745 #define MSR_MEMB 0x40
746 #define MSR_0WS 0x20
747
748 #define FORCED_16BIT_MODE 0x0002
749
750 #define INTERFRAME_SPACING_16 0x0003 /* 6 bytes */
751 #define INTERFRAME_SPACING_4 0x0001 /* 2 bytes */
752 #define MULTICAST_ADDRESS_BIT 0x0010
753 #define NON_SRC_ROUTING_BIT 0x0020
754
755 #define LOOPING_MODE_MASK 0x0007
756
757 /*
758 * Decode firmware defines.
759 */
760 #define SWAP_BYTES(X) ((X & 0xff) << 8) | (X >> 8)
761 #define WEIGHT_OFFSET 5
762 #define TREE_SIZE_OFFSET 9
763 #define TREE_OFFSET 11
764
765 /* The Huffman Encoding Tree is constructed of these nodes. */
766 typedef struct {
767 __u8 llink; /* Short version of above node. */
768 __u8 tag;
769 __u8 info; /* This node is used on decodes. */
770 __u8 rlink;
771 } DECODE_TREE_NODE;
772
773 #define ROOT 0 /* Branch value. */
774 #define LEAF 0 /* Tag field value. */
775 #define BRANCH 1 /* Tag field value. */
776
777 /*
778 * Multicast Table Structure
779 */
780 typedef struct {
781 __u8 address[6];
782 __u8 instance_count;
783 } McTable;
784
785 /*
786 * Fragment Descriptor Definition
787 */
788 typedef struct {
789 __u8 *fragment_ptr;
790 __u32 fragment_length;
791 } FragmentStructure;
792
793 /*
794 * Data Buffer Structure Definition
795 */
796 typedef struct {
797 __u32 fragment_count;
798 FragmentStructure fragment_list[MAXFRAGMENTS];
799 } DataBufferStructure;
800
801 #pragma pack(1)
802 typedef struct {
803 __u8 IType;
804 __u8 ISubtype;
805 } Interrupt_Status_Word;
806
807 #pragma pack(1)
808 typedef struct BDBlockType {
809 __u16 info; /* 02 */
810 __u32 trc_next_ptr; /* 06 */
811 __u32 trc_data_block_ptr; /* 10 */
812 __u16 buffer_length; /* 12 */
813
814 __u16 *data_block_ptr; /* 16 */
815 struct BDBlockType *next_ptr; /* 20 */
816 struct BDBlockType *back_ptr; /* 24 */
817 __u8 filler[8]; /* 32 */
818 } BDBlock;
819
820 #pragma pack(1)
821 typedef struct FCBlockType {
822 __u16 frame_status; /* 02 */
823 __u16 info; /* 04 */
824 __u32 trc_next_ptr; /* 08 */
825 __u32 trc_bdb_ptr; /* 12 */
826 __u16 frame_length; /* 14 */
827
828 BDBlock *bdb_ptr; /* 18 */
829 struct FCBlockType *next_ptr; /* 22 */
830 struct FCBlockType *back_ptr; /* 26 */
831 __u16 memory_alloc; /* 28 */
832 __u8 filler[4]; /* 32 */
833
834 } FCBlock;
835
836 #pragma pack(1)
837 typedef struct SBlockType{
838 __u8 Internal_Error_Count;
839 __u8 Line_Error_Count;
840 __u8 AC_Error_Count;
841 __u8 Burst_Error_Count;
842 __u8 RESERVED_COUNTER_0;
843 __u8 AD_TRANS_Count;
844 __u8 RCV_Congestion_Count;
845 __u8 Lost_FR_Error_Count;
846 __u8 FREQ_Error_Count;
847 __u8 FR_Copied_Error_Count;
848 __u8 RESERVED_COUNTER_1;
849 __u8 Token_Error_Count;
850
851 __u16 TI_NDIS_Ring_Status;
852 __u16 BCN_Type;
853 __u16 Error_Code;
854 __u16 SA_of_Last_AMP_SMP[3];
855 __u16 UNA[3];
856 __u16 Ucode_Version_Number;
857 __u16 Status_CHG_Indicate;
858 __u16 RESERVED_STATUS_0;
859 } SBlock;
860
861 #pragma pack(1)
862 typedef struct ACBlockType {
863 __u16 cmd_done_status; /* 02 */
864 __u16 cmd_info; /* 04 */
865 __u32 trc_next_ptr; /* 08 */
866 __u16 cmd; /* 10 */
867 __u16 subcmd; /* 12 */
868 __u16 data_offset_lo; /* 14 */
869 __u16 data_offset_hi; /* 16 */
870
871 struct ACBlockType *next_ptr; /* 20 */
872
873 __u8 filler[12]; /* 32 */
874 } ACBlock;
875
876 #define NUM_OF_INTERRUPTS 0x20
877
878 #pragma pack(1)
879 typedef struct {
880 Interrupt_Status_Word IStatus[NUM_OF_INTERRUPTS];
881 } ISBlock;
882
883 #pragma pack(1)
884 typedef struct {
885 __u16 valid_command; /* 02 */
886 __u16 iack_code; /* 04 */
887 __u16 resume_control; /* 06 */
888 __u16 int_mask_control; /* 08 */
889 __u16 int_mask_state; /* 10 */
890
891 __u8 filler[6]; /* 16 */
892 } SCLBlock;
893
894 #pragma pack(1)
895 typedef struct
896 {
897 __u16 config; /* 02 */
898 __u32 trc_sclb_ptr; /* 06 */
899 __u32 trc_acb_ptr; /* 10 */
900 __u32 trc_isb_ptr; /* 14 */
901 __u16 isbsiz; /* 16 */
902
903 SCLBlock *sclb_ptr; /* 20 */
904 ACBlock *acb_ptr; /* 24 */
905 ISBlock *isb_ptr; /* 28 */
906
907 __u16 Non_Mac_Rx_Bdbs; /* 30 DEBUG */
908 __u8 filler[2]; /* 32 */
909
910 } SCGBlock;
911
912 #pragma pack(1)
913 typedef struct
914 {
915 __u32 trc_scgb_ptr;
916 SCGBlock *scgb_ptr;
917 } ISCPBlock;
918 #pragma pack()
919
920 typedef struct net_local {
921 ISCPBlock *iscpb_ptr;
922 SCGBlock *scgb_ptr;
923 SCLBlock *sclb_ptr;
924 ISBlock *isb_ptr;
925
926 ACBlock *acb_head;
927 ACBlock *acb_curr;
928 ACBlock *acb_next;
929
930 __u8 adapter_name[12];
931
932 __u16 num_rx_bdbs [NUM_RX_QS_USED];
933 __u16 num_rx_fcbs [NUM_RX_QS_USED];
934
935 __u16 num_tx_bdbs [NUM_TX_QS_USED];
936 __u16 num_tx_fcbs [NUM_TX_QS_USED];
937
938 __u16 num_of_tx_buffs;
939
940 __u16 tx_buff_size [NUM_TX_QS_USED];
941 __u16 tx_buff_used [NUM_TX_QS_USED];
942 __u16 tx_queue_status [NUM_TX_QS_USED];
943
944 FCBlock *tx_fcb_head[NUM_TX_QS_USED];
945 FCBlock *tx_fcb_curr[NUM_TX_QS_USED];
946 FCBlock *tx_fcb_end[NUM_TX_QS_USED];
947 BDBlock *tx_bdb_head[NUM_TX_QS_USED];
948 __u16 *tx_buff_head[NUM_TX_QS_USED];
949 __u16 *tx_buff_end[NUM_TX_QS_USED];
950 __u16 *tx_buff_curr[NUM_TX_QS_USED];
951 __u16 num_tx_fcbs_used[NUM_TX_QS_USED];
952
953 FCBlock *rx_fcb_head[NUM_RX_QS_USED];
954 FCBlock *rx_fcb_curr[NUM_RX_QS_USED];
955 BDBlock *rx_bdb_head[NUM_RX_QS_USED];
956 BDBlock *rx_bdb_curr[NUM_RX_QS_USED];
957 BDBlock *rx_bdb_end[NUM_RX_QS_USED];
958 __u16 *rx_buff_head[NUM_RX_QS_USED];
959 __u16 *rx_buff_end[NUM_RX_QS_USED];
960
961 __u32 *ptr_local_ring_num;
962
963 __u32 sh_mem_used;
964
965 __u16 page_offset_mask;
966
967 __u16 authorized_function_classes;
968 __u16 authorized_access_priority;
969
970 __u16 num_acbs;
971 __u16 num_acbs_used;
972 __u16 acb_pending;
973
974 __u16 current_isb_index;
975
976 __u8 monitor_state;
977 __u8 monitor_state_ready;
978 __u16 ring_status;
979 __u8 ring_status_flags;
980 __u8 current_ring_status;
981 __u8 state;
982
983 __u8 join_state;
984
985 __u8 slot_num;
986 __u16 pos_id;
987
988 __u32 *ptr_una;
989 __u32 *ptr_bcn_type;
990 __u32 *ptr_tx_fifo_underruns;
991 __u32 *ptr_rx_fifo_underruns;
992 __u32 *ptr_rx_fifo_overruns;
993 __u32 *ptr_tx_fifo_overruns;
994 __u32 *ptr_tx_fcb_overruns;
995 __u32 *ptr_rx_fcb_overruns;
996 __u32 *ptr_tx_bdb_overruns;
997 __u32 *ptr_rx_bdb_overruns;
998
999 __u16 receive_queue_number;
1000
1001 __u8 rx_fifo_overrun_count;
1002 __u8 tx_fifo_overrun_count;
1003
1004 __u16 adapter_flags;
1005 __u16 adapter_flags1;
1006 __u16 *misc_command_data;
1007 __u16 max_packet_size;
1008
1009 __u16 config_word0;
1010 __u16 config_word1;
1011
1012 __u8 trc_mask;
1013
1014 __u16 source_ring_number;
1015 __u16 target_ring_number;
1016
1017 __u16 microcode_version;
1018
1019 __u16 bic_type;
1020 __u16 nic_type;
1021 __u16 board_id;
1022
1023 __u16 rom_size;
1024 __u32 rom_base;
1025 __u16 ram_size;
1026 __u16 ram_usable;
1027 __u32 ram_base;
1028 __u32 ram_access;
1029
1030 __u16 extra_info;
1031 __u16 mode_bits;
1032 __u16 media_menu;
1033 __u16 media_type;
1034 __u16 adapter_bus;
1035
1036 __u16 status;
1037 __u16 receive_mask;
1038
1039 __u16 group_address_0;
1040 __u16 group_address[2];
1041 __u16 functional_address_0;
1042 __u16 functional_address[2];
1043 __u16 bitwise_group_address[2];
1044
1045 __u8 *ptr_ucode;
1046
1047 __u8 cleanup;
1048
1049 struct sk_buff_head SendSkbQueue;
1050 __u16 QueueSkb;
1051
1052 struct tr_statistics MacStat; /* MAC statistics structure */
1053
1054 spinlock_t lock;
1055 } NET_LOCAL;
1056
1057 /************************************
1058 * SNMP-ON-BOARD Agent Link Structure
1059 ************************************/
1060
1061 typedef struct {
1062 __u8 LnkSigStr[12]; /* signature string "SmcLinkTable" */
1063 __u8 LnkDrvTyp; /* 1=Redbox ODI, 2=ODI DOS, 3=ODI OS/2, 4=NDIS DOS */
1064 __u8 LnkFlg; /* 0 if no agent linked, 1 if agent linked */
1065 void *LnkNfo; /* routine which returns pointer to NIC info */
1066 void *LnkAgtRcv; /* pointer to agent receive trap entry */
1067 void *LnkAgtXmt; /* pointer to agent transmit trap
1068 entry */
1069 void *LnkGet; /* pointer to NIC receive data
1070 copy routine */
1071 void *LnkSnd; /* pointer to NIC send routine
1072 */
1073 void *LnkRst; /* pointer to NIC driver reset
1074 routine */
1075 void *LnkMib; /* pointer to MIB data base */
1076 void *LnkMibAct; /* pointer to MIB action routine list */
1077 __u16 LnkCntOffset; /* offset to error counters */
1078 __u16 LnkCntNum; /* number of error counters */
1079 __u16 LnkCntSize; /* size of error counters i.e. 32 = 32 bits */
1080 void *LnkISR; /* pointer to interrupt vector */
1081 __u8 LnkFrmTyp; /* 1=Ethernet, 2=Token Ring */
1082 __u8 LnkDrvVer1 ; /* driver major version */
1083 __u8 LnkDrvVer2 ; /* driver minor version */
1084 } AgentLink;
1085
1086 /*
1087 * Definitions for pcm_card_flags(bit_mapped)
1088 */
1089 #define REG_COMPLETE 0x0001
1090 #define INSERTED 0x0002
1091 #define PCC_INSERTED 0x0004 /* 1=currently inserted, 0=cur removed */
1092
1093 /*
1094 * Adapter RAM test patterns
1095 */
1096 #define RAM_PATTERN_1 0x55AA
1097 #define RAM_PATTERN_2 0x9249
1098 #define RAM_PATTERN_3 0xDB6D
1099
1100 /*
1101 * definitions for RAM test
1102 */
1103 #define ROM_SIGNATURE 0xAA55
1104 #define MIN_ROM_SIZE 0x2000
1105
1106 /*
1107 * Return Codes
1108 */
1109 #define SUCCESS 0x0000
1110 #define ADAPTER_AND_CONFIG 0x0001
1111 #define ADAPTER_NO_CONFIG 0x0002
1112 #define NOT_MY_INTERRUPT 0x0003
1113 #define FRAME_REJECTED 0x0004
1114 #define EVENTS_DISABLED 0x0005
1115 #define OUT_OF_RESOURCES 0x0006
1116 #define INVALID_PARAMETER 0x0007
1117 #define INVALID_FUNCTION 0x0008
1118 #define INITIALIZE_FAILED 0x0009
1119 #define CLOSE_FAILED 0x000A
1120 #define MAX_COLLISIONS 0x000B
1121 #define NO_SUCH_DESTINATION 0x000C
1122 #define BUFFER_TOO_SMALL_ERROR 0x000D
1123 #define ADAPTER_CLOSED 0x000E
1124 #define UCODE_NOT_PRESENT 0x000F
1125 #define FIFO_UNDERRUN 0x0010
1126 #define DEST_OUT_OF_RESOURCES 0x0011
1127 #define ADAPTER_NOT_INITIALIZED 0x0012
1128 #define PENDING 0x0013
1129 #define UCODE_PRESENT 0x0014
1130 #define NOT_INIT_BY_BRIDGE 0x0015
1131
1132 #define OPEN_FAILED 0x0080
1133 #define HARDWARE_FAILED 0x0081
1134 #define SELF_TEST_FAILED 0x0082
1135 #define RAM_TEST_FAILED 0x0083
1136 #define RAM_CONFLICT 0x0084
1137 #define ROM_CONFLICT 0x0085
1138 #define UNKNOWN_ADAPTER 0x0086
1139 #define CONFIG_ERROR 0x0087
1140 #define CONFIG_WARNING 0x0088
1141 #define NO_FIXED_CNFG 0x0089
1142 #define EEROM_CKSUM_ERROR 0x008A
1143 #define ROM_SIGNATURE_ERROR 0x008B
1144 #define ROM_CHECKSUM_ERROR 0x008C
1145 #define ROM_SIZE_ERROR 0x008D
1146 #define UNSUPPORTED_NIC_CHIP 0x008E
1147 #define NIC_REG_ERROR 0x008F
1148 #define BIC_REG_ERROR 0x0090
1149 #define MICROCODE_TEST_ERROR 0x0091
1150 #define LOBE_MEDIA_TEST_FAILED 0x0092
1151
1152 #define ADAPTER_FOUND_LAN_CORRUPT 0x009B
1153
1154 #define ADAPTER_NOT_FOUND 0xFFFF
1155
1156 #define ILLEGAL_FUNCTION INVALID_FUNCTION
1157
1158 /* Errors */
1159 #define IO_BASE_INVALID 0x0001
1160 #define IO_BASE_RANGE 0x0002
1161 #define IRQ_INVALID 0x0004
1162 #define IRQ_RANGE 0x0008
1163 #define RAM_BASE_INVALID 0x0010
1164 #define RAM_BASE_RANGE 0x0020
1165 #define RAM_SIZE_RANGE 0x0040
1166 #define MEDIA_INVALID 0x0800
1167
1168 /* Warnings */
1169 #define IRQ_MISMATCH 0x0080
1170 #define RAM_BASE_MISMATCH 0x0100
1171 #define RAM_SIZE_MISMATCH 0x0200
1172 #define BUS_MODE_MISMATCH 0x0400
1173
1174 #define RX_CRC_ERROR 0x01
1175 #define RX_ALIGNMENT_ERROR 0x02
1176 #define RX_HW_FAILED 0x80
1177
1178 /*
1179 * Definitions for the field RING_STATUS_FLAGS
1180 */
1181 #define RING_STATUS_CHANGED 0X01
1182 #define MONITOR_STATE_CHANGED 0X02
1183 #define JOIN_STATE_CHANGED 0X04
1184
1185 /*
1186 * Definitions for the field JOIN_STATE
1187 */
1188 #define JS_BYPASS_STATE 0x00
1189 #define JS_LOBE_TEST_STATE 0x01
1190 #define JS_DETECT_MONITOR_PRESENT_STATE 0x02
1191 #define JS_AWAIT_NEW_MONITOR_STATE 0x03
1192 #define JS_DUPLICATE_ADDRESS_TEST_STATE 0x04
1193 #define JS_NEIGHBOR_NOTIFICATION_STATE 0x05
1194 #define JS_REQUEST_INITIALIZATION_STATE 0x06
1195 #define JS_JOIN_COMPLETE_STATE 0x07
1196 #define JS_BYPASS_WAIT_STATE 0x08
1197
1198 /*
1199 * Definitions for the field MONITOR_STATE
1200 */
1201 #define MS_MONITOR_FSM_INACTIVE 0x00
1202 #define MS_REPEAT_BEACON_STATE 0x01
1203 #define MS_REPEAT_CLAIM_TOKEN_STATE 0x02
1204 #define MS_TRANSMIT_CLAIM_TOKEN_STATE 0x03
1205 #define MS_STANDBY_MONITOR_STATE 0x04
1206 #define MS_TRANSMIT_BEACON_STATE 0x05
1207 #define MS_ACTIVE_MONITOR_STATE 0x06
1208 #define MS_TRANSMIT_RING_PURGE_STATE 0x07
1209 #define MS_BEACON_TEST_STATE 0x09
1210
1211 /*
1212 * Definitions for the bit-field RING_STATUS
1213 */
1214 #define SIGNAL_LOSS 0x8000
1215 #define HARD_ERROR 0x4000
1216 #define SOFT_ERROR 0x2000
1217 #define TRANSMIT_BEACON 0x1000
1218 #define LOBE_WIRE_FAULT 0x0800
1219 #define AUTO_REMOVAL_ERROR 0x0400
1220 #define REMOVE_RECEIVED 0x0100
1221 #define COUNTER_OVERFLOW 0x0080
1222 #define SINGLE_STATION 0x0040
1223 #define RING_RECOVERY 0x0020
1224
1225 /*
1226 * Definitions for the field BUS_TYPE
1227 */
1228 #define AT_BUS 0x00
1229 #define MCA_BUS 0x01
1230 #define EISA_BUS 0x02
1231 #define PCI_BUS 0x03
1232 #define PCMCIA_BUS 0x04
1233
1234 /*
1235 * Definitions for adapter_flags
1236 */
1237 #define RX_VALID_LOOKAHEAD 0x0001
1238 #define FORCED_16BIT_MODE 0x0002
1239 #define ADAPTER_DISABLED 0x0004
1240 #define TRANSMIT_CHAIN_INT 0x0008
1241 #define EARLY_RX_FRAME 0x0010
1242 #define EARLY_TX 0x0020
1243 #define EARLY_RX_COPY 0x0040
1244 #define USES_PHYSICAL_ADDR 0x0080 /* Rsvd for DEC PCI and 9232 */
1245 #define NEEDS_PHYSICAL_ADDR 0x0100 /* Reserved*/
1246 #define RX_STATUS_PENDING 0x0200
1247 #define ERX_DISABLED 0x0400 /* EARLY_RX_ENABLE rcv_mask */
1248 #define ENABLE_TX_PENDING 0x0800
1249 #define ENABLE_RX_PENDING 0x1000
1250 #define PERM_CLOSE 0x2000
1251 #define IO_MAPPED 0x4000 /* IOmapped bus interface 795 */
1252 #define ETX_DISABLED 0x8000
1253
1254
1255 /*
1256 * Definitions for adapter_flags1
1257 */
1258 #define TX_PHY_RX_VIRT 0x0001
1259 #define NEEDS_HOST_RAM 0x0002
1260 #define NEEDS_MEDIA_TYPE 0x0004
1261 #define EARLY_RX_DONE 0x0008
1262 #define PNP_BOOT_BIT 0x0010 /* activates PnP & config on power-up */
1263 /* clear => regular PnP operation */
1264 #define PNP_ENABLE 0x0020 /* regular PnP operation clear => */
1265 /* no PnP, overrides PNP_BOOT_BIT */
1266 #define SATURN_ENABLE 0x0040
1267
1268 #define ADAPTER_REMOVABLE 0x0080 /* adapter is hot swappable */
1269 #define TX_PHY 0x0100 /* Uses physical address for tx bufs */
1270 #define RX_PHY 0x0200 /* Uses physical address for rx bufs */
1271 #define TX_VIRT 0x0400 /* Uses virtual addr for tx bufs */
1272 #define RX_VIRT 0x0800
1273 #define NEEDS_SERVICE 0x1000
1274
1275 /*
1276 * Adapter Status Codes
1277 */
1278 #define OPEN 0x0001
1279 #define INITIALIZED 0x0002
1280 #define CLOSED 0x0003
1281 #define FAILED 0x0005
1282 #define NOT_INITIALIZED 0x0006
1283 #define IO_CONFLICT 0x0007
1284 #define CARD_REMOVED 0x0008
1285 #define CARD_INSERTED 0x0009
1286
1287 /*
1288 * Mode Bit Definitions
1289 */
1290 #define INTERRUPT_STATUS_BIT 0x8000 /* PC Interrupt Line: 0 = Not Enabled */
1291 #define BOOT_STATUS_MASK 0x6000 /* Mask to isolate BOOT_STATUS */
1292 #define BOOT_INHIBIT 0x0000 /* BOOT_STATUS is 'inhibited' */
1293 #define BOOT_TYPE_1 0x2000 /* Unused BOOT_STATUS value */
1294 #define BOOT_TYPE_2 0x4000 /* Unused BOOT_STATUS value */
1295 #define BOOT_TYPE_3 0x6000 /* Unused BOOT_STATUS value */
1296 #define ZERO_WAIT_STATE_MASK 0x1800 /* Mask to isolate Wait State flags */
1297 #define ZERO_WAIT_STATE_8_BIT 0x1000 /* 0 = Disabled (Inserts Wait States) */
1298 #define ZERO_WAIT_STATE_16_BIT 0x0800 /* 0 = Disabled (Inserts Wait States) */
1299 #define LOOPING_MODE_MASK 0x0007
1300 #define LOOPBACK_MODE_0 0x0000
1301 #define LOOPBACK_MODE_1 0x0001
1302 #define LOOPBACK_MODE_2 0x0002
1303 #define LOOPBACK_MODE_3 0x0003
1304 #define LOOPBACK_MODE_4 0x0004
1305 #define LOOPBACK_MODE_5 0x0005
1306 #define LOOPBACK_MODE_6 0x0006
1307 #define LOOPBACK_MODE_7 0x0007
1308 #define AUTO_MEDIA_DETECT 0x0008
1309 #define MANUAL_CRC 0x0010
1310 #define EARLY_TOKEN_REL 0x0020 /* Early Token Release for Token Ring */
1311 #define UMAC 0x0040
1312 #define UTP2_PORT 0x0080 /* For 8216T2, 0=port A, 1=Port B. */
1313 #define BNC_10BT_INTERFACE 0x0600 /* BNC and UTP current media set */
1314 #define UTP_INTERFACE 0x0500 /* Ethernet UTP Only. */
1315 #define BNC_INTERFACE 0x0400
1316 #define AUI_INTERFACE 0x0300
1317 #define AUI_10BT_INTERFACE 0x0200
1318 #define STARLAN_10_INTERFACE 0x0100
1319 #define INTERFACE_TYPE_MASK 0x0700
1320
1321 /*
1322 * Media Type Bit Definitions
1323 *
1324 * legend: TP = Twisted Pair
1325 * STP = Shielded twisted pair
1326 * UTP = Unshielded twisted pair
1327 */
1328
1329 #define CNFG_MEDIA_TYPE_MASK 0x001e /* POS Register 3 Mask */
1330
1331 #define MEDIA_S10 0x0000 /* Ethernet adapter, TP. */
1332 #define MEDIA_AUI_UTP 0x0001 /* Ethernet adapter, AUI/UTP media */
1333 #define MEDIA_BNC 0x0002 /* Ethernet adapter, BNC media. */
1334 #define MEDIA_AUI 0x0003 /* Ethernet Adapter, AUI media. */
1335 #define MEDIA_STP_16 0x0004 /* TokenRing adap, 16Mbit STP. */
1336 #define MEDIA_STP_4 0x0005 /* TokenRing adap, 4Mbit STP. */
1337 #define MEDIA_UTP_16 0x0006 /* TokenRing adap, 16Mbit UTP. */
1338 #define MEDIA_UTP_4 0x0007 /* TokenRing adap, 4Mbit UTP. */
1339 #define MEDIA_UTP 0x0008 /* Ethernet adapter, UTP media (no AUI)
1340 */
1341 #define MEDIA_BNC_UTP 0x0010 /* Ethernet adapter, BNC/UTP media */
1342 #define MEDIA_UTPFD 0x0011 /* Ethernet adapter, TP full duplex */
1343 #define MEDIA_UTPNL 0x0012 /* Ethernet adapter, TP with link integrity test disabled */
1344 #define MEDIA_AUI_BNC 0x0013 /* Ethernet adapter, AUI/BNC media */
1345 #define MEDIA_AUI_BNC_UTP 0x0014 /* Ethernet adapter, AUI_BNC/UTP */
1346 #define MEDIA_UTPA 0x0015 /* Ethernet UTP-10Mbps Ports A */
1347 #define MEDIA_UTPB 0x0016 /* Ethernet UTP-10Mbps Ports B */
1348 #define MEDIA_STP_16_UTP_16 0x0017 /* Token Ring STP-16Mbps/UTP-16Mbps */
1349 #define MEDIA_STP_4_UTP_4 0x0018 /* Token Ring STP-4Mbps/UTP-4Mbps */
1350
1351 #define MEDIA_STP100_UTP100 0x0020 /* Ethernet STP-100Mbps/UTP-100Mbps */
1352 #define MEDIA_UTP100FD 0x0021 /* Ethernet UTP-100Mbps, full duplex */
1353 #define MEDIA_UTP100 0x0022 /* Ethernet UTP-100Mbps */
1354
1355
1356 #define MEDIA_UNKNOWN 0xFFFF /* Unknown adapter/media type */
1357
1358 /*
1359 * Definitions for the field:
1360 * media_type2
1361 */
1362 #define MEDIA_TYPE_MII 0x0001
1363 #define MEDIA_TYPE_UTP 0x0002
1364 #define MEDIA_TYPE_BNC 0x0004
1365 #define MEDIA_TYPE_AUI 0x0008
1366 #define MEDIA_TYPE_S10 0x0010
1367 #define MEDIA_TYPE_AUTO_SENSE 0x1000
1368 #define MEDIA_TYPE_AUTO_DETECT 0x4000
1369 #define MEDIA_TYPE_AUTO_NEGOTIATE 0x8000
1370
1371 /*
1372 * Definitions for the field:
1373 * line_speed
1374 */
1375 #define LINE_SPEED_UNKNOWN 0x0000
1376 #define LINE_SPEED_4 0x0001
1377 #define LINE_SPEED_10 0x0002
1378 #define LINE_SPEED_16 0x0004
1379 #define LINE_SPEED_100 0x0008
1380 #define LINE_SPEED_T4 0x0008 /* 100BaseT4 aliased for 9332BVT */
1381 #define LINE_SPEED_FULL_DUPLEX 0x8000
1382
1383 /*
1384 * Definitions for the field:
1385 * bic_type (Bus interface chip type)
1386 */
1387 #define BIC_NO_CHIP 0x0000 /* Bus interface chip not implemented */
1388 #define BIC_583_CHIP 0x0001 /* 83C583 bus interface chip */
1389 #define BIC_584_CHIP 0x0002 /* 83C584 bus interface chip */
1390 #define BIC_585_CHIP 0x0003 /* 83C585 bus interface chip */
1391 #define BIC_593_CHIP 0x0004 /* 83C593 bus interface chip */
1392 #define BIC_594_CHIP 0x0005 /* 83C594 bus interface chip */
1393 #define BIC_564_CHIP 0x0006 /* PCMCIA Bus interface chip */
1394 #define BIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */
1395 #define BIC_571_CHIP 0x0008 /* 83C571 EISA bus master i-face */
1396 #define BIC_587_CHIP 0x0009 /* Token Ring AT bus master i-face */
1397 #define BIC_574_CHIP 0x0010 /* FEAST bus interface chip */
1398 #define BIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */
1399 #define BIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */
1400 #define BIC_8432E_CHIP 0x0013 /* 8432 Enhanced bus iface/Ethernet NIC(DEC) */
1401 #define BIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */
1402 #define BIC_C94_CHIP 0x0015 /* 91C94 bus i-face in PCMCIA mode */
1403 #define BIC_X8020_CHIP 0x0016 /* Xilinx PCMCIA multi-func i-face */
1404
1405 /*
1406 * Definitions for the field:
1407 * nic_type (Bus interface chip type)
1408 */
1409 #define NIC_UNK_CHIP 0x0000 /* Unknown NIC chip */
1410 #define NIC_8390_CHIP 0x0001 /* DP8390 Ethernet NIC */
1411 #define NIC_690_CHIP 0x0002 /* 83C690 Ethernet NIC */
1412 #define NIC_825_CHIP 0x0003 /* 83C825 Token Ring NIC */
1413 /* #define NIC_???_CHIP 0x0004 */ /* Not used */
1414 /* #define NIC_???_CHIP 0x0005 */ /* Not used */
1415 /* #define NIC_???_CHIP 0x0006 */ /* Not used */
1416 #define NIC_790_CHIP 0x0007 /* 83C790 bus i-face/Ethernet NIC chip */
1417 #define NIC_C100_CHIP 0x0010 /* FEAST 100Mbps Ethernet NIC */
1418 #define NIC_8432_CHIP 0x0011 /* 8432 bus i-face/Ethernet NIC(DEC PCI) */
1419 #define NIC_9332_CHIP 0x0012 /* 9332 bus i-face/100Mbps Ether NIC(DEC PCI) */
1420 #define NIC_8432E_CHIP 0x0013 /* 8432 enhanced bus iface/Ethernet NIC(DEC) */
1421 #define NIC_EPIC100_CHIP 0x0014 /* EPIC/100 10/100 Mbps Ethernet BIC/NIC */
1422 #define NIC_C94_CHIP 0x0015 /* 91C94 PC Card with multi func */
1423
1424 /*
1425 * Definitions for the field:
1426 * adapter_type The adapter_type field describes the adapter/bus
1427 * configuration.
1428 */
1429 #define BUS_ISA16_TYPE 0x0001 /* 16 bit adap in 16 bit (E)ISA slot */
1430 #define BUS_ISA8_TYPE 0x0002 /* 8/16b adap in 8 bit XT/(E)ISA slot */
1431 #define BUS_MCA_TYPE 0x0003 /* Micro Channel adapter */
1432
1433 /*
1434 * Receive Mask definitions
1435 */
1436 #define ACCEPT_MULTICAST 0x0001
1437 #define ACCEPT_BROADCAST 0x0002
1438 #define PROMISCUOUS_MODE 0x0004
1439 #define ACCEPT_SOURCE_ROUTING 0x0008
1440 #define ACCEPT_ERR_PACKETS 0x0010
1441 #define ACCEPT_ATT_MAC_FRAMES 0x0020
1442 #define ACCEPT_MULTI_PROM 0x0040
1443 #define TRANSMIT_ONLY 0x0080
1444 #define ACCEPT_EXT_MAC_FRAMES 0x0100
1445 #define EARLY_RX_ENABLE 0x0200
1446 #define PKT_SIZE_NOT_NEEDED 0x0400
1447 #define ACCEPT_SOURCE_ROUTING_SPANNING 0x0808
1448
1449 #define ACCEPT_ALL_MAC_FRAMES 0x0120
1450
1451 /*
1452 * config_mode defs
1453 */
1454 #define STORE_EEROM 0x0001 /* Store config in EEROM. */
1455 #define STORE_REGS 0x0002 /* Store config in register set. */
1456
1457 /*
1458 * equates for lmac_flags in adapter structure (Ethernet)
1459 */
1460 #define MEM_DISABLE 0x0001
1461 #define RX_STATUS_POLL 0x0002
1462 #define USE_RE_BIT 0x0004
1463 /*#define RESERVED 0x0008 */
1464 /*#define RESERVED 0x0010 */
1465 /*#define RESERVED 0x0020 */
1466 /*#define RESERVED 0x0040 */
1467 /*#define RESERVED 0x0080 */
1468 /*#define RESERVED 0x0100 */
1469 /*#define RESERVED 0x0200 */
1470 /*#define RESERVED 0x0400 */
1471 /*#define RESERVED 0x0800 */
1472 /*#define RESERVED 0x1000 */
1473 /*#define RESERVED 0x2000 */
1474 /*#define RESERVED 0x4000 */
1475 /*#define RESERVED 0x8000 */
1476
1477 /* media_opts & media_set Fields bit defs for Ethernet ... */
1478 #define MED_OPT_BNC 0x01
1479 #define MED_OPT_UTP 0x02
1480 #define MED_OPT_AUI 0x04
1481 #define MED_OPT_10MB 0x08
1482 #define MED_OPT_100MB 0x10
1483 #define MED_OPT_S10 0x20
1484
1485 /* media_opts & media_set Fields bit defs for Token Ring ... */
1486 #define MED_OPT_4MB 0x08
1487 #define MED_OPT_16MB 0x10
1488 #define MED_OPT_STP 0x40
1489
1490 #define MAX_8023_SIZE 1500 /* Max 802.3 size of frame. */
1491 #define DEFAULT_ERX_VALUE 4 /* Number of 16-byte blocks for 790B early Rx. */
1492 #define DEFAULT_ETX_VALUE 32 /* Number of bytes for 790B early Tx. */
1493 #define DEFAULT_TX_RETRIES 3 /* Number of transmit retries */
1494 #define LPBK_FRAME_SIZE 1024 /* Default loopback frame for Rx calibration test. */
1495 #define MAX_LOOKAHEAD_SIZE 252 /* Max lookahead size for ethernet. */
1496
1497 #define RW_MAC_STATE 0x1101
1498 #define RW_SA_OF_LAST_AMP_OR_SMP 0x2803
1499 #define RW_PHYSICAL_DROP_NUMBER 0x3B02
1500 #define RW_UPSTREAM_NEIGHBOR_ADDRESS 0x3E03
1501 #define RW_PRODUCT_INSTANCE_ID 0x4B09
1502
1503 #define RW_TRC_STATUS_BLOCK 0x5412
1504
1505 #define RW_MAC_ERROR_COUNTERS_NO_CLEAR 0x8006
1506 #define RW_MAC_ERROR_COUNTER_CLEAR 0x7A06
1507 #define RW_CONFIG_REGISTER_0 0xA001
1508 #define RW_CONFIG_REGISTER_1 0xA101
1509 #define RW_PRESCALE_TIMER_THRESHOLD 0xA201
1510 #define RW_TPT_THRESHOLD 0xA301
1511 #define RW_TQP_THRESHOLD 0xA401
1512 #define RW_TNT_THRESHOLD 0xA501
1513 #define RW_TBT_THRESHOLD 0xA601
1514 #define RW_TSM_THRESHOLD 0xA701
1515 #define RW_TAM_THRESHOLD 0xA801
1516 #define RW_TBR_THRESHOLD 0xA901
1517 #define RW_TER_THRESHOLD 0xAA01
1518 #define RW_TGT_THRESHOLD 0xAB01
1519 #define RW_THT_THRESHOLD 0xAC01
1520 #define RW_TRR_THRESHOLD 0xAD01
1521 #define RW_TVX_THRESHOLD 0xAE01
1522 #define RW_INDIVIDUAL_MAC_ADDRESS 0xB003
1523
1524 #define RW_INDIVIDUAL_GROUP_ADDRESS 0xB303 /* all of group addr */
1525 #define RW_INDIVIDUAL_GROUP_ADDR_WORD_0 0xB301 /* 1st word of group addr */
1526 #define RW_INDIVIDUAL_GROUP_ADDR 0xB402 /* 2nd-3rd word of group addr */
1527 #define RW_FUNCTIONAL_ADDRESS 0xB603 /* all of functional addr */
1528 #define RW_FUNCTIONAL_ADDR_WORD_0 0xB601 /* 1st word of func addr */
1529 #define RW_FUNCTIONAL_ADDR 0xB702 /* 2nd-3rd word func addr */
1530
1531 #define RW_BIT_SIGNIFICANT_GROUP_ADDR 0xB902
1532 #define RW_SOURCE_RING_BRIDGE_NUMBER 0xBB01
1533 #define RW_TARGET_RING_NUMBER 0xBC01
1534
1535 #define RW_HIC_INTERRUPT_MASK 0xC601
1536
1537 #define SOURCE_ROUTING_SPANNING_BITS 0x00C0 /* Spanning Tree Frames */
1538 #define SOURCE_ROUTING_EXPLORER_BIT 0x0040 /* Explorer and Single Route */
1539
1540 /* write */
1541
1542 #define CSR_MSK_ALL 0x80 // Bic 587 Only
1543 #define CSR_MSKTINT 0x20
1544 #define CSR_MSKCBUSY 0x10
1545 #define CSR_CLRTINT 0x08
1546 #define CSR_CLRCBUSY 0x04
1547 #define CSR_WCSS 0x02
1548 #define CSR_CA 0x01
1549
1550 /* read */
1551
1552 #define CSR_TINT 0x20
1553 #define CSR_CINT 0x10
1554 #define CSR_TSTAT 0x08
1555 #define CSR_CSTAT 0x04
1556 #define CSR_FAULT 0x02
1557 #define CSR_CBUSY 0x01
1558
1559 #define LAAR_MEM16ENB 0x80
1560 #define Zws16 0x20
1561
1562 #define IRR_IEN 0x80
1563 #define Zws8 0x01
1564
1565 #define IMCCR_EIL 0x04
1566
1567 typedef struct {
1568 __u8 ac; /* Access Control */
1569 __u8 fc; /* Frame Control */
1570 __u8 da[6]; /* Dest Addr */
1571 __u8 sa[6]; /* Source Addr */
1572
1573 __u16 vl; /* Vector Length */
1574 __u8 dc_sc; /* Dest/Source Class */
1575 __u8 vc; /* Vector Code */
1576 } MAC_HEADER;
1577
1578 #define MAX_SUB_VECTOR_INFO (RX_DATA_BUFFER_SIZE - sizeof(MAC_HEADER) - 2)
1579
1580 typedef struct
1581 {
1582 __u8 svl; /* Sub-vector Length */
1583 __u8 svi; /* Sub-vector Code */
1584 __u8 svv[MAX_SUB_VECTOR_INFO]; /* Sub-vector Info */
1585 } MAC_SUB_VECTOR;
1586
1587 #endif /* __KERNEL__ */
1588 #endif /* __LINUX_SMCTR_H */