|
|
//
// Copyright (c) 1998-1999, Microsoft Corporation, all rights reserved
//
// cm.c
//
// IEEE1394 mini-port/call-manager driver
//
// Call Manager routines
//
// 06/20/1999 ADube Created - Declarations for call-manager routines
//
// Debug counts of client oddities that should not be happening.
//
extern ULONG g_ulUnexpectedInCallCompletes; extern ULONG g_ulCallsNotClosable;
//#define MaxNumSlistEntry 0x100
#define MAX_NUM_ISOCH_DESCRIPTOR 0x20
#define MAX_CHANNEL_BUFFER_SIZE 0x300
#define MAX_CHANNEL_BYTES_PER_FRAME 0x280
//-----------------------------------------------------------------------------
// L O C A L T Y P E S F O R cm.c
//-----------------------------------------------------------------------------
typedef enum _VC_SEND_RECEIVE { TransmitVc = 0, ReceiveVc, TransmitAndReceiveVc, InvalidType
} VC_SEND_RECEIVE ;
//-----------------------------------------------------------------------------
// N D I S C A L L - M A N A G E R H A N D L E R S
//-----------------------------------------------------------------------------
NDIS_STATUS NicCmOpenAf( IN NDIS_HANDLE CallMgrBindingContext, IN PCO_ADDRESS_FAMILY AddressFamily, IN NDIS_HANDLE NdisAfHandle, OUT PNDIS_HANDLE CallMgrAfContext );
NDIS_STATUS NicCmCloseAf( IN NDIS_HANDLE CallMgrAfContext );
NDIS_STATUS NicCmCreateVc( IN NDIS_HANDLE ProtocolAfContext, IN NDIS_HANDLE NdisVcHandle, OUT PNDIS_HANDLE ProtocolVcContext );
NDIS_STATUS NicCmDeleteVc( IN NDIS_HANDLE ProtocolVcContext );
NDIS_STATUS NicCmMakeCall( IN NDIS_HANDLE CallMgrVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters, IN NDIS_HANDLE NdisPartyHandle, OUT PNDIS_HANDLE CallMgrPartyContext );
NDIS_STATUS NicCmCloseCall( IN NDIS_HANDLE CallMgrVcContext, IN NDIS_HANDLE CallMgrPartyContext, IN PVOID CloseData, IN UINT Size );
NDIS_STATUS NicCmModifyCallQoS( IN NDIS_HANDLE CallMgrVcContext, IN PCO_CALL_PARAMETERS CallParameters );
NDIS_STATUS NicCmRequest( IN NDIS_HANDLE CallMgrAfContext, IN NDIS_HANDLE CallMgrVcContext, IN NDIS_HANDLE CallMgrPartyContext, IN OUT PNDIS_REQUEST NdisRequest );
NDIS_STATUS nicRegisterSapHandler( IN NDIS_HANDLE CallMgrAfContext, IN PCO_SAP Sap, IN NDIS_HANDLE NdisSapHandle, OUT PNDIS_HANDLE CallMgrSapContext );
NDIS_STATUS nicDeregisterSapHandler( IN NDIS_HANDLE CallMgrSapContext );
NDIS_STATUS nicCmAddPartyHandler( IN NDIS_HANDLE CallMgrVcContext, IN OUT PCO_CALL_PARAMETERS CallParameters, IN NDIS_HANDLE NdisPartyHandle, OUT PNDIS_HANDLE CallMgrPartyContext ); NDIS_STATUS nicCmDropPartyHandler( IN NDIS_HANDLE CallMgrPartyContext, IN PVOID CloseData OPTIONAL, IN UINT Size OPTIONAL );
//-----------------------------------------------------------------------------
// Local prototypes (alphabetically)
//-----------------------------------------------------------------------------
VOID InterceptMakeCallParameters( PCO_MEDIA_PARAMETERS pMediaParams, PNIC1394_MEDIA_PARAMETERS pN1394Params );
NDIS_STATUS nicAllocateAddressRangeOnActiveRemoteNodes ( IN PADAPTERCB pAdapter );
VOID nicCallSetupComplete( IN VCCB* pVc );
VOID nicChannelCallFreeResources ( IN PCHANNEL_VCCB pChannelVc, IN PADAPTERCB pAdapter, IN HANDLE hResource, IN ULONG NumDescriptors, IN PISOCH_DESCRIPTOR pIsochDesciptor, IN BOOLEAN fChannelAllocated, IN ULONG Channel, IN PNIC_PACKET_POOL pPool );
VOID nicChannelCallCleanDataStructure ( IN PCHANNEL_VCCB pChannelVc, IN HANDLE hResource, IN ULONG NumDescriptors, IN PISOCH_DESCRIPTOR pIsochDesciptor, IN BOOLEAN fChannelAllocated, IN ULONG Channel, IN NDIS_HANDLE hPacketPoolHandle, OUT PULONG pNumRefsDecremented );
NDIS_STATUS nicAllocateChannelResourcesAndListen ( IN PADAPTERCB pAdapter, IN PCHANNEL_VCCB pChannelVc );
NDIS_STATUS nicCmGenericMakeCallInit ( IN PVCCB pVc );
VOID nicCmGenrericMakeCallFailure ( IN PVCCB pVc );
VOID nicCmCloseCallComplete( NDIS_WORK_ITEM* pCloseCallCompleteWorkItem, IN PVOID Context );
NDIS_STATUS nicCmCloseCallEthernet ( IN PVCCB pVc ); NDIS_STATUS nicCmCloseCallMultiChannel ( IN PVCCB pVc );
NDIS_STATUS nicCmCloseCallRecvFIFO ( IN PVCCB pVc );
NDIS_STATUS nicCmCloseCallSendFIFO ( IN PVCCB pVc );
NDIS_STATUS nicCmCloseCallSendRecvChannel ( IN PVCCB pVc );
NDIS_STATUS nicCmCloseCallSendChannel( IN PVCCB pVc );
VOID nicCmMakeCallComplete ( NDIS_WORK_ITEM* pMakeCallCompleteWorkItem, IN PVOID Context );
VOID nicCmMakeCallCompleteFailureCleanUp( IN OUT PVCCB pVc );
NDIS_STATUS nicCmMakeCallInitRecvChannelVc( IN OUT PVCCB pVc );
NDIS_STATUS nicCmMakeCallInitSendChannelVc( IN OUT PVCCB pVc );
NDIS_STATUS nicCmMakeCallInitSendRecvChannelVc( IN OUT PVCCB pVc );
NDIS_STATUS nicCmMakeCallInitEthernet( IN PVCCB pVc );
NDIS_STATUS nicCmMakeCallSendChannel ( IN PVCCB pVc );
NDIS_STATUS nicCmMakeCallMultiChannel ( IN PVCCB pVc );
NDIS_STATUS nicAllocateRequestedChannelMakeCallComplete ( IN PADAPTERCB pAdapter, IN PCHANNEL_VCCB pChannelVc, IN OUT PULONG pChannel );
NDIS_STATUS nicCmMakeCallInitRecvFIFOVc( IN OUT PVCCB pVc );
NDIS_STATUS nicCmMakeCallInitSendFIFOVc( IN OUT PVCCB pVc );
VOID nicDereferenceAF( IN AFCB* pAF );
ULONG nicGetMaxPayLoadForSpeed( IN ULONG Speed, IN ULONG mtu );
VOID nicInactiveCallCleanUp( IN VCCB* pVc );
NDIS_STATUS nicInitRecvFifoDataStructures ( IN PRECVFIFO_VCCB pRecvFIFOVc );
VOID nicUnInitRecvFifoDataStructures ( IN PRECVFIFO_VCCB pRecvFIFOVc );
VOID nicFreeAF( IN AFCB* pAF );
VOID nicReferenceAF( IN AFCB* pAF );
NDIS_STATUS nicCmQueryInformation( IN NDIS_HANDLE CallMgrAfContext, IN NDIS_HANDLE CallMgrVcContext, IN NDIS_HANDLE CallMgrPartyContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesWritten, OUT PULONG BytesNeeded );
NDIS_STATUS nicCmSetInformation( IN NDIS_HANDLE CallMgrAfContext, IN NDIS_HANDLE CallMgrVcContext, IN NDIS_HANDLE CallMgrPartyContext, IN NDIS_OID Oid, IN PVOID InformationBuffer, IN ULONG InformationBufferLength, OUT PULONG BytesRead, OUT PULONG BytesNeeded );
NDIS_STATUS nicGetActiveRemoteNode ( PADAPTERCB pAdpater, PREMOTE_NODE* ppRemoteNodePdoCb );
NDIS_STATUS nicChangeChannelChar ( PVCCB pVc, PNIC1394_CHANNEL_CHARACTERISTICS pMcChar );
NDIS_STATUS nicCmGenericMakeCallInitChannels ( IN PCHANNEL_VCCB pChannelVc, VC_SEND_RECEIVE VcType );
NDIS_STATUS nicCmGenericMakeCallInitFifo ( IN PVCCB pVc, VC_SEND_RECEIVE VcType );
NDIS_STATUS nicCmGenericMakeCallMutilChannel ( IN PVCCB pVc, VC_SEND_RECEIVE VcType );
NDIS_STATUS nicCmGenericMakeCallEthernet( IN PVCCB pVc, IN VC_SEND_RECEIVE VcType );
VOID nicInterceptMakeCallParameters ( PCO_MEDIA_PARAMETERS pMedia );
NDIS_STATUS nicQueryRemoteNodeCaps ( IN PADAPTERCB pAdapter, IN PREMOTE_NODE pRemoteNode, OUT PULONG pSpeed, OUT PULONG pMaxBufferSize, OUT PULONG pMaxRec );
UINT nicSpeedFlagsToSCode( IN UINT SpeedFlags );
|