Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

809 lines
12 KiB

/*+
* file: d21x4fct.h
*
* Copyright (C) 1992-1995 by
* Digital Equipment Corporation, Maynard, Massachusetts.
* All rights reserved.
*
* This software is furnished under a license and may be used and copied
* only in accordance of the terms of such license and with the
* inclusion of the above copyright notice. This software or any other
* copies thereof may not be provided or otherwise made available to any
* other person. No title to and ownership of the software is hereby
* transferred.
*
* The information in this software is subject to change without notice
* and should not be construed as a commitment by digital equipment
* corporation.
*
* Digital assumes no responsibility for the use or reliability of its
* software on equipment which is not supplied by digital.
*
*
* Abstract: This file contains the functions prototyping for the
* NDIS 4.0 miniport driver for DEC's DC21X4 Ethernet controler
*
* Author: Philippe Klein
*
* Revision History:
*
* phk 28-Aug-1994 Initial entry
*
-*/
// DC21X4.C
NTSTATUS
DriverEntry(
IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath
);
// ALLOC.C
extern
BOOLEAN
AllocateAdapterMemory(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
FreeAdapterMemory(
IN PDC21X4_ADAPTER Adapter
);
VOID
AlignStructure (
IN PALLOCATION_MAP Map,
IN UINT Boundary
);
VOID
DC21X4AllocateComplete(
IN NDIS_HANDLE MiniportAdapterContext,
IN PVOID VirtualAddress,
IN PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG Length,
IN PVOID Context
);
// COPY.C
extern
VOID
CopyFromPacketToBuffer (
IN PNDIS_PACKET Packet,
IN UINT Offset,
IN PCHAR Buffer,
IN UINT BytesToCopy,
OUT PUINT BytesCopied
);
// FILTER.C
extern
VOID
DC21X4InitializeCam (
IN PDC21X4_ADAPTER Adapter,
IN PUSHORT Address
);
extern
BOOLEAN
DC21X4LoadCam (
IN PDC21X4_ADAPTER Adapter,
IN BOOLEAN InterruptMode
);
extern
NDIS_STATUS
DC21X4ChangeFilter (
IN PDC21X4_ADAPTER Adapter,
IN ULONG NewFilterClass
);
VOID
AddBroadcastToSetup (
IN PDC21X4_ADAPTER Adapter
);
VOID
RemoveBroadcastFromSetup (
IN PDC21X4_ADAPTER Adapter
);
extern
NDIS_STATUS
DC21X4ChangeMulticastAddresses(
IN PDC21X4_ADAPTER Adapter,
IN PVOID MulticastAddresses,
IN UINT AddressCount
);
// INIT.C
extern
VOID
DC21X4InitializeRegisters(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4StopAdapter(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4StartAdapter(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4WriteGepRegister(
IN PDC21X4_ADAPTER Adapter,
IN ULONG Data
);
extern
VOID
DC21X4InitializeGepRegisters(
IN PDC21X4_ADAPTER Adapter,
IN BOOLEAN Phy
);
extern
VOID
DC21X4InitializeMediaRegisters(
IN PDC21X4_ADAPTER Adapter,
IN BOOLEAN Phy
);
extern
VOID
DC2104InitializeSiaRegisters(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4InitPciConfigurationRegisters(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4StopReceiverAndTransmitter(
IN PDC21X4_ADAPTER Adapter
);
// INTERRUP.C;
extern
VOID
DC21X4Isr(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueMiniportHandleInterrupt,
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
DC21X4SynchClearIsr(
IN PDC21X4_SYNCH_CONTEXT SyncContext
);
VOID
DC21X4HandleInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
VOID
HandleGepInterrupt(
IN PDC21X4_ADAPTER Adapter
);
VOID
HandleLinkPassInterrupt(
IN PDC21X4_ADAPTER Adapter,
IN OUT PULONG IsrStatus
);
VOID
HandleLinkFailInterrupt(
IN PDC21X4_ADAPTER Adapter,
IN OUT PULONG IsrStatus
);
VOID
SwitchMediumToTpNway(
IN PDC21X4_ADAPTER Adapter
);
PDC21X4_RECEIVE_DESCRIPTOR
ProcessReceiveDescRing(
IN PDC21X4_ADAPTER Adapter
);
PDC21X4_TRANSMIT_DESCRIPTOR
ProcessTransmitDescRing(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4EnableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
DC21X4DisableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
NDIS_STATUS
DC21X4ReturnPacket(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet
);
// MEDIA.C
extern
BOOLEAN
DC21X4MediaDetect(
IN PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
DC2114Sense100BaseTxLink(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4DynamicAutoSense (
IN PVOID Systemspecific1,
IN PDC21X4_ADAPTER Adapter,
IN PVOID Systemspecific2,
IN PVOID Systemspecific3
);
extern
BOOLEAN
DC21X4AutoSense (
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4SwitchMedia(
IN PDC21X4_ADAPTER Adapter,
IN LONG NextMedia
);
extern
VOID
DC21X4StartAutoSenseTimer(
IN PDC21X4_ADAPTER Adapter,
IN UINT Value
);
extern
VOID
DC21X4StopAutoSenseTimer(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4EnableNway(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4DisableNway(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4IndicateMediaStatus(
IN PDC21X4_ADAPTER Adapter,
IN UINT Status
);
// MACTOPHY.C
extern
BOOLEAN
DC21X4PhyInit(
IN PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
DC21X4SetPhyConnection(
IN PDC21X4_ADAPTER Adapter
);
void
SetMacConnection(
IN PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
DC21X4MiiAutoDetect(
IN PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
DC21X4MiiAutoSense(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
SelectNonMiiPort(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4SetPhyControl(
PDC21X4_ADAPTER Adapter,
USHORT AdminControl
);
// MIIGEN.C
extern
BOOLEAN
MiiGenInit(
IN PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
FindAndInitMiiPhys(
IN PDC21X4_ADAPTER Adapter
);
extern
USHORT
MiiGenGetCapabilities(
PDC21X4_ADAPTER Adapter
);
extern
BOOLEAN
MiiGenCheckConnection(
PDC21X4_ADAPTER Adapter,
USHORT Connection
);
extern
BOOLEAN
MiiGenSetConnection(
PDC21X4_ADAPTER Adapter,
UINT Connection,
USHORT NwayAdvertisement
);
extern
BOOLEAN
MiiGenGetConnectionStatus (
PDC21X4_ADAPTER Adapter,
PUSHORT ConnectionStatus
);
extern
BOOLEAN
MiiGenGetConnection(
PDC21X4_ADAPTER Adapter,
PUSHORT Connection
);
extern
void
MiiGenAdminStatus(
PDC21X4_ADAPTER Adapter,
PUSHORT AdminStatus
);
extern
BOOLEAN
MiiGenAdminControl(
PDC21X4_ADAPTER Adapter,
USHORT AdminControl
);
void
MiiFreeResources(
PDC21X4_ADAPTER Adapter
);
// MIIPHY.C
BOOLEAN
MiiPhyInit(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr
);
void
MiiPhyGetCapabilities(
PMII_PHY_INFO PhyInfoPTR,
PCAPABILITY Capabilities
);
BOOLEAN
MiiPhySetConnectionType(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
USHORT Connection,
USHORT Advertisement
);
BOOLEAN
MiiPhyGetConnectionType(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PUSHORT ConnectionStatus
);
BOOLEAN
MiiPhyGetConnectionStatus(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PUSHORT ConnectionStatus
);
void
MiiPhyAdminStatus(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PMII_STATUS Status
);
void
MiiPhyAdminControl(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
MII_STATUS Control
);
BOOLEAN
MiiPhyReadRegister(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
USHORT RegNum,
PUSHORT Register
);
void
MiiPhyWriteRegister(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
USHORT RegNum,
USHORT Register
);
void
MiiPhyNwayGetLocalAbility(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PCAPABILITY Ability
);
void
MiiPhyNwaySetLocalAbility(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
USHORT MediaBits
);
void
MiiPhyNwayGetPartnerAbility(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PCAPABILITY Ability
);
BOOLEAN
FindMiiPhyDevice(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr
);
void
WriteMii(
PDC21X4_ADAPTER Adapter,
ULONG MiiData,
INT DataSize
);
void
MiiOutThreeState(
PDC21X4_ADAPTER Adapter
);
void
InitPhyInfoEntries(
PMII_PHY_INFO PhyInfoPtr
);
void
ConvertConnectionToControl(
PMII_PHY_INFO PhyInfoPtr,
PUSHORT Connection
);
void
ConvertMediaTypeToNwayLocalAbility(
USHORT MediaType,
PCAPABILITY NwayLocalAbility
);
BOOLEAN
ConvertNwayToConnectionType(
CAPABILITY NwayReg,
PUSHORT Connection
);
BOOLEAN
CheckConnectionSupport(
PMII_PHY_INFO PhyInfoPtr,
USHORT ConCommand
);
extern
BOOLEAN
GetBroadcomPhyConnectionType(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr,
PUSHORT Connection
);
void
HandleBroadcomMediaChangeFrom10To100(
PDC21X4_ADAPTER Adapter,
PMII_PHY_INFO PhyInfoPtr
);
// MONITOR.C
extern
VOID
DC21X4ModerateInterrupt (
IN PVOID Systemspecific1,
IN PDC21X4_ADAPTER Adapter,
IN PVOID Systemspecific2,
IN PVOID Systemspecific3
);
extern
BOOLEAN
DC21X4CheckforHang(
IN NDIS_HANDLE MiniportAdapterContext
);
// REGISTER.C
extern
NDIS_STATUS
DC21X4Initialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE ConfigurationHandle
);
extern
VOID
FreeAdapterResources(
IN PDC21X4_ADAPTER Adapter,
IN INT Step
);
NDIS_STATUS
FindPciConfiguration(
IN NDIS_HANDLE MiniportAdapterHandle,
IN ULONG SlotNumber,
OUT PULONG PortStart,
OUT PULONG PortLength,
OUT PULONG InterruptLevel,
OUT PULONG InterruptVector
);
extern
VOID
DC21X4Halt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
DC21X4Shutdown(
IN PVOID ShutdownContext
);
#if _MIPS_
NTSTATUS
DC21X4HardwareSaveInformation(
IN PWSTR ValueName,
IN ULONG ValueType,
IN PVOID ValueData,
IN ULONG ValueLength,
IN PVOID Context,
IN PVOID EntryContext
);
BOOLEAN
DC21X4HardwareVerifyChecksum(
IN PDC21X4_ADAPTER Adapter,
IN PUCHAR EthernetAddress
);
NDIS_STATUS
DC21X4HardwareGetDetails(
IN PDC21X4_ADAPTER Adapter,
IN UINT Controller,
IN UINT MultifunctionAdapter
);
#endif
// REQUEST.C
extern
NDIS_STATUS
DC21X4QueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
extern
NDIS_STATUS
DC21X4SetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
// RESET.C
extern
NDIS_STATUS
DC21X4Reset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
DC21X4DeferredReset(
IN PVOID Systemspecific1,
IN PDC21X4_ADAPTER Adapter,
IN PVOID Systemspecific2,
IN PVOID Systemspecific3
);
// SEND.C
extern
NDIS_STATUS
DC21X4Send(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
extern
NDIS_STATUS
DC21X4SendPackets(
IN NDIS_HANDLE MiniportAdapterContext,
IN PPNDIS_PACKET PacketArray,
IN UINT NumberOfPackets
);
extern
ULONG
CRC32 (
IN PUCHAR Data,
IN UINT Len
);
//SROM.C
extern
NDIS_STATUS
DC21X4ReadSerialRom (
IN PDC21X4_ADAPTER Adapter
);
BOOLEAN
VerifyChecksum(
IN UNALIGNED UCHAR *EthAddress
);
NDIS_STATUS
DC21X4ParseSRom(
IN PDC21X4_ADAPTER Adapter
);
extern
VOID
DC21X4ParseExtendedBlock(
IN PDC21X4_ADAPTER Adapter,
IN OUT UNALIGNED UCHAR **MediaBlock,
IN USHORT GeneralPurposeCtrl,
OUT PUCHAR PMediaCode
);
extern
VOID
DC21X4ParseFixedBlock(
IN PDC21X4_ADAPTER Adapter,
IN OUT UNALIGNED UCHAR **MediaBlock,
IN USHORT GeneralPurposeCtrl,
OUT PUCHAR PMediaCode
);
BOOLEAN
DC21X4ReadSRom(
IN PDC21X4_ADAPTER Adapter,
IN OUT PULONG Offset,
IN USHORT Len,
OUT PUCHAR Buffer
);