mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
424 lines
5.7 KiB
424 lines
5.7 KiB
/*++
|
|
|
|
Copyright (c) 1990 Microsoft Corporation
|
|
|
|
Module Name:
|
|
|
|
Elnk3.h
|
|
|
|
Abstract:
|
|
|
|
Ndis 3.0 MAC driver for the 3Com Etherlink III
|
|
|
|
Author:
|
|
|
|
Brian Lieuallen BrianLie 07/21/92
|
|
|
|
Environment:
|
|
|
|
Kernel Mode Operating Systems : NT
|
|
|
|
Revision History:
|
|
|
|
Portions borrowed from ELNK3 driver by
|
|
Earle R. Horton (EarleH)
|
|
|
|
|
|
--*/
|
|
|
|
|
|
|
|
|
|
|
|
#define STATIC static
|
|
|
|
|
|
//
|
|
// This constant is used for places where NdisAllocateMemory
|
|
// needs to be called and the HighestAcceptableAddress does
|
|
// not matter.
|
|
//
|
|
|
|
extern NDIS_PHYSICAL_ADDRESS HighestAcceptableMax;
|
|
|
|
//
|
|
// NDIS 3.0 entry functions
|
|
//
|
|
|
|
BOOLEAN
|
|
Elnk3CheckForHang(
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3QueryInformation(
|
|
IN NDIS_HANDLE MiniportContext,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID InfoBuffer,
|
|
IN ULONG BytesLeft,
|
|
OUT PULONG BytesNeeded,
|
|
OUT PULONG BytesWritten
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3SetInformation(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID InformationBuffer,
|
|
IN ULONG InformationBufferLength,
|
|
OUT PULONG BytesRead,
|
|
OUT PULONG BytesNeeded
|
|
);
|
|
|
|
NDIS_STATUS
|
|
Elnk3Initialize(
|
|
OUT PNDIS_STATUS OpenErrorStatus,
|
|
OUT PUINT SelectedMediumIndex,
|
|
IN PNDIS_MEDIUM MediumArray,
|
|
IN UINT MediumArraySize,
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN NDIS_HANDLE WrapperConfigurationContext
|
|
);
|
|
|
|
VOID
|
|
Elnk3Halt(
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
|
|
VOID
|
|
Elnk3Shutdown(
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3Reset(
|
|
OUT PBOOLEAN AddressResetting,
|
|
IN NDIS_HANDLE MacBindingHandle
|
|
);
|
|
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3MacSend(
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN PNDIS_PACKET pPacket,
|
|
IN UINT Flags
|
|
);
|
|
|
|
NDIS_STATUS
|
|
Elnk3TransferData(
|
|
OUT PNDIS_PACKET Packet,
|
|
OUT PUINT BytesTransferred,
|
|
IN NDIS_HANDLE MacBindingHandle,
|
|
IN NDIS_HANDLE MacReceiveContext,
|
|
IN UINT ByteOffset,
|
|
IN UINT BytesToTransfer
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3Reconfigure(
|
|
OUT PNDIS_STATUS OpenErrorStatus,
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_HANDLE ConfigurationHanel
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VOID
|
|
Elnk3AdjustMaxLookAhead(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
// Contained in Interrup.c
|
|
//
|
|
|
|
VOID
|
|
Elnk3Isr(
|
|
OUT PBOOLEAN InterruptRecognized,
|
|
OUT PBOOLEAN QueueDpc,
|
|
IN NDIS_HANDLE Context
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
Elnk3IsrDpc(
|
|
IN NDIS_HANDLE DeferredContext // will be a pointer to the adapter block
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
Elnk3EnableInterrupts(
|
|
IN NDIS_HANDLE Context
|
|
);
|
|
|
|
|
|
VOID
|
|
Elnk3DisableInterrupts(
|
|
IN NDIS_HANDLE Context
|
|
);
|
|
|
|
|
|
|
|
|
|
//
|
|
// Contained in CARD.C
|
|
//
|
|
|
|
BOOLEAN
|
|
CardTest (
|
|
OUT PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
|
|
//
|
|
// Contained in send.c
|
|
//
|
|
|
|
|
|
PNDIS_PACKET
|
|
RemovePacketFromQueue(
|
|
IN PPACKET_QUEUE pQueue
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
MovePacketToCard(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
//
|
|
// Contained in receive.c
|
|
//
|
|
|
|
BOOLEAN
|
|
CheckForReceives(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
|
|
//
|
|
// Contained in config.c
|
|
//
|
|
|
|
NDIS_STATUS
|
|
Elnk3ReadRegistry(
|
|
IN PELNK3_ADAPTER pAdapter,
|
|
IN NDIS_HANDLE ConfigurationHandle
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
CardEnable(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
CardReInit(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
VOID
|
|
CardReset(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
//
|
|
// Elnk3 starts here
|
|
//
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BOOLEAN
|
|
HandleXmtInterrupts(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
BOOLEAN
|
|
Elnk3EarlyReceive(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
Elnk3IndicatePackets(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
BOOLEAN
|
|
Elnk3IndicatePackets2(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
|
|
|
|
BOOLEAN
|
|
CardInit(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
|
|
|
|
UINT
|
|
Elnk3FindIsaBoards(
|
|
IN PMAC_BLOCK pMacBlock
|
|
);
|
|
|
|
BOOLEAN
|
|
Elnk3ActivateIsaBoard(
|
|
IN PMAC_BLOCK pMacBlock,
|
|
IN PELNK3_ADAPTER pAdapter,
|
|
IN NDIS_HANDLE AdapterHandle,
|
|
IN PUCHAR TranslatedIoBase,
|
|
IN ULONG ConfigIoBase,
|
|
IN OUT PULONG Irq,
|
|
IN ULONG Transceiver,
|
|
IN NDIS_HANDLE ConfigurationHandle
|
|
);
|
|
|
|
|
|
VOID
|
|
Elnk3EnableIsaBoard(
|
|
PVOID TranslatedIoBase
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
Elnk3GetEisaResources(
|
|
IN PELNK3_ADAPTER pAdapter,
|
|
IN OUT PULONG Irq
|
|
);
|
|
|
|
|
|
VOID
|
|
CardReStart(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
VOID
|
|
CardReStartDone(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
VOID
|
|
Elnk3AdjustMaxLookAhead(
|
|
IN PELNK3_ADAPTER Adapter
|
|
);
|
|
|
|
BOOLEAN
|
|
ReadStationAddress(
|
|
OUT PELNK3_ADAPTER pNewAdapt
|
|
);
|
|
|
|
|
|
USHORT
|
|
CardSetMulticast(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
CardInit(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
VOID
|
|
ELNK3WriteIDSequence(
|
|
IN PVOID IdPort
|
|
);
|
|
|
|
USHORT
|
|
ELNK3ContentionTest(
|
|
IN PVOID IdPort,
|
|
IN UCHAR EEPromWord
|
|
);
|
|
|
|
USHORT
|
|
ELNK3ReadEEProm(
|
|
IN PELNK3_ADAPTER Adapter,
|
|
IN UCHAR EEPromWord
|
|
);
|
|
|
|
VOID
|
|
Elnk3ProgramEEProm(
|
|
PELNK3_ADAPTER Adapter,
|
|
USHORT AddressConfig,
|
|
USHORT ResourceConfig
|
|
);
|
|
|
|
VOID
|
|
Elnk3WriteEEProm(
|
|
IN PELNK3_ADAPTER Adatper,
|
|
IN UCHAR EEPromWord,
|
|
IN USHORT Value
|
|
);
|
|
|
|
VOID
|
|
Elnk3WaitEEPromNotBusy(
|
|
PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
NDIS_STATUS
|
|
Elnk3Init3C589(
|
|
IN OUT PELNK3_ADAPTER Adapter
|
|
);
|
|
|
|
NDIS_STATUS
|
|
Elnk3InitializeAdapter(
|
|
IN PMAC_BLOCK pMac,
|
|
IN PELNK3_ADAPTER pAdapter,
|
|
IN NDIS_HANDLE ConfigurationHandle
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
Elnk3AllocateBuffers(
|
|
IN PELNK3_ADAPTER pAdapter,
|
|
IN NDIS_HANDLE NdisAdapterHandle,
|
|
BOOLEAN Allocate
|
|
);
|
|
|
|
|
|
VOID
|
|
Elnk3InitAdapterBlock(
|
|
IN PELNK3_ADAPTER pAdapter
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
DriverEntry(
|
|
IN PDRIVER_OBJECT DriverObject,
|
|
IN PUNICODE_STRING RegistryPath
|
|
);
|
|
|
|
|