// // Copyright (c) 1998-1999, Microsoft Corporation, all rights reserved // // mp.h // // IEEE1394 mini-port/call-manager driver // // Broadcast Channel Manager - header file // // 07/05/99 ADube - Created - Declaration for miniport routines // // // Various timeout used throught the BCM algorithm // #define ONE_SEC 1000000 #define ONE_MINUTE 60000 #define FIFTY_MILLISECONDS 50000 #define BCM_NUM_RETRY 5 // // BCR Register flags in the BigEndian and little Endian format // #define BCR_IMPLEMENTED_BIG_ENDIAN 0x00000080 #define BCR_IMPLEMENTED_LITTLE_ENDIAN 0x80000000 #define BCR_VALID_BIG_ENDIAN 0x000000C0 #define BCR_VALID_LITTLE_ENDIAN 0xC0000000 typedef struct _BCM_CONTEXT { ULONG Generation; PADAPTERCB pAdapter; }BCM_CONTEXT, *PBCM_CONTEXT; // // Broadcast Channel Manager functions begin here // VOID nicBCRAccessedCallback ( IN PNOTIFICATION_INFO pNotificationInfo ); VOID nicBCMAbort ( IN PADAPTERCB pAdapter, IN PREMOTE_NODE pRemoteNode ); VOID nicBCMAddRemoteNode ( IN PADAPTERCB pAdapter, IN BOOLEAN fIsOnlyRemoteNode ); VOID nicBCMAlgorithm( PADAPTERCB pAdapter, ULONG BcmGeneration ); VOID nicBCMAlgorithmWorkItem( PNDIS_WORK_ITEM pWorkItem, PVOID Context ); VOID nicBCMCheckLastNodeRemoved( IN PADAPTERCB pAdapter ); NDIS_STATUS nicFindIrmAmongRemoteNodes ( IN PADAPTERCB pAdapter, IN ULONG BCMGeneration, OUT PPREMOTE_NODE ppIrmRemoteNode ); VOID nicFreeBroadcastChannelRegister( IN PADAPTERCB pAdapter ); NDIS_STATUS nicInformAllRemoteNodesOfBCM ( IN PADAPTERCB pAdapter ); NDIS_STATUS nicInitializeBroadcastChannelRegister ( PADAPTERCB pAdapter ); NDIS_STATUS nicIsLocalHostTheIrm( IN PADAPTERCB pAdapter, OUT PBOOLEAN pfIsLocalHostIrm, OUT PPTOPOLOGY_MAP ppTopologyMap, OUT PNODE_ADDRESS pLocalHostAddress ); NDIS_STATUS nicLocalHostIsIrm( IN PADAPTERCB pAdapter ); NDIS_STATUS nicLocalHostIsNotIrm ( IN PADAPTERCB pAdapter, IN ULONG CurrentGeneration ); NDIS_STATUS nicLocalNotIrmMandatoryWait ( IN PADAPTERCB pAdapter, IN ULONG BCMGeneration, OUT NETWORK_CHANNELSR* pBCR ); NDIS_STATUS nicReadIrmBcr ( PREMOTE_NODE pIrmRemoteNode, IN PMDL pBCRMdl, IN ULONG GivenGeneration, OUT PBOOLEAN fDidTheBusReset ); NDIS_STATUS nicRetryToReadIrmBcr( PREMOTE_NODE pIrmRemoteNode, PMDL pRemoteBCRMdl, ULONG Generation, PBOOLEAN pfDidTheBusReset ); NDIS_STATUS nicScheduleBCMWorkItem( PADAPTERCB pAdapter ); VOID nicSetEventMakeCall ( IN PADAPTERCB pAdapter ); VOID nicLocalHostIsNotIrmPost ( PADAPTERCB pAdapter, PREMOTE_NODE pIrmRemoteNode, BOOLEAN fNeedToReset, BOOLEAN fRemoteNodeBCRIsValid , BOOLEAN fLocalHostBCRIsValid , BOOLEAN fDidTheBusReset, NETWORK_CHANNELSR* pBCR );