summaryrefslogtreecommitdiffstats
path: root/private/ntos/ndis/lsl/lsl.h
diff options
context:
space:
mode:
Diffstat (limited to 'private/ntos/ndis/lsl/lsl.h')
-rw-r--r--private/ntos/ndis/lsl/lsl.h526
1 files changed, 526 insertions, 0 deletions
diff --git a/private/ntos/ndis/lsl/lsl.h b/private/ntos/ndis/lsl/lsl.h
new file mode 100644
index 000000000..6a4528b44
--- /dev/null
+++ b/private/ntos/ndis/lsl/lsl.h
@@ -0,0 +1,526 @@
+/*++
+
+Copyright (c) 1990 Microsoft Corporation
+
+Module Name:
+
+ lsl.c
+
+Abstract:
+
+ This file contains all the structures for the LSL driver.
+
+Author:
+
+ Sean Selitrennikoff (SeanSe) 3-8-93
+
+Environment:
+
+ Kernel Mode.
+
+Revision History:
+
+--*/
+
+typedef UCHAR MEON, *MEON_STRING;
+typedef UCHAR UINT8, *PUINT8;
+typedef USHORT UINT16, *PUINT16;
+typedef UINT UINT32, *PUINT32;
+
+
+typedef struct _UINT64_ {
+
+ UINT32 Low_UINT32;
+ UINT32 High_UINT32;
+
+} UINT64, *PUINT64;
+
+
+//
+// Definitions for Statistics Table Entries
+//
+
+typedef struct _StatTableEntry_ {
+
+ UINT32 StatUseFlag; // -1 == not in use, 0 == *StatCounter is PUINT32, 1 == PUINT64
+
+ PVOID StatCounter;
+
+ MEON_STRING *StatString;
+
+} StatTableEntry, *PStatTableEntry;
+
+
+
+//
+// Definitions for API Function Array passing, i.e. Information Block
+//
+
+typedef struct _INFO_BLOCK_ {
+
+ UINT32 NumberOfAPIs;
+
+ VOID (*SupportAPIArray[])();
+
+} INFO_BLOCK, *PINFO_BLOCK;
+
+
+
+
+//
+// Definitions for LSL
+//
+
+typedef struct _LogBrdStatTableEntry_ {
+
+ UINT32 LogBrd_TransmittedPackets;
+
+ UINT32 LogBrd_ReceivedPackets;
+
+ UINT32 LogBrd_UnclaimedPackets;
+
+ UINT32 LogBrd_Reserved;
+
+} LogBrdStatTableEntry, *PLogBrdStatTableEntry;
+
+
+typedef struct _LSL_ConfigTable_ {
+
+ UINT16 LConfigTableMajorVer;
+ UINT16 LConfigTableMinorVer;
+
+ MEON_STRING *LSLLongName;
+ MEON_STRING *LSLShortName;
+
+ UINT16 LSLMajorVer;
+ UINT16 LSLMinorVer;
+
+ UINT32 LMaxNumberOfBoards;
+ UINT32 LMaxNumberOfStacks;
+
+ UINT32 LConfigTableReserved0;
+ UINT32 LConfigTableReserved1;
+ UINT32 LConfigTableReserved2;
+
+} LSL_ConfigTable, *PLSL_ConfigTable;
+
+
+typedef struct _LSL_StatsTable_ {
+
+ UINT16 LStatTableMajorVer;
+ UINT16 LStatTableMinorVer;
+
+ UINT32 LNumGenericCounters;
+ StatTableEntry (*LGenericCountsPtr)[];
+
+ UINT32 LNumLogicalBoards;
+ LogBrdStatTableEntry (*LogicalBoardStatTablePtr)[];
+
+ UINT32 LNumCustomCounters;
+ StatTableEntry (*LCustomCountersPtr)[];
+
+} LSL_StatsTable, *PLSL_StatsTable;
+
+
+
+
+//
+// Definitions for LookAhead and Event Control Blocks (ECB)
+//
+
+typedef struct _LOOKAHEAD_ {
+
+ //
+ // Media specific header
+ //
+ PUINT8 LkAhd_MediaHeaderPtr;
+
+ //
+ // Rest of lookahead
+ //
+ PUINT8 LkAhd_DataLookAheadPtr;
+
+ UINT32 LkAhd_DataLookAheadLen;
+ UINT32 LkAhd_FrameDataSize;
+ UINT32 LkAhd_BoardNumber;
+ UINT8 LkAhd_ProtocolID[6];
+
+ UINT16 LkAhd_PadAlignBytes1;
+
+ UINT8 LkAhd_ImmediateAddress[6];
+
+ UINT16 LkAhd_PadAlignBytes2;
+
+ UINT32 LkAhd_FrameDataStartCopyOffset;
+ UINT32 LkAhd_FrameDataBytesWanted;
+
+ UINT32 LkAhd_PktAttr;
+ UINT32 LkAhd_DestType;
+
+ PVOID LkAhd_Reserved0;
+ PVOID LkAhd_Reserved1;
+
+} LOOKAHEAD, *PLOOKAHEAD;
+
+
+typedef struct _FRAGMENTSTRUCT_ {
+
+ VOID *FragmentAddress;
+ UINT32 FragmentLength;
+
+} FRAGMENTSTRUCT, *PFRAGMENTSTRUCT;
+
+
+typedef struct _ECB_ {
+
+ struct _ECB_ *ECB_NextLink;
+ struct _ECB_ *ECB_PreviousLink;
+
+ UINT16 ECB_Status;
+
+ VOID (*ECB_ESR)(struct _ECB_ *);
+
+ UINT16 ECB_StackID;
+
+ UINT8 ECB_ProtocolID[6];
+
+ UINT32 ECB_BoardNumber;
+
+ UINT8 ECB_ImmediateAddress[6];
+
+ union {
+ UINT8 DWs_i8val[8];
+ UINT16 DWs_i16val[4];
+ UINT32 DWs_i32val[2];
+ UINT64 DWs_i64val;
+ PVOID DWs_pval;
+ } ECB_DriverWorkspace;
+
+ union {
+ UINT8 PWs_i8val[8];
+ UINT16 PWs_i16val[4];
+ UINT32 PWs_i32val[2];
+ UINT64 PWs_i64val;
+ PVOID PWs_pval[2];
+ } ECB_ProtocolWorkspace;
+
+ UINT32 ECB_DataLength;
+
+ UINT32 ECB_FragmentCount;
+
+ FRAGMENTSTRUCT ECB_Fragment[1];
+
+} ECB, *PECB;
+
+
+typedef struct _AESECB_ {
+
+ struct _AESECB_ *AES_Link;
+
+ UINT32 AES_MSecondValue;
+ UINT16 AES_Status;
+
+ VOID (*AES_ESR)(struct _ECB_ *);
+
+ PVOID AES_Context;
+
+} AESECB, *PAESECB;
+
+
+
+//
+// Definitions for Protocol Stack Configuration And Statistics Tables
+//
+
+
+typedef struct _PS_ConfigTable_ {
+
+ UINT16 PConfigTableMajorVer;
+ UINT16 PConfigTableMinorVer;
+
+ MEON_STRING *PProtocolLongName;
+ MEON_STRING *PProtocolShortName;
+
+ UINT16 PProtocolMajorVer;
+ UINT16 PProtocolMinorVer;
+
+} PS_ConfigTable, *PPS_ConfigTable;
+
+
+typedef struct _PS_StatsTable_ {
+
+ UINT16 PStatTableMajorVer;
+ UINT16 PStatTableMinorVer;
+
+ UINT32 PNumGenericCounters;
+ StatTableEntry (*PGenericCountsPtr)[];
+
+ UINT32 PNumCustomCounters;
+ StatTableEntry (*PCustomCountersPtr)[];
+
+} PS_StatsTable, *PPS_StatsTable;
+
+
+
+
+//
+// Definitions for MLID Configuration and Statistics Tables and Misc structures
+//
+
+typedef struct _MLID_ConfigTable_ {
+
+ UINT8 MLIDCFG_Signature[26];
+ UINT8 MLIDCFG_MajorVersion;
+ UINT8 MLIDCFG_MinorVersion;
+ UINT8 MLIDCFG_NodeAddress[6];
+ UINT16 MLIDCFG_ModeFlags;
+ UINT16 MLIDCFG_BoardNumber;
+ UINT16 MLIDCFG_BoardInstance;
+ UINT32 MLIDCFG_MaxFrameSize;
+ UINT32 MLIDCFG_BestDataSize;
+ UINT32 MLIDCFG_WorstDataSize;
+ MEON_STRING *MLIDCFG_CardName;
+ MEON_STRING *MLIDCFG_ShortName;
+ MEON_STRING *MLIDCFG_FrameTypeString;
+ UINT16 MLIDCFG_Reserved0;
+ UINT16 MLIDCFG_FrameID;
+ UINT16 MLIDCFG_TransportTime;
+ PVOID MLIDCFG_SourceRouting;
+ UINT16 MLIDCFG_LineSpeed;
+ UINT16 MLIDCFG_LookAheadSize;
+ UINT8 MLIDCFG_Reserved1[8];
+ UINT8 MLIDCFG_DriverMajorVer;
+ UINT8 MLIDCFG_DriverMinorVer;
+ UINT16 MLIDCFG_Flags;
+ UINT16 MLIDCFG_SendRetries;
+ PVOID MLIDCFG_DriverLink;
+ UINT16 MLIDCFG_SharingFlags;
+ UINT16 MLIDCFG_Slot;
+ UINT16 MLIDCFG_IOPort0;
+ UINT16 MLIDCFG_IORange0;
+ UINT16 MLIDCFG_IOPort1;
+ UINT16 MLIDCFG_IORange1;
+ UINT32 MLIDCFG_MemoryAddress0;
+ UINT16 MLIDCFG_MemorySize0;
+ UINT32 MLIDCFG_MemoryAddress1;
+ UINT16 MLIDCFG_MemorySize1;
+ UINT8 MLIDCFG_Interrupt0;
+ UINT8 MLIDCFG_Interrupt1;
+ UINT8 MLIDCFG_DMALine0;
+ UINT8 MLIDCFG_DMALine1;
+ PVOID MLIDCFG_ResourceTag;
+ PVOID MLIDCFG_Config;
+ PVOID MLIDCFG_CommandString;
+ UINT8 MLIDCFG_LogicalName[6];
+ UINT32 MLIDCFG_LinearMemory0;
+ UINT32 MLIDCFG_LinearMemory1;
+ UINT16 MLIDCFG_ChannelNumber;
+ UINT16 MLIDCFG_BusTag;
+ UINT8 MLIDCFG_IOReserved[4];
+
+} MLID_ConfigTable, *PMLID_ConfigTable;
+
+
+typedef struct _MLID_StatsTable_ {
+
+ UINT16 MStatTableMajorVer;
+ UINT16 MStatTableMinorVer;
+
+ UINT32 MNumGenericCounters;
+ StatTableEntry (*MGenericCountsPtr)[];
+
+ UINT32 MNumMediaCounters;
+ StatTableEntry (*MMediaCountsPtr)[];
+
+ UINT32 MNumCustomCounters;
+ StatTableEntry (*MCustomCoutnersPtr)[];
+
+} MLID_StatsTable, *PMLID_StatsTable;
+
+
+typedef struct _MLID_Reg_ {
+
+ VOID (*MLIDSendHandler)(PECB);
+
+ PINFO_BLOCK MLIDControlHandler;
+
+} MLID_Reg, *PMLID_Reg;
+
+
+
+//
+// Definitions for Bound Protocol Stacks
+//
+
+
+typedef struct _PS_BoundNode_ {
+
+ MEON_STRING *ProtocolName;
+
+ PECB (*ProtocolReceiveHandler)(PLOOKAHEAD);
+
+ PINFO_BLOCK ProtocolControlHandler;
+
+} PS_BoundNode, *PPS_BoundNode;
+
+
+
+
+//
+// Definitions for PreScan Rx and Default Chained Protocol Stacks
+//
+
+
+typedef struct _PS_ChainedRxNode_ {
+
+ struct _PS_ChainedRxNode_ *StackChainLink;
+
+ UINT32 StackChainBoardNumber;
+
+ UINT32 StackChainPositionRequested;
+
+ PECB (*StackChainHandler)(PLOOKAHEAD);
+
+ PINFO_BLOCK StackChainControl;
+ UINT32 StackChainFilter;
+ PVOID StackChainContext;
+
+} PS_ChainedRxNode, *PPS_ChainedRxNode;
+
+
+//
+// Definitions for PreScan Tx Chained Protocol Stacks
+//
+
+
+typedef struct _PS_ChainedTxNode_ {
+
+ struct _PS_ChainedTxNode_ *StackChainLink;
+
+ UINT32 StackChainBoardNumber;
+
+ UINT32 StackChainPositionRequested;
+
+ UINT32 (*StackChainHandler)(PECB);
+
+ PINFO_BLOCK StackChainControl;
+ UINT32 StackChainFilter;
+ PVOID StackChainContext;
+
+} PS_ChainedTxNode, *PPS_ChainedTxNode;
+
+
+
+//
+// Return value definitions
+//
+
+
+#define SUCCESSFUL 0x00000000
+#define RESPONSE_DELAYED 0x00000001
+
+#define BAD_COMMAND 0xFFFFFF81
+#define BAD_PARAMETER 0xFFFFFF82
+#define DUPLICATE_ENTRY 0xFFFFFF83
+#define FAIL 0xFFFFFF84
+#define ITEM_NOT_PRESENT 0xFFFFFF85
+#define NO_MORE_ITEMS 0xFFFFFF86
+#define NO_SUCH_DRIVER 0xFFFFFF87
+#define NO_SUCH_HANDLER 0xFFFFFF88
+#define OUT_OF_RESOURCES 0xFFFFFF89
+#define RX_OVERFLOW 0xFFFFFF8A
+#define IN_CRITICAL_SECTION 0xFFFFFF8B
+#define TRANSMIT_FAILED 0xFFFFFF8C
+#define PACKET_UNDELIVERABLE 0xFFFFFF8D
+
+#define CANCELED 0xFFFFFFFC
+
+
+
+//
+// Definitions for Protocol Control Operations
+//
+
+#define GetProtocolStackConfiguration_INDEX 0
+#define GetProtocolStackStatistics_INDEX 1
+#define Bind_INDEX 2
+#define MLIDDeRegistered_INDEX 3
+#define UnBind_INDEX 4
+#define PromiscuousStatus_INDEX 5
+
+
+
+typedef UINT32 (*PCO_Bind)(UINT32, MEON_STRING *);
+typedef PPS_ConfigTable (*PCO_GetProtocolStackConfiguration)(VOID);
+typedef PPS_StatsTable (*PCO_GetProtocolStackStatistics)(VOID);
+typedef VOID (*PCO_MLIDDeRegistered)(UINT32);
+typedef UINT32 (*PCO_UnBind)(UINT32, UINT32);
+typedef UINT32 (*PCO_PromiscuousState)(UINT32, UINT32);
+
+
+//
+// Definitions for LSL API Services
+//
+
+#define GetSizeECB_INDEX 0
+#define ReturnECB_INDEX 1
+#define CancelEvent_INDEX 2
+#define ScheduleAESEvent_INDEX 3
+#define CancelAESEvent_INDEX 4
+#define GetIntervalMarker_INDEX 5
+#define RegisterStack_INDEX 6
+#define DeRegisterStack_INDEX 7
+#define LSLReserved0_INDEX 8
+#define LSLReserved1_INDEX 9
+#define LSLReserved2_INDEX 10
+#define GetStackECB_INDEX 11
+#define SendPacket_INDEX 12
+#define FastSendComplete_INDEX 13
+#define SendComplete_INDEX 14
+#define RegisterMLID_INDEX 15
+#define GetStackIDFromName_INDEX 16
+#define GetPIDFromStackIDBoard_INDEX 17
+#define GetMLIDControlEntry_INDEX 18
+#define GetProtocolControlEntry_INDEX 19
+#define GetLSLStatistics_INDEX 20
+#define BindStack_INDEX 21
+#define UnbindStack_INDEX 22
+#define AddProtocolID_INDEX 23
+#define GetBoundBoardInfo_INDEX 24
+#define GetLSLConfiguration_INDEX 25
+#define DeRegisterMLID_INDEX 26
+#define RegisterDefaultChain_INDEX 27
+#define RegisterPreScanRxChain_INDEX 28
+#define RegisterPreScanTxChain_INDEX 29
+#define DeRegisterDefaultChain_INDEX 30
+#define DeRegisterPreScanRxChain_INDEX 31
+#define DeRegisterPreScanTxChain_INDEX 32
+#define GetStartofChain_INDEX 33
+#define ReSubmitDefault_INDEX 34
+#define ReSubmitPreScanRx_INDEX 35
+#define ReSubmitPreScanTx_INDEX 36
+#define HoldEvent_INDEX 37
+#define FastHoldEvent_INDEX 38
+#define GetMaxECBBufferSize_INDEX 39
+#define LSLReserved3_INDEX 40
+#define ServiceEvents_INDEX 41
+#define ModifyStackEvents_INDEX 42
+#define ControlStackFilter_INDEX 43
+
+//
+// Definitions for MLID Control Services
+//
+
+
+#define MCS_GetMLIDConfiguration_INDEX 0x00
+#define MCS_GetMLIDStatistics_INDEX 0x01
+#define MCS_AddMulticastAddress_INDEX 0x02
+#define MCS_DeleteMulticastAddress_INDEX 0x03
+#define MCS_MLIDShutdown_INDEX 0x05
+#define MCS_MLIDReset_INDEX 0x06
+#define MCS_SetLookAheadSize_INDEX 0x09
+#define MCS_PromiscuousChange_INDEX 0x0A
+#define MCS_MLIDManagement_INDEX 0x0D
+
+
+typedef PVOID (*PLSL_SR_FUNCTION)(UINT32, PUINT32, PUINT8);