summaryrefslogblamecommitdiffstats
path: root/private/ntos/ndis/madge/driver/head_def/ftk_user.h
blob: 09f85c8b5b8b5ecc445b5facc452b84755702033 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666

























































































































































































































































































































































































































































































































































































































































































                                                                               
/****************************************************************************/
/****************************************************************************/
/*                                                                          */
/*      THE USER DEFINITIONS                                                */
/*      ====================                                                */
/*                                                                          */
/*      FTK_USER.H : Part of the FASTMAC TOOL-KIT (FTK)                     */
/*                                                                          */
/*      Copyright (c) Madge Networks Ltd. 1991-1994                         */
/*      Developed by MF                                                     */
/*      CONFIDENTIAL                                                        */
/*                                                                          */
/*                                                                          */
/****************************************************************************/
/*                                                                          */
/* This header file contains ALL the definitions and structures required by */
/* any  user  of the FTK driver. Any user of the FTK need only include this */
/* definitions header file in order to use the FTK.                         */
/*                                                                          */
/* IMPORTANT : Some structures used within the FTK  need to  be  packed  in */
/* order to work correctly. This means sizeof(STRUCTURE) will give the real */
/* size  in bytes, and if a structure contains sub-structures there will be */
/* no spaces between the sub-structures.                                    */
/*                                                                          */
/****************************************************************************/

/****************************************************************************/
/*                                                                          */
/* VERSION_NUMBER of FTK to which this FTK_USER.H belongs :                 */
/*                                                                          */

#define FTK_VERSION_NUMBER_FTK_USER_H 221


/****************************************************************************/
/*                                                                          */
/* TYPEDEFs for all structures defined within this header file :            */
/*                                                                          */

typedef struct STRUCT_NODE_ADDRESS              NODE_ADDRESS;
typedef union  UNION_MULTI_ADDRESS              MULTI_ADDRESS;
typedef struct STRUCT_STATUS_INFORMATION        STATUS_INFORMATION;
typedef struct STRUCT_ERROR_LOG                 ERROR_LOG;
typedef struct STRUCT_PROBE                     PROBE;
typedef struct STRUCT_PREPARE_ARGS              PREPARE_ARGS, *PPREPARE_ARGS;
typedef struct STRUCT_START_ARGS                START_ARGS, *PSTART_ARGS;
typedef struct STRUCT_TR_OPEN_DATA              TR_OPEN_DATA, *PTR_OPEN_DATA;


/****************************************************************************/
/*                                                                          */
/* Function declarations                                                    */
/*                                                                          */
/* Routines  in the FTK are either local to a module, or they are exported. */
/* Exported routines are entry points to the  user  of  a  module  and  the */
/* routine  has  an  'extern' definition in an appropriate header file (see */
/* FTK_INTR.H and FTK_EXTR.H). A user of the FTK may wish  to  follow  this */
/* method of function declarations using the following definitions.         */
/*                                                                          */

#define local   static
#define export


/****************************************************************************/
/*                                                                          */
/* Basic types : BYTE, WORD, DWORD and BOOLEAN                              */
/*                                                                          */
/* The basic types used throughout the FTK, and for passing  parameters  to */
/* it,  are  BYTE  (8  bit unsigned), WORD (16 bit unsigned), DWORD (32 bit */
/* unsigned) and BOOLEAN (16 bit unsigned). A BOOLEAN variable should  take */
/* the value TRUE or FALSE.                                                 */
/*                                                                          */
/* Note  that  none  of  the FTK code makes an explicit check for the value */
/* TRUE (it only checks for FALSE which must be zero) and  hence  TRUE  can */
/* have any non-zero value.                                                 */
/*                                                                          */

typedef unsigned char           BYTE;           /* 8 bits                   */

typedef unsigned short int      WORD;           /* 16 bits                  */

typedef unsigned long int       DWORD;          /* 32 bits                  */

typedef unsigned long int       ULONG;

