diff options
Diffstat (limited to 'private/ntos/ndis/lt200/ltsft.h')
-rw-r--r-- | private/ntos/ndis/lt200/ltsft.h | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/private/ntos/ndis/lt200/ltsft.h b/private/ntos/ndis/lt200/ltsft.h new file mode 100644 index 000000000..9d2b0081b --- /dev/null +++ b/private/ntos/ndis/lt200/ltsft.h @@ -0,0 +1,223 @@ +/*++ + +Copyright (c) 1992 Microsoft Corporation + +Module Name: + + ltsft.h + +Abstract: + + This module contains the main adapter/binding definitions and all + other main definitions. + +Author: + + Stephen Hou (stephh@microsoft.com) + Nikhil Kamkolkar (nikhilk@microsoft.com) + +Revision History: + 19 Jun 1992 Initial Version (dch@pacvax.pacersoft.com) + +Notes: Tab stop: 4 +--*/ + +#ifndef _LTSFT_ +#define _LTSFT_ + + +// We use STATIC to define procedures that will be static in the +// final build but which we now make extern to allow them to be +// debugged. +#if DBG +#define STATIC +#else +#define STATIC static +#endif + + +#define NDIS_MAJOR_VERSION 3 +#define NDIS_MINOR_VERSION 0 + +#define LT_MAJOR_VERSION 2 +#define LT_MINOR_VERSION 0 + +#define LT_MAX_INDICATE_SIZE 603 +#define LT_MAX_PACKET_SIZE 603 +#define LT_MIN_PACKET_SIZE 3 +#define LT_MIN_INDICATE_SIZE 13 + +// Offset into packet from where the datagram begins. +#define LT_LINK_HEADER_LENGTH 3 +#define LT_DGRAM_OFFSET (LT_LINK_HEADER_LENGTH) + +// Localtalk separates node id's into two classes, server/client. We attempt +// to get ours in the Server Class. +#define LT_MAX_CLIENT_NODE_ID 127 +#define LT_MIN_SERVER_NODE_ID 128 +#define LT_BROADCAST_NODE_ID 0xFF + +// Indexes in the GeneralMandatory array. +#define GM_TRANSMIT_GOOD 0x00 +#define GM_RECEIVE_GOOD 0x01 +#define GM_TRANSMIT_BAD 0x02 +#define GM_RECEIVE_BAD 0x03 +#define GM_RECEIVE_NO_BUFFER 0x04 +#define GM_ARRAY_SIZE 0x05 + +// Indexes in the GeneralOptional array. There are +// two sections, the ones up to COUNT_ARRAY_SIZE +// have entries for number (4 bytes) and number of +// bytes (8 bytes), the rest are a normal array. +#define GO_DIRECTED_TRANSMITS 0x00 +#define GO_MULTICAST_TRANSMITS 0x01 +#define GO_BROADCAST_TRANSMITS 0x02 +#define GO_DIRECTED_RECEIVES 0x03 +#define GO_MULTICAST_RECEIVES 0x04 +#define GO_BROADCAST_RECEIVES 0x05 +#define GO_COUNT_ARRAY_SIZE 0x06 + +#define GO_ARRAY_START 0x0C +#define GO_RECEIVE_CRC 0x0C +#define GO_TRANSMIT_QUEUE_LENGTH 0x0D +#define GO_ARRAY_SIZE 0x0E + +// Indexes in the MediaMandatory array. +#define MM_IN_BROADCASTS 0x00 +#define MM_IN_LENGTH_ERRORS 0x01 +#define MM_ARRAY_SIZE 0x02 + +// Indexes in the MediaOptional array. +#define MO_NO_HANDLERS 0x00 +#define MO_TRANSMIT_MAX_COLLISIONS 0x01 +#define MO_TRANSMIT_DEFERS 0x02 +#define MO_NO_DATA_ERRORS 0x03 +#define MO_RANDOM_CTS_ERRORS 0x04 +#define MO_FCS_ERRORS 0x05 +#define MO_ARRAY_SIZE 0x06 + +// Adapter States/Conditions. +#define ADAPTER_OPEN 0x00000001 +#define ADAPTER_CLOSING 0x00000002 +#define ADAPTER_NODE_ID_VALID 0x00000004 +#define ADAPTER_XMIT_IN_PROGRESS 0x00000008 +#define ADAPTER_REQ_IN_PROGRESS 0x00000010 +#define ADAPTER_RESET_IN_PROGRESS 0x00000020 +#define ADAPTER_QUEUE_RECV_COMPLETION 0x00000040 +#define ADAPTER_QUEUED_RECV_COMPLETION 0x00000080 +#define ADAPTER_TIMER_QUEUED 0x00000100 + + +typedef struct _LT_ADAPTER { + +#if DBG + ULONG Signature; +#endif + + ULONG Flags; + ULONG RefCount; + NDIS_SPIN_LOCK Lock; + + // Node ID. Localtalk acquires a node id dynamically. + UCHAR NodeId; + UCHAR PramNodeId; + + // List of Bindings + UINT OpenCount; + LIST_ENTRY OpenBindings; + + // We have a Polling timer which will handle all the work that this + // driver needs to do. + NDIS_TIMER PollingTimer; + + // Hardware settings on the card. From the configuration manager + ULONG MappedIoBaseAddr; + NDIS_INTERFACE_TYPE BusType; + + // Handles for our adapter and the MAC driver itself. + NDIS_HANDLE NdisMacHandle; + NDIS_HANDLE NdisAdapterHandle; + + // Reset processing. + struct _LT_OPEN * ResetOwner; + + // Queues + LIST_ENTRY LoopBack; + LIST_ENTRY Transmit; + LIST_ENTRY Receive; + LIST_ENTRY Request; + + // Current loopback packet + PNDIS_PACKET CurrentLoopbackPacket; + + // Statistics + ULONG GlobalPacketFilter; + ULONG GlobalLookAheadSize; + LT_STATUS_RESPONSE LastCardStatusResponse; + ULONG GeneralMandatory[GM_ARRAY_SIZE]; + LARGE_INTEGER GeneralOptionalByteCount[GO_COUNT_ARRAY_SIZE]; + ULONG GeneralOptionalFrameCount[GO_COUNT_ARRAY_SIZE]; + ULONG GeneralOptional[GO_ARRAY_SIZE - GO_ARRAY_START]; + ULONG MediaMandatory[MM_ARRAY_SIZE]; + ULONG MediaOptional[MO_ARRAY_SIZE]; + +} LT_ADAPTER, *PLT_ADAPTER; + + + +// Binding states +#define BINDING_OPEN 0x00000001 +#define BINDING_CLOSING 0x00000002 +#define BINDING_DO_RECV_COMPLETION 0x00000004 + +typedef struct _LT_OPEN { + +#if DBG + ULONG Signature; +#endif + + ULONG Flags; + ULONG RefCount; + + LIST_ENTRY Linkage; + PLT_ADAPTER LtAdapter; + + NDIS_HANDLE NdisBindingContext; + UINT CurrentLookAheadSize; + UINT CurrentPacketFilter; + +} LT_OPEN, *PLT_OPEN; + + +#define LT_DIRECTED 1 +#define LT_BROADCAST 2 +#define LT_LOOPBACK 3 + + +// This record type is inserted into the MacReserved portion +// of the packet header when the packet is going through the +// staged allocation of buffer space prior to the actual send. +typedef struct _LT_PACKET_RESERVED { + + // This must be the first entry so we can use CONTAINING_RECORD + // to get back to the packet. + LIST_ENTRY Linkage; + NDIS_HANDLE MacBindingHandle; + +} LT_PACKET_RESERVED, *PLT_PACKET_RESERVED; + + +// This structure is used in the MacReserved field of +// an NDIS_REQUEST_BLOCK, passed in during multicast +// address/packet filter operations. +typedef struct _LT_REQUEST_RESERVED { + LIST_ENTRY RequestList; + PLT_OPEN * OpenBlock; +} LT_REQUEST_RESERVED, *PLT_REQUEST_RESERVED; + +#ifdef LTSFT_LOCALS + +#endif // LTSFT_LOCALS + + +#endif // _LTSFT_ |