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.
 
 
 
 
 
 

273 lines
6.6 KiB

/*++
Copyright (c) 1990 Microsoft Corporation
Module Name:
ne3200proc.h
Abstract:
Procedure declarations for the Novell NE3200 NDIS 3.0 driver.
Moved most of these from ne3200sw.h
Author:
Johnson R. Apacible (johnsona) 21-Aug-1991
Environment:
Architecturally, there is an assumption in this driver that we are
on a little endian machine.
Notes:
optional-notes
Revision History:
--*/
#ifndef _NE3200PROC_
#define _NE3200PROC_
//
// We define the external interfaces to the NE3200 driver.
// These routines are only external to permit separate
// compilation. Given a truely fast compiler they could
// all reside in a single file and be static.
//
extern
BOOLEAN
NE3200CheckForHang(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
NE3200DisableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
NE3200EnableInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
NE3200Halt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
VOID
NE3200HandleInterrupt(
IN NDIS_HANDLE MiniportAdapterContext
);
extern
NDIS_STATUS
NE3200Initialize(
OUT PNDIS_STATUS OpenErrorStatus,
OUT PUINT SelectedMediumIndex,
IN PNDIS_MEDIUM MediumArray,
IN UINT MediumArraySize,
IN NDIS_HANDLE MiniportAdapterHandle,
IN NDIS_HANDLE WrapperConfigurationContext
);
extern
VOID
NE3200Isr(
OUT PBOOLEAN InterruptRecognized,
OUT PBOOLEAN QueueDpc,
IN NDIS_HANDLE MiniportAdapterContext
);
extern
NDIS_STATUS
NE3200QueryInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesWritten,
OUT PULONG BytesNeeded
);
extern
NDIS_STATUS
NE3200Reset(
OUT PBOOLEAN AddressingReset,
IN NDIS_HANDLE MiniportAdapterContext
);
extern
NDIS_STATUS
NE3200Send(
IN NDIS_HANDLE MiniportAdapterContext,
IN PNDIS_PACKET Packet,
IN UINT Flags
);
extern
NDIS_STATUS
NE3200SetInformation(
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_OID Oid,
IN PVOID InformationBuffer,
IN ULONG InformationBufferLength,
OUT PULONG BytesRead,
OUT PULONG BytesNeeded
);
extern
NDIS_STATUS
NE3200TransferData(
OUT PNDIS_PACKET Packet,
OUT PUINT BytesTransferred,
IN NDIS_HANDLE MiniportAdapterContext,
IN NDIS_HANDLE MiniportReceiveContext,
IN UINT ByteOffset,
IN UINT BytesToTransfer
);
VOID
NE3200StartChipAndDisableInterrupts(
IN PNE3200_ADAPTER Adapter,
IN PNE3200_SUPER_RECEIVE_ENTRY FirstReceiveEntry
);
VOID
NE3200FinishQueryInformation(
IN PNE3200_ADAPTER Adapter
);
VOID
NE3200GetStationAddress(
IN PNE3200_ADAPTER Adapter
);
VOID
NE3200StopChip(
IN PNE3200_ADAPTER Adapter
);
BOOLEAN
NE3200RegisterAdapter(
IN NDIS_HANDLE MiniportAdapterHandle,
IN UINT EisaSlot,
IN UINT InterruptVector,
IN NDIS_INTERRUPT_MODE InterruptMode,
IN PUCHAR CurrentAddress
);
VOID
NE3200AcquirePublicCommandBlock(
IN PNE3200_ADAPTER Adapter,
OUT PNE3200_SUPER_COMMAND_BLOCK * CommandBlock
);
VOID
FASTCALL
NE3200RelinquishCommandBlock(
IN PNE3200_ADAPTER Adapter,
IN PNE3200_SUPER_COMMAND_BLOCK CommandBlock
);
VOID
NE3200DoAdapterReset(
IN PNE3200_ADAPTER Adapter
);
VOID
NE3200SetupForReset(
IN PNE3200_ADAPTER Adapter
);
NDIS_STATUS
NE3200UpdateMulticastTable(
IN PNE3200_ADAPTER Adapter,
IN UINT CurrentAddressCount,
IN CHAR CurrentAddresses[][NE3200_LENGTH_OF_ADDRESS]
);
VOID
NE3200ResetVariables(
IN PNE3200_ADAPTER Adapter
);
BOOLEAN
SyncNE3200ClearDoorbellInterrupt(
IN PVOID SyncContext
);
VOID
NE3200ResetHandler(
IN PVOID SystemSpecific1,
IN PNE3200_ADAPTER Adapter,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
VOID
NE3200DeferredTimer(
IN PVOID SystemSpecific1,
IN PNE3200_ADAPTER Adapter,
IN PVOID SystemSpecific2,
IN PVOID SystemSpecific3
);
VOID
FASTCALL
Ne3200Stall(
PULONG Dummy
);
#define NE3200SubmitCommandBlock( _Adapter, _CommandBlock ) \
{ \
ASSERT(!(NdisGetPhysicalAddressLow(_CommandBlock->Self) & 1)); \
_CommandBlock->Timeout = FALSE; \
if (_Adapter->FirstCommandOnCard != NULL) { \
if (_Adapter->FirstWaitingCommand == NULL) { \
_Adapter->FirstWaitingCommand = _CommandBlock; \
} else { \
PNE3200_SUPER_COMMAND_BLOCK PreviousCommandBlock; \
PreviousCommandBlock = _Adapter->LastWaitingCommand; \
PreviousCommandBlock->Hardware.NextPending = \
NdisGetPhysicalAddressLow(_CommandBlock->Self); \
PreviousCommandBlock->NextCommand = _CommandBlock; \
} \
_Adapter->LastWaitingCommand = _CommandBlock; \
IF_LOG('2'); \
} else { \
ASSERT(_Adapter->FirstWaitingCommand == NULL); \
IF_LOG('1'); \
_Adapter->FirstCommandOnCard = _CommandBlock; \
_Adapter->LastCommandOnCard = _CommandBlock; \
NE3200_WRITE_COMMAND_POINTER(_Adapter,NdisGetPhysicalAddressLow(_CommandBlock->Self)); \
{ ULONG i; Ne3200Stall(&i); } \
NE3200_WRITE_LOCAL_DOORBELL_INTERRUPT(_Adapter,NE3200_LOCAL_DOORBELL_NEW_COMMAND); \
} \
}
#define NE3200AcquireCommandBlock( _Adapter, _CommandBlock ) \
{ \
if (_Adapter->NumberOfAvailableCommandBlocks) { \
IF_LOG('a'); \
_Adapter->NumberOfAvailableCommandBlocks--; \
*(_CommandBlock) = _Adapter->NextCommandBlock; \
_Adapter->NextCommandBlock++; \
if (_Adapter->NextCommandBlock >= _Adapter->LastCommandBlockAllocated ) {\
Adapter->NextCommandBlock = Adapter->CommandQueue; \
} \
} else { \
*(_CommandBlock) = NULL; \
} \
}
#endif //_NE3200PROC_