typedef WORD                    WBOOLEAN;

typedef unsigned int            UINT;

#define	VOID			void

#define FALSE                   0
#define TRUE                    1

#if !defined(max)
#define max(a,b) ((a) < (b) ? (b) : (a))
#endif

#if !defined(min)
#define min(a,b) ((a) < (b) ? (a) : (b))
#endif


#ifdef FMPLUS

/****************************************************************************/
/*                                                                          */
/* Variables : Fmplus download image                                       */
/*                                                                          */
/* The following variables are exported  by  FMPLUS.C  which  contains  the */
/* binary image for FastmacPlus in a 'C' format BYTE array. These variables */
/* will  be  needed  by  a  user  of  the  FTK in order to download Fastmac */
/* Plus  (fmplus_image),   display  the  Fastmac  Plus version  number  and */
/* copyright  message  (fmplus_version  and fmplus_copyright_msg) and check */
/* that  the   FTK   version   number   is   that   required   by   Fastmac */
/* (ftk_version_for_fmplus).  The variables  concerned with the size of the */
/* Fastmac Plus binary (sizeof_fmplus_array and recorded_size_fmplus_array) */
/* can  be  used  to  check  for corruption of the Fasmtac image array. The */
/* checksum byte (fmplus_checksum) can also be used for this purpose.       */
/*                                                                          */

extern BYTE fmplus_image[];

extern char fmplus_version[];

extern char fmplus_copyright_msg[];

extern WORD ftk_version_for_fmplus;

extern WORD sizeof_fmplus_array;

extern WORD recorded_size_fmplus_array;

extern BYTE fmplus_checksum;

#else

/****************************************************************************/
/*                                                                          */
/* Variables : Fastmac download image                                       */
/*                                                                          */
/* The following variables are exported by  FASTMAC.C  which  contains  the */
/* binary image for Fastmac in a 'C' format  BYTE  array.  These  variables */
/* will  be  needed  by  a  user  of  the  FTK in order to download Fastmac */
/* (fastmac_image),  display  the  Fastmac  version  number  and  copyright */
/* message  (fastmac_version  and fastmac_copyright_msg) and check that the */
/* FTK    version    number     is     that     required     by     Fastmac */
/* (ftk_version_for_fastmac).  The variables concerned with the size of the */
/* Fastmac binary  (sizeof_fastmac_array  and  recorded_size_fastmac_array) */
/* can  be  used  to  check  for corruption of the Fasmtac image array. The */
/* checksum byte (fastmac_checksum) can also be used for this purpose.      */
/*                                                                          */

extern BYTE fastmac_image[];

extern WORD fastmac_version;

extern char fastmac_copyright_msg[];

extern WORD ftk_version_for_fastmac;

extern WORD sizeof_fastmac_array;

extern WORD recorded_size_fastmac_array;

extern BYTE fastmac_checksum;

#endif

/****************************************************************************/
/*                                                                          */
/* Values : Pointers                                                        */
/*                                                                          */
/* For a near pointer, (one that points to a location in DGROUP), the value */
/* NULL  (must equal 0) is used to specify that it is yet to be assigned or */
/* an attempt to assign to it was unsuccessful.  For example, an attempt to */
/* allocate memory via a system specific call to which a near pointer is to */
/* point, eg. sys_alloc_init_block, should  return  NULL  if  unsuccessful. */
/* Similarly,  when  a  DWORD  is  used  as  a pointer to a 32 bit physical */
/* address pointer, the value NULL_PHYSADDR (must equal 0L)  is  used.   It */
/* should be returned by sys_alloc fastmac buffer routines if unsuccessful. */
/*                                                                          */

#if !defined(NULL)
#define NULL                    0
#endif

#define NULL_PHYSADDR           0L


/****************************************************************************/
/*                                                                          */
/* Type : ADAPTER_HANDLE                                                    */
/*                                                                          */
/* An element of this type is returned by driver_prepare_adapter  in  order */
/* to  identify a particular adapter for all subsequent calls to the driver */
/* module of the FTK.                                                       */
/*                                                                          */

