summaryrefslogblamecommitdiffstats
path: root/private/ntos/ndis/digi/pcimac/adapter.h
blob: 9a6f3b43e13871b1bc33626da8fb83062ce9ca86 (plain) (tree)






























































































































































































































                                                                                                    
/*
 * ADAPTER.H - NDIS Adapter Interface, main include file
 */


#ifndef _ADAPTER_
#define _ADAPTER_

#define		PCIMAC_KEY_BOARDTYPE			"BoardType"
#define		PCIMAC_KEY_BASEIO				"IOBaseAddress"
#define		PCIMAC_KEY_BASEMEM				"MemoryMappedBaseAddress"
#define		PCIMAC_KEY_BOARDNAME			"BoardName"
#define		PCIMAC_KEY_LINENAME				"LineName"
#define		PCIMAC_KEY_NUMLINES				"NumberOfLines"
#define		PCIMAC_KEY_IDPFILENAME			"IDPImageFileName"
#define		PCIMAC_KEY_SWITCHSTYLE			"SwitchStyle"
#define		PCIMAC_KEY_TERMINALMANAGEMENT	"TerminalManagement"
#define		PCIMAC_KEY_NUMLTERMS			"LogicalTerminals"
#define		PCIMAC_KEY_TEI					"TEI"
#define		PCIMAC_KEY_SPID					"SPID"
#define		PCIMAC_KEY_ADDRESS				"Address"
#define		PCIMAC_KEY_LINE					"Line"
#define		PCIMAC_KEY_LTERM				"LTerm"
#define		PCIMAC_KEY_WAITFORL3			"WaitForL3"
#define		PCIMAC_KEY_GENERICDEFINES		"GenericDefines"

/* global driver obect */
typedef struct tagDRIVER_BLOCK
{
	NDIS_HANDLE			NdisMacHandle;
	NDIS_HANDLE			NdisWrapperHandle;
	struct _ADAPTER*	AdapterTbl[MAX_ADAPTERS_IN_SYSTEM];
	ULONG				InDriverFlag;
	ULONG				NumberOfAdaptersInSystem;
	ULONG				NextAdapterToPoll;
	struct _ADAPTER*	CurrentAdapter;
	NDIS_SPIN_LOCK		lock;
} DRIVER_BLOCK;

typedef struct _ADAPTER
{
	NDIS_HANDLE		Handle;
//	ULONG			InDriverFlag;
//	NDIS_SPIN_LOCK	InDriverLock;
	CHAR			Name[64];
	ULONG			BaseIO;
	PVOID			VBaseIO;
	ULONG			BaseMem;
	PVOID			VBaseMem;
	ULONG			BoardType;
	ULONG			TapiBaseID;
	ULONG			NumberOfIddOnAdapter;
	ULONG			LastIddPolled;
	VOID			*TapiLineInfo[MAX_CM_PER_ADAPTER];	// 8
	VOID			*IddTbl[MAX_IDD_PER_ADAPTER];		// 4
	VOID			*CmTbl[MAX_CM_PER_ADAPTER];			// 8
	VOID			*MtlTbl[MAX_MTL_PER_ADAPTER];		// 8
	NDIS_MINIPORT_TIMER		IddPollTimer;				// idd polling timer
	NDIS_MINIPORT_TIMER		MtlPollTimer;				// mtl polling timer
	NDIS_MINIPORT_TIMER		CmPollTimer;				// cm polling timer
}ADAPTER;

typedef struct _CONFIGPARAM
{
	INT		ParamType;
	CHAR	String[512];
	ULONG	StringLen;
	ULONG	Value;
	ULONG	MustBePresent;
	NDIS_HANDLE ConfigHandle;
	NDIS_HANDLE	AdapterHandle;
} CONFIGPARAM;

VOID	StopTimers(ADAPTER* Adapter);
VOID	StartTimers(ADAPTER* Adapter);

//VOID
//SetInDriverFlag(
//	ADAPTER *Adapter
//	);
//
//VOID
//ClearInDriverFlag(
//	ADAPTER *Adapter
//	);
//
//ULONG
//CheckInDriverFlag(
//	ADAPTER *Adapter
//	);

VOID
SetInDriverFlag(
	ADAPTER	*Adapter
	);

VOID
ClearInDriverFlag(
	ADAPTER *Adapter
	);

ULONG
CheckInDriverFlag(
	ADAPTER *Adapter
	);

BOOLEAN
PcimacCheckForHang(
	NDIS_HANDLE AdapterContext
	);

VOID
PcimacHalt(
	NDIS_HANDLE AdapterContext
	);

NDIS_STATUS
PcimacInitialize(
	PNDIS_STATUS	OpenErrorStatus,
	PUINT			SelectMediumIndex,
	PNDIS_MEDIUM	MediumArray,
	UINT			MediumArraySize,
	NDIS_HANDLE		AdapterHandle,
	NDIS_HANDLE		WrapperConfigurationContext
	);

NDIS_STATUS
PcimacSetQueryInfo(
	NDIS_HANDLE	AdapterContext,
	NDIS_OID	Oid,
	PVOID		InfoBuffer,
	ULONG		InfoBufferLen,
	PULONG		BytesWritten,
	PULONG		BytesNeeded
	);

NDIS_STATUS
PcimacReconfigure(
	PNDIS_STATUS	OpenErrorStatus,
	NDIS_HANDLE		AdapterContext,
	NDIS_HANDLE		WrapperConfigurationContext
	);

NDIS_STATUS
PcimacReset(
    PBOOLEAN AddressingReset,
    NDIS_HANDLE AdapterContext
	);

NDIS_STATUS
PcimacSend(
	NDIS_HANDLE			MacBindingHandle,
	NDIS_HANDLE			LinkContext,
	PNDIS_WAN_PACKET	WanPacket
	);

INT
IoEnumAdapter(
	VOID *cmd_1
	);

ADAPTER*
GetAdapterByIndex(
    ULONG   Index
    );

ULONG
EnumAdaptersInSystem(
	VOID
	);

ADAPTER*
GetNextAdapter(
	ADAPTER	*Adapter
	);

VOID
AdapterDestroy(
	ADAPTER	*Adapter
	);

NDIS_STATUS
WanOidProc(
	NDIS_HANDLE	AdapterContext,
	NDIS_OID	Oid,
	PVOID		InfoBuffer,
	ULONG		InfoBufferLen,
	PULONG		BytesReadWritten,
	PULONG		BytesNeeded
	);

NDIS_STATUS
TapiOidProc(
	NDIS_HANDLE	AdapterContext,
	NDIS_OID	Oid,
	PVOID		InfoBuffer,
	ULONG		InfoBufferLen,
	PULONG		BytesWritten,
	PULONG		BytesNeeded
	);

NDIS_STATUS
LanOidProc(
	NDIS_HANDLE	AdapterContext,
	NDIS_OID	Oid,
	PVOID		InfoBuffer,
	ULONG		InfoBufferLen,
	PULONG		BytesReadWritten,
	PULONG		BytesNeeded
	);


#if DIGIASSERT
#undef ASSERT
#define ASSERT( STRING )   \
   if( !(STRING) ) \
   {  \
      DbgPrint( "ASSERT failed: " #STRING "\nfile: %s, line %d\n", __FILE__, __LINE__ ); \
      DbgBreakPoint();  \
   }
#endif

#endif	/* _ADAPTER_ */