diff options
Diffstat (limited to 'private/ntos/ndis/testprot/inc/common.h')
-rw-r--r-- | private/ntos/ndis/testprot/inc/common.h | 835 |
1 files changed, 835 insertions, 0 deletions
diff --git a/private/ntos/ndis/testprot/inc/common.h b/private/ntos/ndis/testprot/inc/common.h new file mode 100644 index 000000000..eccf084b3 --- /dev/null +++ b/private/ntos/ndis/testprot/inc/common.h @@ -0,0 +1,835 @@ +// ------------------------------------- +// +// Copyright (c) 1991 Microsoft Corporation +// +// Module Name: +// +// common.h +// +// Abstract: +// +// Common definitions for Test Protocol driver and its control application. +// +// Author: +// +// Tomad Adams (tomad) 11-Mar-1991 +// +// Environment: +// +// Kernel mode, FSD +// +// Revision History: +// +// Sanjeev Katariya (sanjeevk) +// 4-19-1993 Added support for varying address length dependent on the media type +// Effected the structure CMD_ARGS +// +// Tim Wynsma (timothyw) +// 4-27-1994 Added support for performance testing +// 5-18-1994 1st round, global variable access +// 6-08-1994 Client-server model for performance tests +// +// ----------------------------------- + + +#include "defaults.h" + +// +// Define the type of member that the protocol will be running as. +// +// As a CLIENT the protocol is responsible for initiating the test, +// controlling the flow of the test, and keeping results. A SERVER +// merely loops packets back to the CLIENT in the manner specified +// by the test arguments. A protocol may act as BOTH a CLIENT and a +// Server. +// + +typedef enum _MEMBER_TYPE { + TP_CLIENT, + TP_SERVER, + BOTH +} MEMBER_TYPE; + +// +// Define the size of packets to be used in a test. +// +// Fixedsize means the all packets in the test will be of a fixedsize +// X, Randomsize means the all packets in the test will randomly range +// between a minimum packetsize and X, Cyclical means that packets of +// every size will be sent start at a minimum size and walking through +// all sizes until the maximum packetsize for the given media type +// has been reached. +// + +typedef enum _PACKET_TYPE { + FIXEDSIZE, + RANDOMSIZE, + CYCLICAL +} PACKET_TYPE; + + +// +// Define the different sizes of buffers a packet made be constructed with. +// +// Rand means the size of each buffer will be randomly selected from a +// range of zero to a , Small means the size of each buffer will be randomly +// selected from a range of zero to , Zeros and Ones mean that the size +// of each buffer will be selected the same way as Rand, however the will +// be a large number of zero or one byte buffers intersperced in each +// packet. Known means the each buffer in the packet is the same size. +// + +typedef enum _PACKET_MAKEUP { + RAND, + SMALL, + ZEROS, + ONES, + KNOWN +} PACKET_MAKEUP; + +// +// Define the method the Server will use to respond to each packet the +// CLIENT sends. +// +// No Response means the Server will never respond to the packets from the +// CLIENT, Full Response means the server will respond to every packet the +// CLIENT sends with a packet of the same size and data, Ack Every means the +// Server will send an acknowlegement packet after every from the CLIENT, Ack +// Every 10 means the Server will send an acknowlegement packet after every +// 10th packet from the CLIENT, Ack 10 Times means the Server will send 10 +// acknowlegement packets for every packet the CLIENT sends. +// + +typedef enum _RESPONSE_TYPE { + FULL_RESPONSE, + ACK_EVERY, + ACK_10_TIMES, + NO_RESPONSE +} RESPONSE_TYPE; + +// +// Define the delay between two consecutive packet sends to a given Server. +// +// The delay will either be a fixed number of iterations, or a random +// number of iterations. NOTE: That this will be changing to a fixed +// or random length of time in the future. +// + +typedef enum _INTERPACKET_DELAY { + FIXEDDELAY, + RANDOMDELAY +} INTERPACKET_DELAY; + + +// +// Registry typedefs. +// + +// +// Define the operation being asked to execute on the registry +// + +typedef enum _OPERATION { + ADD_KEY, + DELETE_KEY, + QUERY_KEY, + ADD_VALUE, + CHANGE_VALUE, + DELETE_VALUE, + QUERY_VALUE +} OPERATION; + +// +// Define the 4 possible registry DataBases +// + +typedef enum _KEYDBASE { + CLASSES_ROOT, + CURRENT_USER, + LOCAL_MACHINE, + USERS +} KEYDBASE; + +// +// Define the various types a value can be +// + +typedef enum _VALUETYPE { + BINARY, + DWORD_REGULAR, + DWORD_LITTLE_ENDIAN, + DWORD_BIG_ENDIAN, + EXPAND_SZ, + LINK, + MULTI_SZ, + NONE, + RESOURCE_LIST, + SZ +} VALUETYPE; + +// +// Tpctl Command Codes +// + +#define CMD_ERR 0x00000000 // an invalid command was entered. +#define GETSTATS 0x00000001 // get the test statistics. +#define DISPSTATS 0x00000002 // continuously get test statistics. +#define VERBOSE 0x00000003 // toggle verbose mode on and off. +#define SETENV 0x00000004 // set the driver's test environment vars. +#define READSCRIPT 0x00000005 // read a script file. +#define BEGINLOGGING 0x00000006 // begin logging command line cmds. +#define ENDLOGGING 0x00000007 // end logging command line cmds. +#define WAIT 0x00000008 // wait for X msecs. +#define GO 0x00000009 // Tell remote protocol to continue. +#define PAUSE 0x0000000A // Pause the local protocol. +#define LOAD 0x0000000B // call NtLoad to load a driver +#define UNLOAD 0x0000000C // call NtUnload to unload a driver +#define OPEN 0x0000000D // open a MAC adapter. +#define CLOSE 0x0000000E // close a MAC adapter. +#define SETPF 0x0000000F // set the packet filter on the MAC. +#define SETLA 0x00000010 // set the lookahead buffer size. +#define DELMA 0x00000011 // del a multicast address from the MAC. +#define ADDMA 0x00000012 // add a multicast address to the MAC. +#define SETFA 0x00000013 // set a functional address on the MAC. +#define SETGA 0x00000014 // set a group address on the MAC. +#define QUERYINFO 0x00000015 // query MAC information. +#define QUERYSTATS 0x00000016 // query GLOBAL MAC information. +#define SETINFO 0x00000017 // set MAC information. +#define RESET 0x00000018 // reset the MAC adapter. +#define SEND 0x00000019 // send a packet or packets. +#define STOPSEND 0x0000001A // stop sending packets. +#define WAITSEND 0x0000001B // wait for send to end, display results. +#define RECEIVE 0x0000001C // start accepting packets. +#define STOPREC 0x0000001D // stop accepting packets. +#define GETEVENTS 0x0000001E // get events off the EVENT_QUEUE. +#define STRESS 0x0000001F // run a stress test, (CLIENT or BOTH). +#define STRESSSERVER 0x00000020 // act as a SERVER for a stress test. +#define ENDSTRESS 0x00000021 // end a stress test. +#define WAITSTRESS 0x00000022 // wait for stress to end, display results. +#define CHECKSTRESS 0x00000023 // see if stress has ended, if so display +#define BREAKPOINT 0x00000024 // call DbgBreakPoint. +#define QUIT 0x00000025 // quit TPCTL.EXE. +#define HELP 0x00000026 // print the help screen + +// +// New Tpctl Command Codes +// + +#define SHELL 0x00000027 +#define RECORDINGENABLE 0x00000028 +#define RECORDINGDISABLE 0x00000029 +#define DISABLE 0x0000002A +#define ENABLE 0x0000002B +#define REGISTRY 0x0000002C + +// performance testing + +#define PERFSERVER 0x0000002D +#define PERFCLIENT 0x0000002E +#define PERFABORT 0x0000002F // only used in TP_CONTROL_CODE call + +// globalvars + +#define SETGLOBAL 0x00000030 + + +#define CMD_COMPLETED 0xFFFFFFFF // skip the second half of cmd processing. + + + +// +// NtDeviceIoControlFile IoControlCode values for this device. +// +// Warning: Remember that the low two bits of the code represent the +// method, and specify how the input and output buffers are +// passed to the driver via NtDeviceIoControlFile() +// +// + +#define IOCTL_METHOD 2 + +#define IOCTL_TP_BASE FILE_DEVICE_TRANSPORT + +#define TP_CONTROL_CODE(request,method) \ + ((IOCTL_TP_BASE)<<16 | (request<<2) | method) + + +#define IOCTL_TP_GETSTATS TP_CONTROL_CODE( GETSTATS, IOCTL_METHOD ) +#define IOCTL_TP_DISPSTATS TP_CONTROL_CODE( DISPSTATS, IOCTL_METHOD ) +#define IOCTL_TP_SETENV TP_CONTROL_CODE( SETENV, IOCTL_METHOD ) +#define IOCTL_TP_GO TP_CONTROL_CODE( GO, IOCTL_METHOD ) +#define IOCTL_TP_PAUSE TP_CONTROL_CODE( PAUSE, IOCTL_METHOD ) +#define IOCTL_TP_OPEN TP_CONTROL_CODE( OPEN, IOCTL_METHOD ) +#define IOCTL_TP_CLOSE TP_CONTROL_CODE( CLOSE, IOCTL_METHOD ) +#define IOCTL_TP_SETPF TP_CONTROL_CODE( SETPF, IOCTL_METHOD ) +#define IOCTL_TP_SETLA TP_CONTROL_CODE( SETLA, IOCTL_METHOD ) +#define IOCTL_TP_ADDMA TP_CONTROL_CODE( ADDMA, IOCTL_METHOD ) +#define IOCTL_TP_DELMA TP_CONTROL_CODE( DELMA, IOCTL_METHOD ) +#define IOCTL_TP_SETFA TP_CONTROL_CODE( SETFA, IOCTL_METHOD ) +#define IOCTL_TP_SETGA TP_CONTROL_CODE( SETGA, IOCTL_METHOD ) +#define IOCTL_TP_QUERYINFO TP_CONTROL_CODE( QUERYINFO, IOCTL_METHOD ) +#define IOCTL_TP_QUERYSTATS TP_CONTROL_CODE( QUERYSTATS, IOCTL_METHOD ) +#define IOCTL_TP_SETINFO TP_CONTROL_CODE( SETINFO, IOCTL_METHOD ) +#define IOCTL_TP_RESET TP_CONTROL_CODE( RESET, IOCTL_METHOD ) +#define IOCTL_TP_SEND TP_CONTROL_CODE( SEND, IOCTL_METHOD ) +#define IOCTL_TP_STOPSEND TP_CONTROL_CODE( STOPSEND, IOCTL_METHOD ) +#define IOCTL_TP_RECEIVE TP_CONTROL_CODE( RECEIVE, IOCTL_METHOD ) +#define IOCTL_TP_STOPREC TP_CONTROL_CODE( STOPREC, IOCTL_METHOD ) +#define IOCTL_TP_GETEVENTS TP_CONTROL_CODE( GETEVENTS, IOCTL_METHOD ) +#define IOCTL_TP_STRESS TP_CONTROL_CODE( STRESS, IOCTL_METHOD ) +#define IOCTL_TP_STRESSSERVER TP_CONTROL_CODE( STRESSSERVER, IOCTL_METHOD ) +#define IOCTL_TP_ENDSTRESS TP_CONTROL_CODE( ENDSTRESS, IOCTL_METHOD ) +#define IOCTL_TP_BREAKPOINT TP_CONTROL_CODE( BREAKPOINT, IOCTL_METHOD ) +#define IOCTL_TP_TRANSFERDATA TP_CONTROL_CODE( TRANSFERDATA, IOCTL_METHOD ) +#define IOCTL_TP_QUIT TP_CONTROL_CODE( QUIT, IOCTL_METHOD ) + +// performance testing + +#define IOCTL_TP_PERF_SERVER TP_CONTROL_CODE( PERFSERVER, IOCTL_METHOD) +#define IOCTL_TP_PERF_CLIENT TP_CONTROL_CODE( PERFCLIENT, IOCTL_METHOD) +#define IOCTL_TP_PERF_ABORT TP_CONTROL_CODE( PERFABORT, IOCTL_METHOD) + +// +// The following structure contains the arguments passed +// to the driver for each of the commands. +// +// NOTE: Any additions to arguments in this structure must +// be mapped in the parse options structure TESTPARAMS for +// the given command, and in the TpctlInitCommandBuffer +// routine for the given command. +// +// Current types of addresses in use +// +// 1. STATION ADDRESS 2. STRESS MULTICAST ADDRESS +// 3. PAUSE_GO REMOTE ADDRESS 4 MULTICAST ADDRESS +// 5. GROUP ADDRESS 6. FUNCTIONAL ADDRESS +// 7. DESTINATION ADDRESS 8. RESEND ADDRESS +// +// These can all be classified under two headings +// +// CURRENT ADDRESS LENGTHS(SOURCE, DESTINATION) and +// FUNCTIONAL/GROUP ADDRESS LENGTHS which are dependencies of the first category. +// +// Functional address length will always be (CURRENT_ADDRESS_LEN*10)/15 +// e.g. When the address length is 6, FA's are 4 +// WHen the address length is 2, FA's are 1 +// +#define TPCTL_OPTION_SIZE 14 + +typedef struct _CMD_ARGS { + + ULONG CmdCode; + ULONG OpenInstance; + + + + union _ARGS { + + // + // SETENV command environment variable arguments. + // + + struct _ENV { + + ULONG WindowSize; + ULONG RandomBufferNumber; + UCHAR StressAddress[ADDRESS_LENGTH]; + UCHAR ResendAddress[ADDRESS_LENGTH]; + ULONG StressDelayInterval; + ULONG UpForAirDelay; + ULONG StandardDelay; + + } ENV; + + // + // READSCRIPT script and logging file arguments. + // + + struct _FILES { + + UCHAR ScriptFile[MAX_FILENAME_LENGTH]; + UCHAR LogFile[MAX_FILENAME_LENGTH]; + + } FILES; + + // + // RECORDING script file + // + + struct _RECORD { + + UCHAR ScriptFile[MAX_FILENAME_LENGTH]; + + } RECORD; + + // + // Registry operations + // + + struct _REGISTRY_ENTRY { + + UCHAR SubKey[MAX_KEYNAME_LENGTH] ; + UCHAR SubKeyClass[MAX_CLASS_LENGTH] ; + UCHAR SubKeyValueName[MAX_VALUENAME_LENGTH] ; + UCHAR SubKeyValue[MAX_VALUE_LENGTH] ; + OPERATION OperationType; + KEYDBASE KeyDatabase ; + VALUETYPE ValueType ; + + } REGISTRY_ENTRY; + + // + // PAUSE and GO protocol arguments. + // + + struct _PAUSE_GO { + + UCHAR RemoteAddress[ADDRESS_LENGTH]; + ULONG TestSignature; + ULONG UniqueSignature; + + } PAUSE_GO; + + // + // OPEN command adapter name argument. + // + + struct _OPEN_ADAPTER + { + UCHAR AdapterName[MAX_ADAPTER_NAME_LENGTH]; + BOOLEAN NoArcNet; + } OPEN_ADAPTER; + + UCHAR DriverName[MAX_ADAPTER_NAME_LENGTH]; + + // + // QUERYINFO command information OID. + // + + struct _TPQUERY { + + NDIS_OID OID; + //NDIS_REQUEST_TYPE RequestType; + + } TPQUERY; + + // + // QUERYSTATS command Device name and OID to query. + // + + struct _TPQUERYSTATS { + + UCHAR DeviceName[MAX_ADAPTER_NAME_LENGTH]; + NDIS_OID OID; + + } TPQUERYSTATS; + + // + // SETINFO command information class and info. + // + + struct _TPSET { + + NDIS_OID OID; + + union _U { + + ULONG PacketFilter; + ULONG LookaheadSize; + UCHAR MulticastAddress[MAX_MULTICAST_ADDRESSES][ADDRESS_LENGTH]; + UCHAR FunctionalAddress[FUNCTIONAL_ADDRESS_LENGTH]; + UCHAR GroupAddress[FUNCTIONAL_ADDRESS_LENGTH]; + + } U; + + ULONG NumberMultAddrs; + + } TPSET; + + // + // SEND command packet definitions. + // + + struct _TPSEND { + + UCHAR DestAddress[ADDRESS_LENGTH]; + ULONG PacketSize; + ULONG NumberOfPackets; + UCHAR ResendAddress[ADDRESS_LENGTH]; + + } TPSEND; + + // + // PERFSEND command packet definitions + // + + struct _TPPERF + { + UCHAR PerfServerAddr[ADDRESS_LENGTH]; + UCHAR PerfSendAddr[ADDRESS_LENGTH]; + ULONG PerfPacketSize; + ULONG PerfNumPackets; + ULONG PerfDelay; + ULONG PerfMode; + } TPPERF; + + // + // STRESS command test arguments. + // + + struct _TPSTRESS { + + MEMBER_TYPE MemberType; + PACKET_TYPE PacketType; + ULONG PacketSize; + PACKET_MAKEUP PacketMakeUp; + RESPONSE_TYPE ResponseType; + INTERPACKET_DELAY DelayType; + ULONG DelayLength; + ULONG TotalIterations; + ULONG TotalPackets; + ULONG WindowEnabled; + ULONG DataChecking; + ULONG PacketsFromPool; + UCHAR AdapterName[MAX_ADAPTER_NAME_LENGTH]; + + } TPSTRESS; + + // + // HELP Command to print the help message for. + // + + UCHAR CmdName[MAX_FILENAME_LENGTH]; + + } ARGS; + + + // + // STARTCHANGE + // + UCHAR CurrentAddressLength; + UCHAR CurrentFALength; + + UCHAR TpctlOptions[TPCTL_OPTION_SIZE]; + // + // STOPCHANGE + // + +} CMD_ARGS, *PCMD_ARGS; + +// +// User App command data struct to hold per command info. +// + +typedef struct _CMD_CODE { + ULONG CmdCode; + PSZ CmdName; + PSZ CmdAbbr; +} CMD_CODE, * PCMD_CODE; + +#define NUM_COMMANDS sizeof( CommandCode ) / sizeof( CommandCode[0] ) + +// +// Set Environment Command Variables +// + +typedef struct _ENVIRONMENT_VARIABLES { + ULONG WindowSize; + ULONG RandomBufferNumber; + UCHAR StressAddress[ADDRESS_LENGTH]; + UCHAR ResendAddress[ADDRESS_LENGTH]; + ULONG StressDelayInterval; + ULONG UpForAirDelay; + ULONG StandardDelay; + ULONG MulticastListSize; +} ENVIRONMENT_VARIABLES, * PENVIRONMENT_VARIABLES; + +// +// The pointers to these structures need to be defined as UNALIGNED for MIPS. +// + +// +// Counters used to measure performance and results of a test run. +// + +typedef struct _GLOBAL_COUNTERS { + ULONG Sends; + ULONG SendComps; + ULONG Receives; + ULONG ReceiveComps; + ULONG CorruptRecs; + ULONG InvalidPacketRecs; +} GLOBAL_COUNTERS; +typedef GLOBAL_COUNTERS UNALIGNED *PGLOBAL_COUNTERS; + +// +// Counters for a given Open Instance +// + +typedef struct _INSTANCE_COUNTERS { + ULONG Sends; + ULONG SendPends; + ULONG SendComps; + ULONG SendFails; + + ULONG Receives; + ULONG ReceiveComps; + ULONG CorruptRecs; + ULONG XferData; + + ULONG XferDataPends; + ULONG XferDataComps; + ULONG XferDataFails; +} INSTANCE_COUNTERS; +typedef INSTANCE_COUNTERS UNALIGNED *PINSTANCE_COUNTERS; + +// +// The following data structure are use to pass specific test results +// up to the application from the driver. +// + +typedef struct _SERVER_RESULTS { + ULONG Signature; + UCHAR Address[ADDRESS_LENGTH]; + ULONG OpenInstance; + BOOLEAN StatsRcvd; + INSTANCE_COUNTERS Instance; + INSTANCE_COUNTERS S_Instance; + GLOBAL_COUNTERS S_Global; +} SERVER_RESULTS, *PSERVER_RESULTS; + +#define MAX_SERVERS 10 + +typedef struct _STRESS_RESULTS { + ULONG Signature; + UCHAR Address[ADDRESS_LENGTH]; + ULONG OpenInstance; + ULONG NumServers; + ULONG PacketsPerSecond; + GLOBAL_COUNTERS Global; + SERVER_RESULTS Servers[MAX_SERVERS]; +} STRESS_RESULTS, *PSTRESS_RESULTS; + +typedef struct _SEND_RECEIVE_RESULTS { + ULONG Signature; + BOOLEAN ResultsExist; + INSTANCE_COUNTERS Counters; +} SEND_RECEIVE_RESULTS, *PSEND_RECEIVE_RESULTS; + +typedef struct _PERF_RESULTS +{ + ULONG Signature; + BOOLEAN ResultsExist; + ULONG Mode; + ULONG PacketSize; + ULONG PacketCount; + ULONG Milliseconds; + ULONG Sends; + ULONG SendFails; + ULONG Receives; + ULONG Restarts; + ULONG SelfReceives; + ULONG S_Milliseconds; + ULONG S_Sends; + ULONG S_SendFails; + ULONG S_Receives; + ULONG S_Restarts; + ULONG S_SelfReceives; +} PERF_RESULTS, *PPERF_RESULTS; + + +typedef enum _TP_EVENT_TYPE { + CompleteOpen, + CompleteClose, + CompleteSend, + CompleteTransferData, + CompleteReset, + CompleteRequest, + IndicateReceive, + IndicateReceiveComplete, + IndicateStatus, + IndicateStatusComplete, + Unknown +} TP_EVENT_TYPE; + +typedef struct _EVENT_RESULTS { + ULONG Signature; + TP_EVENT_TYPE TpEventType; + BOOLEAN QueueOverFlowed; + //TP_EVENT_INFO TpEventInfo; +} EVENT_RESULTS, * PEVENT_RESULTS; + +typedef struct _REQUEST_RESULTS { + ULONG Signature; + ULONG IoControlCode; + BOOLEAN RequestPended; + NDIS_STATUS RequestStatus; + NDIS_REQUEST_TYPE NdisRequestType; + NDIS_OID OID; + UINT BytesReadWritten; + UINT BytesNeeded; + NDIS_STATUS OpenRequestStatus; + UINT InformationBufferLength; + UCHAR InformationBuffer[1]; +} REQUEST_RESULTS, *PREQUEST_RESULTS; + +#define IOCTL_BUFFER_SIZE 0x200 + +#define OPEN_RESULTS_SIGNATURE 0x12345678 +#define CLOSE_RESULTS_SIGNATURE 0x23456789 +#define RESET_RESULTS_SIGNATURE 0x34567890 +#define REQUEST_RESULTS_SIGNATURE 0x45678901 + +#define EVENT_RESULTS_SIGNATURE 0x56789012 +#define SENDREC_RESULTS_SIGNATURE 0x67890123 +#define STRESS_RESULTS_SIGNATURE 0x89012345 +#define PERF_RESULTS_SIGNATURE 0x90123456 + +// +// Create two sets of debug macros to allow printing of debug messages, +// and enabling ASSERT that will be checking the values and pointers +// returned by the various ndis indications, and completions. +// + +#if DBG + +#define IF_TPDBG(flags) \ + if ( TpDebug & ( flags )) + +#define TP_ASSERT(equality) { \ + if (!(equality)) { \ + TpPrint0("ASSERT: "); \ + TpPrint0(#equality); \ + TpBreakPoint(); } } +// +// +// if ( TpAssert == TRUE ) { +// ASSERT(equality); +// } +// } + +// +// DEBUGGING SUPPORT. IF_TPDBG is a macro that is turned on at compile +// time to enable debugging code in the system. If this is turned on, then +// you can use the IF_TPDBG(flags) macro in the TP code to selectively +// enable a piece of debugging code in the transport. This macro tests +// TpDebug, a global ULONG defined in TPDRVR.C. +// + +#define TP_DEBUG_NDIS_CALLS 0x00000001 // print Ndis Status returns +#define TP_DEBUG_NDIS_ERROR 0x00000002 // print Ndis Error returns +#define TP_DEBUG_STATISTICS 0x00000004 // print stress statistics +#define TP_DEBUG_DATA 0x00000008 // print Data Corruption msgs + +#define TP_DEBUG_DISPATCH 0x00000010 // TpDispatch routines +#define TP_DEBUG_IOCTL_ARGS 0x00000020 // print args from the ioctl + +#define TP_DEBUG_NT_STATUS 0x00000100 // print !success NT Status returns +#define TP_DEBUG_DPC 0x00000200 // print DPC problem info +#define TP_DEBUG_INITIALIZE 0x00000400 // print init error info +#define TP_DEBUG_RESOURCES 0x00000800 // print resource allocation errors + +#define TP_DEBUG_BREAKPOINT 0x00001000 // enable and disable DbgBreakPoints + +#define TP_DEBUG_INFOLEVEL_1 0x00010000 // print information. Level 1 +#define TP_DEBUG_INFOLEVEL_2 0x00020000 // through 4 represent different +#define TP_DEBUG_INFOLEVEL_3 0x00040000 // types of information where +#define TP_DEBUG_INFOLEVEL_4 0x00080000 // Level 1 is purely informational + // Level 2 is corrective action information + // Level 3 is sequential action information + // Level 4 Reserved. Currently undefined. + +#define TP_DEBUG_ALL 0xFFFFFFFF // turns on all flags + +extern ULONG TpDebug; // in TPDRVR.C. +extern BOOLEAN TpAssert; // in TPDRVR.C. + +#define TpPrint0(fmt) DbgPrint(fmt) +#define TpPrint1(fmt,v1) DbgPrint(fmt,v1) +#define TpPrint2(fmt,v1,v2) DbgPrint(fmt,v1,v2) +#define TpPrint3(fmt,v1,v2,v3) DbgPrint(fmt,v1,v2,v3) +#define TpPrint4(fmt,v1,v2,v3,v4) DbgPrint(fmt,v1,v2,v3,v4) +#define TpPrint5(fmt,v1,v2,v3,v4,v5) DbgPrint(fmt,v1,v2,v3,v4,v5) +#define TpPrint6(fmt,v1,v2,v3,v4,v5,v6) DbgPrint(fmt,v1,v2,v3,v4,v5,v6) + +#define TpBreakPoint() DbgBreakPoint() + +#else // NO DBG + +// +// Disable debugging IFs and printing +// + +#define IF_TPDBG(flags) \ + if (0) + +#define TP_ASSERT(equality) \ + if (0) + +#define TpPrint0(fmt) +#define TpPrint1(fmt,v1) +#define TpPrint2(fmt,v1,v2) +#define TpPrint3(fmt,v1,v2,v3) +#define TpPrint4(fmt,v1,v2,v3,v4) +#define TpPrint5(fmt,v1,v2,v3,v4,v5) +#define TpPrint6(fmt,v1,v2,v3,v4,v5,v6) + +#define TpBreakPoint() + +#endif // DBG + +// +// define null packet type for command line interface +// + +#define NDIS_PACKET_TYPE_NONE 0x00 + + +// +// Test Protocol Status Returns +// + +// +// No stress servers found for a stress test. +// + +#define TP_STATUS_NO_SERVERS ((NDIS_STATUS)0x4001FFFFL) + +// +// No events on the event queue. +// + +#define TP_STATUS_NO_EVENTS ((NDIS_STATUS)0x4001FFFEL) + +// +// Go or Pause Timed out with out receiving correct response. +// + +#define TP_STATUS_TIMEDOUT ((NDIS_STATUS)0x4001FFFDL) + +// +// OID Info structure containing the size of the oid info and what +// the valid uses of the structure are: i.e. querying and setting +// info for that OID. +// + +typedef struct _OID_INFO { + NDIS_OID Oid; + ULONG Length; + BOOLEAN QueryInfo; + BOOLEAN SetInfo; + BOOLEAN QueryStats; +} OID_INFO, * POID_ONFO; + +extern OID_INFO OidArray[]; + +#define NUM_OIDS sizeof( OidArray ) / sizeof( OidArray[0] ) + +ULONG +TpLookUpOidInfo( + IN NDIS_OID RequestOid + ); + + + + |