typedef WORD                    ADAPTER_HANDLE;


/****************************************************************************/
/*                                                                          */
/* Type : DOWNLOAD_IMAGE                                                    */
/*                                                                          */
/* A pointer  to  a  download  image  must  be  supplied  by  the  user  to */
/* driver_prepare_adapter. This download image should be Fastmac.           */
/*                                                                          */

typedef BYTE                    DOWNLOAD_IMAGE;


/****************************************************************************/
/*                                                                          */
/* The following structures represent data strcutures on the adapter and    */
/* must be byte packed.                                                     */
/*                                                                          */

#pragma pack(1)


/****************************************************************************/
/*                                                                          */
/* Structure type : NODE_ADDRESS                                            */
/*                                                                          */
/* A node address may be supplied  by the user to driver_prepare_adapter or */
/* driver_open_adapter.  The  permanent  node  address  of  the  adapter is */
/* returned by driver_start_adapter. A node address is a 6 byte value.  For */
/* Madge adapters the bytes would be 0x00, 0x00, 0xF6, ... etc.             */
/*                                                                          */

struct STRUCT_NODE_ADDRESS
    {
    BYTE        byte[6];
    };


/****************************************************************************/
/*                                                                          */
/* Union type : MULTI_ADDRESS                                               */
/*                                                                          */
/* A   multicast   address   may   be   supplied    by    the    user    to */
/* driver_set_group_address    or    driver_set_functional_address.     The */
/* multicast address is the final 4 bytes of a 6  byte  node  address.  The */
/* first  2  bytes  are  determined  by  whether it is a group address or a */
/* functional address.                                                      */
/*                                                                          */

union UNION_MULTI_ADDRESS
    {
    DWORD       all;
    BYTE        byte[4];
    };


/****************************************************************************/
/*                                                                          */
/* Type : LONG_ADDRESS                                                      */
/*                                                                          */
/* A LONG_ADDRESS is a 64 bit address. Some architectures (e.g. Alpha) use  */
/* 64 bit physical addresses.                                               */
/*                                                                          */

union STRUCT_LONG_ADDRESS
    {
    BYTE  bytes[8];
    WORD  words[4];
    DWORD dwords[2];
    };

typedef union STRUCT_LONG_ADDRESS LONG_ADDRESS;


/****************************************************************************/
/*                                                                          */
/* Structure type : TR_OPEN_DATA                                            */
/*                                                                          */
/* The TR_OPEN_DATA structure is used to pass  to  the  Open SRB and to the */
/* driver_start_adapter  functions  all  the  addressing details that could */
/* usefully set. This  is  especially  useful  for  restoring the card to a */
/* prior state after a reset.                                               */
/*                                                                          */

typedef struct STRUCT_TR_OPEN_DATA
    {
    WORD                                open_options;
    NODE_ADDRESS                        opening_node_address;
    ULONG                               group_address;
    ULONG                               functional_address;
    };


/****************************************************************************/
/*                                                                          */
/* Structure type : ERROR_LOG                                               */
/*                                                                          */
/* This  is   part   of   the   information   returned   by   a   call   to */
/* driver_get_adapter_status. The error log contains the information from a */
/* READ_ERROR_LOG  SRB  call. All the MAC level error counters are reset to */
/* zero after they are read.                                                */
/*                                                                          */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide        */
/*             by Texas Instruments                                         */
/*             4-112 MAC 000A READ.ERROR.LOG Command                        */
/*                                                                          */

struct STRUCT_ERROR_LOG
    {
    BYTE        line_errors;
    BYTE        reserved_1;
    BYTE        burst_errors;
    BYTE        ari_fci_errors;
    BYTE        reserved_2;
    BYTE        reserved_3;
    BYTE        lost_frame_errors;
    BYTE        congestion_errors;
    BYTE        frame_copied_errors;
    BYTE        reserved_4;
    BYTE        token_errors;
    BYTE        reserved_5;
    BYTE        dma_bus_errors;
    BYTE        dma_parity_errors;
    };


