summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/madge/driver/head_def/ftk_user.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/ndis/madge/driver/head_def/ftk_user.h666
1 files changed, 666 insertions, 0 deletions
diff --git a/private/ntos/ndis/madge/driver/head_def/ftk_user.h b/private/ntos/ndis/madge/driver/head_def/ftk_user.h
new file mode 100644
index 000000000..09f85c8b5
--- /dev/null
+++ b/private/ntos/ndis/madge/driver/head_def/ftk_user.h
@@ -0,0 +1,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 **************************************/
+/* */
+/* */