442 lines
7.9 KiB
C
442 lines
7.9 KiB
C
//
|
|
// 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
|
|
);
|
|
|
|
|
|
#if TODO
|
|
VOID
|
|
nicTimerQTerminateComplete(
|
|
IN TIMERQ* pTimerQ,
|
|
IN VOID* pContext );
|
|
#endif // TODO
|
|
|
|
|
|
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
|
|
);
|
|
|