/****************************************************************************/
/*                                                                          */
/* Structure type : STATUS_INFORMATION                                      */
/*                                                                          */
/* The status information returned by a call  to  driver_get_status         */
/* includes  whether the adapter is currently open, the current ring status */
/* and the MAC level error log information.                                 */
/*                                                                          */

struct STRUCT_STATUS_INFORMATION
    {
    WBOOLEAN            adapter_open;
    WORD                ring_status;
    ERROR_LOG           error_log;
    };


/****************************************************************************/
/*                                                                          */
/* Values : STATUS_INFORMATION - WORD ring_status                           */
/*                                                                          */
/* These are the  possible  ring  status  values  returned  by  a  call  to */
/* driver_get_adapter_status.                                               */
/*                                                                          */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide        */
/*             by Texas Instruments                                         */
/*             4-61 4.12.2 RING.STATUS                                      */
/*                                                                          */

#define RING_STATUS_SIGNAL_LOSS         0x8000
#define RING_STATUS_HARD_ERROR          0x4000
#define RING_STATUS_SOFT_ERROR          0x2000
#define RING_STATUS_TRANSMIT_BEACON     0x1000
#define RING_STATUS_LOBE_FAULT          0x0800
#define RING_STATUS_AUTO_REMOVAL        0x0400
#define RING_STATUS_REMOVE_RECEIVED     0x0100
#define RING_STATUS_COUNTER_OVERFLOW    0x0080
#define RING_STATUS_SINGLE_STATION      0x0040
#define RING_STATUS_RING_RECOVERY       0x0020


/****************************************************************************/
/*                                                                          */
/* Values : WORD open_options                                               */
/*                                                                          */
/* The     open_options    parameter    to    driver_prepare_adapter    and */
/* driver_open_adapter has the following bit fields defined.                */
/*                                                                          */
/* WARNING : The FORCE_OPEN option is a special Fastmac  option  that  will */
/* open  an  adapter  onto any ring - even if the adapter and ring speed do */
/* not match! Use it with caution.                                          */
/*                                                                          */
/* REFERENCE : The Madge Fastmac Interface Specification                    */
/*             - SRB Interface : Open Adapter SRB                           */
/*                                                                          */
/* REFERENCE : The TMS 380 Second-Generation Token_Ring User's Guide        */
/*             by Texas Instruments                                         */
/*             4-71 MAC 0003 OPEN command                                   */
/*                                                                          */

#define OPEN_OPT_WRAP_INTERFACE                 0x8000
#define OPEN_OPT_DISABLE_SOFT_ERROR             0x4000
#define OPEN_OPT_DISABLE_HARD_ERROR             0x2000
#define OPEN_OPT_PASS_ADAPTER_MACS              0x1000
#define OPEN_OPT_PASS_ATTENTION_MACS            0x0800
#define OPEN_OPT_FORCE_OPEN                     0x0400      /* Fastmac only */
#define OPEN_OPT_CONTENDER                      0x0100
#define OPEN_OPT_PASS_BEACON_MACS               0x0080
#define OPEN_OPT_EARLY_TOKEN_RELEASE            0x0010
#define OPEN_OPT_COPY_ALL_MACS                  0x0004
#define OPEN_OPT_COPY_ALL_LLCS                  0x0002


/****************************************************************************/
/*                                                                          */
/* Values : WORD adapter_card_bus_type                                      */
/*                                                                          */
/* The  following  adapter  card bus types are defined and can be passed to */
/* driver_start_adapter.  Different  adapter  card  bus  types   apply   to */
/* different adapter cards :                                                */
/*                                                                          */
/* ADAPTER_CARD_ISA_BUS_TYPE    16/4 PC or 16/4 AT                          */
/* ADAPTER_CARD_MC_BUS_TYPE     16/4 MC or 16/4 MC 32                       */
/* ADAPTER_CARD_EISA_BUS_TYPE   16/4 EISA mk1 or mk2                        */
/*                                                                          */

