windows-nt/Source/XPSP1/NT/net/1394/nic/sys/bcm.h
2020-09-26 16:20:57 +08:00

199 lines
3.1 KiB
C

//
// 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
#define BCM_GENERIC_TIMEOUT 50000 // 50msec
#define BCM_WAIT_FOR_EVENT_TIME 60000000 // 60sec
//
// 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
);