538 lines
9.8 KiB
C
538 lines
9.8 KiB
C
//
|
|
// Copyright (c) 1998-1999, Microsoft Corporation, all rights reserved
|
|
//
|
|
// mp.h
|
|
//
|
|
// IEEE1394 mini-port/call-manager driver
|
|
//
|
|
// Mini-port routines - header file
|
|
//
|
|
// 06/20/99 ADube - Created - Declaration for miniport routines
|
|
//
|
|
|
|
//-------------------------------------------------------------------
|
|
// G L O B A L D E C L A R A T I O N S
|
|
//-------------------------------------------------------------------
|
|
|
|
#ifdef PSDEBUG
|
|
|
|
// List of all allocated PAYLOADSENT contexts and the lock that protects the
|
|
// list. (for debug purposes only)
|
|
//
|
|
NDIS_SPIN_LOCK g_lockDebugPs;
|
|
LIST_ENTRY g_listDebugPs;
|
|
|
|
#endif
|
|
|
|
|
|
#define DEFAULT_TOPOLOGY_MAP_LENGTH 0x400
|
|
|
|
|
|
#define FIVE_SECONDS_IN_MILLSECONDS 2000 /*Incorrect value during debugging */
|
|
|
|
|
|
|
|
|
|
//
|
|
// Used to generate a MAC address amd for informational use
|
|
//
|
|
extern ULONG AdapterNum ;
|
|
extern BOOLEAN g_AdapterFreed;
|
|
|
|
// Call statistics totals for all calls since loading, calls and the lock
|
|
// protecting access to them. For this global only, the 'ullCallUp' field is
|
|
// the number of calls recorded, rather than a time.
|
|
//
|
|
CALLSTATS g_stats;
|
|
NDIS_SPIN_LOCK g_lockStats;
|
|
|
|
|
|
|
|
// Global driver list lock
|
|
//
|
|
NDIS_SPIN_LOCK g_DriverLock;
|
|
|
|
// Global adapter list, serialized by g_DriverLock;
|
|
//
|
|
LIST_ENTRY g_AdapterList;
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// N D I S M I N I P O R T H A N D L E R S
|
|
//-----------------------------------------------------------------------------
|
|
|
|
|
|
NDIS_STATUS
|
|
NicMpInitialize(
|
|
OUT PNDIS_STATUS OpenErrorStatus,
|
|
OUT PUINT SelectedMediumIndex,
|
|
IN PNDIS_MEDIUM MediumArray,
|
|
IN UINT MediumArraySize,
|
|
IN NDIS_HANDLE MiniportAdapterHandle,
|
|
IN NDIS_HANDLE WrapperConfigurationContext
|
|
);
|
|
|
|
VOID
|
|
NicMpHalt(
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpReset(
|
|
OUT PBOOLEAN AddressingReset,
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
VOID
|
|
NicMpReturnPacket(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN PNDIS_PACKET Packet
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpQueryInformation(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID InformationBuffer,
|
|
IN ULONG InformationBufferLength,
|
|
OUT PULONG BytesWritten,
|
|
OUT PULONG BytesNeeded
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpSetInformation(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID InformationBuffer,
|
|
IN ULONG InformationBufferLength,
|
|
OUT PULONG BytesRead,
|
|
OUT PULONG BytesNeeded
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpCoActivateVc(
|
|
IN NDIS_HANDLE MiniportVcContext,
|
|
IN OUT PCO_CALL_PARAMETERS CallParameters
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpCoDeactivateVc(
|
|
IN NDIS_HANDLE MiniportVcContext
|
|
);
|
|
|
|
|
|
VOID
|
|
NicMpCoSendPackets(
|
|
IN NDIS_HANDLE MiniportVcContext,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
NDIS_STATUS
|
|
NicMpCoRequest(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_HANDLE MiniportVcContext,
|
|
IN OUT PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
|
|
BOOLEAN
|
|
CheckForHang(
|
|
IN NDIS_HANDLE MiniportAdapterContext
|
|
);
|
|
|
|
|
|
|
|
//-----------------------------------------------------------------------------
|
|
// prototypes for miniport.c (alphabetically)
|
|
//-----------------------------------------------------------------------------
|
|
|
|
NDIS_STATUS
|
|
nicAllocateAddressRangeOnNewPdo (
|
|
IN PADAPTERCB pAdapter,
|
|
IN PREMOTE_NODE pRemoteNode
|
|
);
|
|
|
|
|
|
VOID
|
|
nicResetNotificationCallback (
|
|
IN PVOID pContext
|
|
);
|
|
|
|
VOID
|
|
nicBusResetWorkItem(
|
|
NDIS_WORK_ITEM* pResetWorkItem,
|
|
IN PVOID Context
|
|
);
|
|
|
|
VOID
|
|
nicFreeAdapter(
|
|
IN ADAPTERCB* pAdapter
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicFreeRemoteNode(
|
|
IN REMOTE_NODE *pRemoteNode
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicGetRegistrySettings(
|
|
IN NDIS_HANDLE WrapperConfigurationContext,
|
|
IN ADAPTERCB * pAdapter
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
nicQueryInformation(
|
|
IN ADAPTERCB* pAdapter,
|
|
IN VCCB* pVc,
|
|
IN OUT PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicSetInformation(
|
|
IN ADAPTERCB* pAdapter,
|
|
IN VCCB* pVc,
|
|
IN OUT PNDIS_REQUEST NdisRequest
|
|
);
|
|
|
|
|
|
VOID
|
|
nicIssueBusReset (
|
|
PADAPTERCB pAdapter,
|
|
ULONG Flags
|
|
);
|
|
|
|
|
|
VOID
|
|
nicResetReallocateChannels (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicResetRestartBCM (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicReallocateChannels (
|
|
IN PNDIS_WORK_ITEM pWorkItem,
|
|
IN PVOID Context
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
nicUpdateLocalHostSpeed (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
VOID
|
|
nicInitializeAllEvents (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
|
|
|
|
VOID
|
|
nicAddRemoteNodeChannelVc (
|
|
IN PADAPTERCB pAdapter,
|
|
IN PREMOTE_NODE pRemoteNode
|
|
);
|
|
|
|
|
|
VOID
|
|
nicNoRemoteNodesLeft (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicDeleteLookasideList (
|
|
IN OUT PNIC_NPAGED_LOOKASIDE_LIST pLookasideList
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
nicInitializeAdapterLookasideLists (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
nicInitializeLookasideList(
|
|
IN OUT PNIC_NPAGED_LOOKASIDE_LIST pLookasideList,
|
|
ULONG Size,
|
|
ULONG Tag,
|
|
USHORT Depth
|
|
);
|
|
|
|
VOID
|
|
nicDeleteAdapterLookasideLists (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
VOID
|
|
nicFillRemoteNodeTable (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
ReassemblyTimerFunction (
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID FunctionContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
|
|
|
|
extern const PUCHAR pnic1394DriverDescription;
|
|
extern const USHORT nic1394DriverGeneration;
|
|
extern const unsigned char Net1394ConfigRom[48];
|
|
|
|
NDIS_STATUS
|
|
nicAddIP1394ToConfigRom (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicUpdateRemoteNodeTable (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
NTSTATUS
|
|
nicUpdateRemoteNodeCompletion (
|
|
IN PDEVICE_OBJECT pDeviceObject,
|
|
IN PIRP pIrp,
|
|
IN PVOID pContext
|
|
);
|
|
|
|
NDIS_STATUS
|
|
nicMCmRegisterAddressFamily (
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicFreeReassembliesOnRemoteNode (
|
|
IN PREMOTE_NODE pRemoteNode,
|
|
IN PLIST_ENTRY pReassemblyList
|
|
);
|
|
|
|
VOID
|
|
nicFreeReassembliesOnRemoteNode (
|
|
IN PREMOTE_NODE pRemoteNode,
|
|
PLIST_ENTRY pToBeFreedList
|
|
);
|
|
|
|
UCHAR
|
|
nicGetMaxRecFromBytes(
|
|
IN ULONG ByteSize
|
|
);
|
|
|
|
UCHAR
|
|
nicGetMaxRecFromSpeed(
|
|
IN ULONG Scode
|
|
);
|
|
|
|
PREMOTE_NODE
|
|
nicGetRemoteNodeFromTable (
|
|
ULONG NodeNumber,
|
|
PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
|
|
|
|
//
|
|
// ConnectionLess Handlers
|
|
//
|
|
NDIS_STATUS
|
|
NicEthQueryInformation(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN NDIS_OID Oid,
|
|
IN PVOID InformationBuffer,
|
|
IN ULONG InformationBufferLength,
|
|
OUT PULONG BytesWritten,
|
|
OUT PULONG BytesNeeded
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
NicEthSetInformation(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
NDIS_OID Oid,
|
|
PVOID InformationBuffer,
|
|
ULONG InformationBufferLength,
|
|
PULONG BytesRead,
|
|
PULONG BytesNeeded
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
NicMpSendPackets(
|
|
IN NDIS_HANDLE MiniportAdapterContext,
|
|
IN PPNDIS_PACKET PacketArray,
|
|
IN UINT NumberOfPackets
|
|
);
|
|
|
|
|
|
|
|
NDIS_STATUS
|
|
nicFillNicInfo (
|
|
IN PADAPTERCB pAdapter,
|
|
PNIC1394_NICINFO pInNicInfo,
|
|
PNIC1394_NICINFO pOutNicInfo
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicFillBusInfo(
|
|
IN PADAPTERCB pAdapter,
|
|
IN OUT PNIC1394_BUSINFO pBi
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicFillChannelInfo(
|
|
IN PADAPTERCB pAdapter,
|
|
IN OUT PNIC1394_CHANNELINFO pCi
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicFillRemoteNodeInfo(
|
|
IN PADAPTERCB pAdapter,
|
|
IN OUT PNIC1394_REMOTENODEINFO pRni
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
nicCopyPacketStats (
|
|
NIC1394_PACKET_STATS* pStats,
|
|
UINT TotNdisPackets, // Total number of NDIS packets sent/indicated
|
|
UINT NdisPacketsFailures,// Number of NDIS packets failed/discarded
|
|
UINT TotBusPackets, // Total number of BUS-level reads/writes
|
|
UINT BusPacketFailures // Number of BUS-level failures(sends)/discards(recv)
|
|
);
|
|
|
|
VOID
|
|
nicAddPacketStats(
|
|
NIC1394_PACKET_STATS* pStats,
|
|
UINT TotNdisPackets, // Total number of NDIS packets sent/indicated
|
|
UINT NdisPacketsFailures,// Number of NDIS packets failed/discarded
|
|
UINT TotBusPackets, // Total number of BUS-level reads/writes
|
|
UINT BusPacketFailures // Number of BUS-level failures(sends)/discards(recv)
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicResetStats (
|
|
IN PADAPTERCB pAdapter,
|
|
PNIC1394_RESETSTATS pResetStats
|
|
);
|
|
|
|
VOID
|
|
nicInformProtocolsOfReset(
|
|
IN PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
VOID
|
|
nicUpdateSpeedInAllVCs (
|
|
PADAPTERCB pAdapter,
|
|
ULONG Speed
|
|
);
|
|
|
|
VOID
|
|
nicUpdateRemoteNodeCaps(
|
|
PADAPTERCB pAdapter
|
|
);
|
|
|
|
VOID
|
|
nicQueryInformationWorkItem(
|
|
IN PNDIS_WORK_ITEM pWorkItem,
|
|
IN PVOID Context
|
|
);
|
|
|
|
|
|
VOID
|
|
nicIndicateStatusTimer(
|
|
IN PVOID SystemSpecific1,
|
|
IN PVOID FunctionContext,
|
|
IN PVOID SystemSpecific2,
|
|
IN PVOID SystemSpecific3
|
|
);
|
|
|
|
VOID
|
|
nicMIndicateStatus(
|
|
IN PADAPTERCB pAdapter ,
|
|
IN NDIS_STATUS GeneralStatus,
|
|
IN PVOID StatusBuffer,
|
|
IN UINT StatusBufferSize
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicInitSerializedStatusStruct(
|
|
PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
VOID
|
|
nicDeInitSerializedStatusStruct(
|
|
PADAPTERCB pAdapter
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicEthLoadArpModule (
|
|
IN PADAPTERCB pAdapter,
|
|
IN ULONG StartArp,
|
|
IN PNDIS_REQUEST pRequest
|
|
);
|
|
|
|
|
|
|
|
VOID
|
|
nicGetAdapterName (
|
|
IN PADAPTERCB pAdapter,
|
|
IN WCHAR *pAdapterName,
|
|
IN ULONG BufferSize,
|
|
IN PULONG SizeReturned
|
|
);
|
|
|
|
|
|
NDIS_STATUS
|
|
nicQueueRequestToArp(
|
|
PADAPTERCB pAdapter,
|
|
ARP_ACTION Action,
|
|
PNDIS_REQUEST pRequest
|
|
);
|
|
|
|
|
|
NTSTATUS
|
|
nicSubmitIrp(
|
|
IN PDEVICE_OBJECT pPdo,
|
|
IN PIRP pIrp,
|
|
IN PIRB pIrb,
|
|
IN PIO_COMPLETION_ROUTINE pCompletion,
|
|
IN PVOID pContext
|
|
);
|
|
|