#define ADAPTER_CARD_ATULA_BUS_TYPE                 1
#define ADAPTER_CARD_MC_BUS_TYPE                    2
#define ADAPTER_CARD_EISA_BUS_TYPE                  3
#define ADAPTER_CARD_PCI_BUS_TYPE                   4
#define ADAPTER_CARD_SMART16_BUS_TYPE               5
#define ADAPTER_CARD_PCMCIA_BUS_TYPE                6
#define ADAPTER_CARD_PNP_BUS_TYPE                   7
#define ADAPTER_CARD_TI_PCI_BUS_TYPE                8
#define ADAPTER_CARD_PCI2_BUS_TYPE                  9


/****************************************************************************/
/*                                                                          */
/* Values : WORD transfer_mode, WORD interrupt_number                       */
/*                                                                          */
/* If  POLLING_INTERRUPTS_MODE  is  given  as  the  interrupt   number   to */
/* driver_start_adapter, then polling is assumed to be used.                */
/*                                                                          */
/* NOTE  :  If  using  the DOS example system specific code, then note that */
/* PIO_DATA_TRANSFER_MODE is defined in SYS_IRQ.ASM and  SYS_DMA.ASM        */
/* resepctively.  The  value used here must be, and is, identical.          */
/*                                                                          */

#define PIO_DATA_TRANSFER_MODE          0
#define DMA_DATA_TRANSFER_MODE          1
#define MMIO_DATA_TRANSFER_MODE         2
#define POLLING_INTERRUPTS_MODE         0


/****************************************************************************/
/*                                                                          */
/* Values : Returned from driver_transmit_frame (or some such)              */
/*                                                                          */
/* The value returned by driver_transmit_frame  indicates  how far the code */
/* got with transmitting  the  frame.  FAIL  and  SUCCEED are obvious, WAIT */
/* means  that  the caller should not assume the frame has been transmitted */
/* until some later indication.                                             */
/*                                                                          */

#define DRIVER_TRANSMIT_FAIL 0
#define DRIVER_TRANSMIT_WAIT 1
#define DRIVER_TRANSMIT_SUCCEED 2


/****************************************************************************/
/*                                                                          */
/* Values : Returned from user_receive_frame                                */
/*                                                                          */
/* The value returned by a call to the user_receive_frame routine indicates */
/* whether  the  user wishes to keep the frame in the Fastmac buffer or has */
/* dealt with it (decided it can be thrown away or copied it elsewhere). In */
/* the latter case the frame  can  be  removed  from  the  Fastmac  receive */
/* buffer.                                                                  */
/*                                                                          */

#define DO_NOT_KEEP_FRAME       0
#define KEEP_FRAME              1


/****************************************************************************/
/*                                                                          */
/* Type : card_t                                                            */
/*                                                                          */
/* To support large model compilation,   certain type casts have to be made */
/* to evade compilation errors. The card_t type is used to convert pointers */
/* to  structures  on  the adapter card into unsigned integers so that they */
/* can be truncated to 16 bits without warnings.                            */
/*                                                                          */
/*                                                                          */

typedef DWORD card_t;


/****************************************************************************/
/*                                                                          */
/* The following structures do not need to be byte packed.                  */
/*                                                                          */

#pragma pack()


/****************************************************************************/
/*                                                                          */
/* Values : PROBE_FAILURE                                                   */
/*                                                                          */
/* This value is returned by the driver_probe_adapter function if an error  */
/* occurs.                                                                  */
/*                                                                          */

#define PROBE_FAILURE           0xffff


/****************************************************************************/
/*                                                                          */
/* Values : FTK_UNDEFINED                                                   */
/*                                                                          */
/* This value means that a value is not defined or not used.                */
/*                                                                          */

