// // 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 );