summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/madge/driver/head_def/ftk_fm.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--private/ntos/ndis/madge/driver/head_def/ftk_fm.h351
1 files changed, 351 insertions, 0 deletions
diff --git a/private/ntos/ndis/madge/driver/head_def/ftk_fm.h b/private/ntos/ndis/madge/driver/head_def/ftk_fm.h
new file mode 100644
index 000000000..0d99596df
--- /dev/null
+++ b/private/ntos/ndis/madge/driver/head_def/ftk_fm.h
@@ -0,0 +1,351 @@
+/****************************************************************************/
+/****************************************************************************/
+/* */
+/* THE FASTMAC DEFINITIONS */
+/* ======================= */
+/* */
+/* FTK_FM.H : Part of the FASTMAC TOOL-KIT (FTK) */
+/* */
+/* Copyright (c) Madge Networks Ltd. 1991-1994 */
+/* CONFIDENTIAL */
+/* */
+/* */
+/****************************************************************************/
+/* */
+/* This header file contains the structures, constants etc., that are */
+/* relevant to Fastmac and its use by the FTK and are not included */
+/* elsewhere. This includes the Fastmac status block structure and the */
+/* Fastmac use of the EAGLE SIFINT register. */
+/* */
+/* IMPORTANT : All 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. */
+/* */
+/****************************************************************************/
+
+#pragma pack(1)
+
+/****************************************************************************/
+/* */
+/* VERSION_NUMBER of FTK to which this FTK_FM.H belongs : */
+/* */
+
+#define FTK_VERSION_NUMBER_FTK_FM_H 221
+
+
+/****************************************************************************/
+/* */
+/* TYPEDEFs for all structures defined within this header file : */
+/* */
+
+typedef struct STRUCT_FASTMAC_STATUS_BLOCK FASTMAC_STATUS_BLOCK;
+#ifdef FMPLUS
+typedef struct STRUCT_RX_SLOT RX_SLOT;
+typedef struct STRUCT_TX_SLOT TX_SLOT;
+#endif
+
+/****************************************************************************/
+/* */
+/* Structure type : FASTMAC_STATUS_BLOCK */
+/* */
+/* Fastmac maintains a status block that includes the pointers to the */
+/* receive and transmit buffers, as well as the ring status and a boolean */
+/* flag to say if the adapter is open. */
+/* */
+/* REFERENCE : The Madge Fastmac Interface Specification */
+/* - Status Block */
+/* */
+
+struct STRUCT_FASTMAC_STATUS_BLOCK
+ {
+ WORD reserved_1;
+ WORD signature;
+ WBOOLEAN adapter_open; /* TRUE when open */
+ WORD open_error; /* open error code */
+ WORD tx_adap_ptr; /* transmit buffer pointers */
+ WORD tx_host_ptr;
+ WORD tx_wrap_ptr;
+ WORD rx_adap_ptr; /* receive buffer pointers */
+ WORD rx_wrap_ptr;
+ WORD rx_host_ptr;
+ NODE_ADDRESS permanent_address; /* BIA PROM node address */
+ NODE_ADDRESS open_address; /* opening node address */
+ WORD tx_dma_count;
+ WORD timestamp_ptr;
+ WORD rx_internal_buffer_size;
+ WORD rx_total_buffers_avail;
+ WORD rx_buffers_in_use;
+ WORD rx_frames_lost;
+ WORD watchdog_timer;
+ WORD ring_status; /* current ring status */
+ WORD tx_discarded;
+#ifdef FMPLUS
+ WORD rx_slot_start; /* where to find rx slots */
+ WORD tx_slot_start; /* where to find tx slots */
+#endif
+ WORD reserved_2[1];
+ WORD rxdesc_host_ptr;
+ DWORD rxdesc_queue[1];
+ };
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac buffer sizes */
+/* */
+/* The Fastmac receive and transmit buffers have minimum and maximum */
+/* allowable sizes. The minimum size allows the buffer to contain a single */
+/* 1K frame. */
+/* */
+
+#define FASTMAC_MAXIMUM_BUFFER_SIZE 0xFF00
+#define FASTMAC_MINIMUM_BUFFER_SIZE 0x0404
+
+
+/****************************************************************************/
+/* */
+/* Values : FASTMAC SIF INTERRUPT (SIFCMD-SIFSTS) REGISTER BITS */
+/* */
+/* When Fastmac generates an interrupt (via the SIF interrupt register), */
+/* the value in the register will indicate the reason for the interrupt. */
+/* Also, when the user interrupts Fastmac (again via the SIF interrupt */
+/* register), the value in the register indicates the reason. */
+/* */
+/* REFERENCE : The Madge Smart SRB Interface */
+/* - The Interrupt Register */
+/* */
+
+#define DRIVER_SIFINT_IRQ_FASTMAC 0x8000 /* interrupt Fastmac */
+
+#define DRIVER_SIFINT_FASTMAC_IRQ_MASK 0x00FF
+
+#define DRIVER_SIFINT_SSB_FREE 0x4000
+#define DRIVER_SIFINT_SRB_COMMAND 0x2000
+#define DRIVER_SIFINT_ARB_FREE 0x1000
+
+#define DRIVER_SIFINT_ACK_SSB_RESPONSE 0x0400
+#define DRIVER_SIFINT_ACK_SRB_FREE 0x0200
+#define DRIVER_SIFINT_ACK_ARB_COMMAND 0x0100
+
+
+#define FASTMAC_SIFINT_IRQ_DRIVER 0x0080 /* interrupt driver */
+
+#define FASTMAC_SIFINT_ADAPTER_CHECK 0x0008
+#define FASTMAC_SIFINT_SSB_RESPONSE 0x0004
+#define FASTMAC_SIFINT_SRB_FREE 0x0002
+#define FASTMAC_SIFINT_ARB_COMMAND 0x0001
+
+#define FASTMAC_SIFINT_RECEIVE 0x0000
+
+
+/****************************************************************************/
+/* */
+/* Values : FASTMAC DIO LOCATIONS */
+/* */
+/* There are certain fixed locations in DIO space containing pointers that */
+/* are accessed by the driver to determine DIO locations where the driver */
+/* must read or store Fastmac information. These pointers identify the */
+/* location of such things as the SRB and status block (STB). The pointers */
+/* are at DIO locations 0x00011000 - 0x00011008. The values defined below */
+/* give the location of the pointers within the EAGLE DATA page 0x00010000. */
+/* */
+/* REFERENCE : The Madge Smart SRB Interface */
+/* - Shared RAM Format */
+/* */
+
+#define DIO_LOCATION_SSB_POINTER 0x1000
+#define DIO_LOCATION_SRB_POINTER 0x1002
+#define DIO_LOCATION_ARB_POINTER 0x1004
+#define DIO_LOCATION_STB_POINTER 0x1006 /* status block */
+#define DIO_LOCATION_IPB_POINTER 0x1008 /* init block */
+#define DIO_LOCATION_DMA_CONTROL 0x100A
+#define DIO_LOCATION_DMA_POINTER 0x100C
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac product id string */
+/* */
+/* The product id string for Fastmac that is used by certain management MAC */
+/* frames. If the Fastmac auto-open feature is used then the product id is */
+/* always "THE MADGE FASTMAC". If an OPEN_ADAPTER SRB then the FTK product */
+/* id is "FTK MADGE FASTMAC". */
+/* */
+/* REFERENCE : The Madge Fastmac Interface Specification */
+/* - SRB Interface : Open Adapter SRB */
+/* */
+
+#define SIZEOF_PRODUCT_ID 18
+#ifdef FMPLUS
+#define FASTMAC_PRODUCT_ID "FTK MADGE FM PLUS"
+#else
+#define FASTMAC_PRODUCT_ID "FTK MADGE FASTMAC"
+#endif
+
+/****************************************************************************/
+/* */
+/* Global variable : ftk_product_inst_id */
+/* */
+/* Value of the product ID strings set when an open adapter SRB */
+/* is generated. This is set to FASTMAC_PRODUCT_ID in DRV_SRB.C. */
+/* */
+
+extern char ftk_product_inst_id[SIZEOF_PRODUCT_ID];
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac buffer format */
+/* */
+/* The format in which frames are kept in the Fastmac buffers includes a */
+/* header to the frame containing the length of the entire header and */
+/* frame, and a timestamp. */
+/* */
+/* REFERENCE : The Madge Fastmac Interface Specification */
+/* - The Fastmac Algorithm */
+/* */
+
+
+#define FASTMAC_BUFFER_HEADER_SIZE 4
+
+#define FASTMAC_HEADER_LENGTH_OFFSET 0
+#define FASTMAC_HEADER_STAMP_OFFSET 2
+
+
+#ifdef FMPLUS
+/****************************************************************************/
+/* */
+/* Structure type : RX_SLOT */
+/* */
+/* Fastmac Plus maintains a slot structure on the card for each receive */
+/* buffer on the host. These include the address of the buffer, the length */
+/* of any frame in it, and the receive status of any frame there. When a */
+/* frame is received, Fastmac Plus updates the length and status fields. */
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Receive Details: Slot Structure */
+/* */
+
+struct STRUCT_RX_SLOT
+ {
+ WORD buffer_len;
+ WORD reserved;
+ WORD buffer_hiw;
+ WORD buffer_low;
+ WORD rx_status;
+ WORD next_slot;
+ };
+
+
+/****************************************************************************/
+/* */
+/* Structure type : TX_SLOT */
+/* */
+/* Fastmac Plus maintains a number of slot structures on the card, to allow */
+/* transmit pipelining. Each of these structures includes two fields for */
+/* host buffers and lengths - one is for a small buffer, less than the size */
+/* of a buffer on the adapter card, and the other is for a large buffer, up */
+/* to the maximum frame size. There is also a status field so that the host */
+/* transmit code can monitor the progress of the transmit. */
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Transmit Details: Slot Structure */
+/* */
+
+struct STRUCT_TX_SLOT
+ {
+ WORD tx_status;
+ WORD small_buffer_len;
+ WORD large_buffer_len;
+ WORD reserved[2];
+ WORD small_buffer_hiw;
+ WORD small_buffer_low;
+ WORD next_slot;
+ WORD large_buffer_hiw;
+ WORD large_buffer_low;
+ };
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac Plus min/max slot numbers */
+/* */
+/* Fastmac Plus places certain restrictions on the numbers of transmit and */
+/* receive slots that can be allocated. These constants specify the values. */
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Initialisation : TMS Load Parms */
+/* */
+
+#define FMPLUS_MAX_RX_SLOTS 32
+#define FMPLUS_MIN_RX_SLOTS 2
+
+#define FMPLUS_MAX_TX_SLOTS 32
+#define FMPLUS_MIN_TX_SLOTS 2
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac Plus Receive Status Mask */
+/* */
+/* By bitwise AND-ing the mask here with the receive status read from the */
+/* receive slot, code can determine whether the received frame is good or */
+/* not. If the result is zero, the frame is good, otherwise it is a junk */
+/* frame. */
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Receive Status Processing */
+/* */
+
+#define GOOD_RX_FRAME_MASK ((WORD) 0x5E00)
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac Plus Transmit Status Mask And Values */
+/* */
+/* By bitwise AND-ing the good frame mask with the transmit status read */
+/* from the receive slot, code can determine whether the frame was */
+/* transmitted properly or not. If more detail is required, the receive */
+/* status mask can be used to check various conditions in the transmitted */
+/* frame when it returned to the adapter. */
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Transmit Status Processing */
+/* */
+
+#define GOOD_TX_FRAME_MASK ((WORD) 0x5F00)
+#define GOOD_TX_FRAME_VALUE ((WORD) 0x0100)
+
+#define TX_RECEIVE_STATUS_MASK ((WORD) 0x0700)
+#define TX_RECEIVE_LOST_FRAME ((WORD) 0x0300)
+#define TX_RECEIVE_CORRUPT_TOKEN ((WORD) 0x0500)
+#define TX_RECEIVE_IMPLICIT_ABORT ((WORD) 0x0700)
+
+
+/****************************************************************************/
+/* */
+/* Values : Fastmac Plus Zero Length Small Buffer value */
+/* */
+/* When transmitting a frame that exists only in a large buffer, a special */
+/* non-zero value must be written to the small buffer length field of the */
+/* receive slot (this is because Fastmac Plus uses zero there to indicate */
+/* that a transmit has completed, and waits for it to change before trying */
+/* to transmit any more from that slot). This special value is defined here.*/
+/* */
+/* REFERENCE : The Madge Fastmac Plus Programming Specification */
+/* - Transmit Details */
+/* */
+
+#define FMPLUS_SBUFF_ZERO_LENGTH ((WORD)(0x8000))
+
+#endif
+
+
+#pragma pack()
+
+/* */
+/* */
+/************** End of FTK_FM.H file ****************************************/
+/* */
+/* */