#define FTK_UNDEFINED           0xeeff


/****************************************************************************/
/*                                                                          */
/* Structure type : PROBE                                                   */
/*                                                                          */
/* The probe structure can be filled in with card details by a call to      */
/* driver_probe_adapter. This is the way the user of the FTK should obtain  */
/* hardware resource information (DMA channel, IRQ number etc) about an     */
/* adapter before calling driver_prepare_adapter and driver_start_adapter.  */
/*                                                                          */

struct STRUCT_PROBE
{
    WORD                   socket;
    UINT                   adapter_card_bus_type;
    UINT                   adapter_card_type;
    UINT                   adapter_card_revision;
    UINT                   adapter_ram_size; 
    WORD                   io_location;
    WORD                   interrupt_number;
    WORD                   dma_channel; 
    UINT                   transfer_mode;
    DWORD                  mmio_base_address;
    DWORD                  pci_handle;
}; 


/****************************************************************************/
/*                                                                          */
/* Types : PREPARE_ARGS                                                     */
/*                                                                          */
/* The driver_prepare_adapter function takes a collection of arguments. An  */
/* instance of this structure is used to pass the arguments.                */ 
/*                                                                          */

typedef struct STRUCT_PREPARE_ARGS
{
    /* User's private information, not interpreted by the FTK. */

    void           * user_information;
                        
#ifdef FMPLUS

    /* Number of FastMAC Plus receive and transmit slots. */

    WORD             number_of_rx_slots;
    WORD             number_of_tx_slots;

#else

    /* Size of the FastMAC receive and transmit buffers. */

    WORD             receive_buffer_byte_size;
    WORD             transmit_buffer_byte_size;

#endif

    /* Requested maximum frame size. */

    WORD             max_frame_size;

}; 


/****************************************************************************/
/*                                                                          */
/* Types : START_ARGS                                                       */
/*                                                                          */
/* The driver_start_adapter function takes a collection of arguments. An    */
/* instance of this structure is used to pass the arguments. Note that some */ 
/* of the structure fields are filled in on return from                     */
/* driver_start_adapter.                                                    */
/*                                                                          */

typedef struct STRUCT_START_ARGS
{
    /* Adapter family. */

    UINT             adapter_card_bus_type;

    /* Hardware resource details. */

#ifdef PCMCIA_POINT_ENABLE
    UINT             socket;
#endif
    WORD             io_location;
    WORD             dma_channel;
    UINT             transfer_mode; 
    WORD             interrupt_number;

    /* Override DMA/IRQ values on soft programmable adapters? */

    WBOOLEAN         set_dma_channel;
    WBOOLEAN         set_interrupt_number;

    /* Force ring speed to this if possible. 4, 16 or 0 for default. */

    UINT             set_ring_speed;

    /* Base Address for MMIO */

    DWORD            mmio_base_address;

    /*
     * Used for the Ti PCI ASIC which in hwi_install needs to access PCI
     * Config space.
     */

    DWORD            pci_handle;

    /* Actual maximum frame size. Set on return. */

    WORD             max_frame_size;

    /* Auto open the adapter? */

    WBOOLEAN         auto_open_option;

    /* Open options and addresses for auto open mode. If 
       opening_node_address == 000000000000 the the BIA address 
       is used. */

    WORD             open_options;

    NODE_ADDRESS     opening_node_address;
    ULONG            opening_group_address;
    ULONG            opening_functional_address;

    /* Pointer to the adapter download image. */

    DOWNLOAD_IMAGE * code;

    /* The open status of the adapter on return. */

    UINT             open_status;

#ifdef FMPLUS

    /* Size of the RX/TX buffers on the adapter. */

    WORD             rx_tx_buffer_size;

#endif

};


/*                                                                          */
/*                                                                          */
/************** End of FTK_USER.H file **************************************/
/*                                                                          */
/*                                                                          */