1511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
2511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Copyright (c) 1993,1994
3511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      Texas A&M University.  All rights reserved.
4511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
5511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Redistribution and use in source and binary forms, with or without
6511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * modification, are permitted provided that the following conditions
7511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * are met:
8511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 1. Redistributions of source code must retain the above copyright
9511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    notice, this list of conditions and the following disclaimer.
10511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 2. Redistributions in binary form must reproduce the above copyright
11511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    notice, this list of conditions and the following disclaimer in the
12511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    documentation and/or other materials provided with the distribution.
13511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 3. All advertising materials mentioning features or use of this software
14511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    must display the following acknowledgement:
15511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      This product includes software developed by Texas A&M University
16511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *      and its contributors.
17511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * 4. Neither the name of the University nor the names of its contributors
18511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    may be used to endorse or promote products derived from this software
19511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *    without specific prior written permission.
20511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
21511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * THIS SOFTWARE IS PROVIDED BY THE UNIVERSITY AND CONTRIBUTORS ``AS IS'' AND
22511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * ARE DISCLAIMED.  IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE
25511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
27511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
28511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
29511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
30511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * SUCH DAMAGE.
32511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
33511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Developers:
34511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *             David K. Hess, Douglas Lee Schales, David R. Safford
35511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *
36511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Heavily modified for Metaware HighC + GNU C 2.8+
37511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *             Gisle Vanem 1998
38511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
39511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
40511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifndef __PCAP_NDIS_H
41511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define __PCAP_NDIS_H
42511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
43511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#if defined (__HIGHC__)
44511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define pascal          _CC(_CALLEE_POPS_STACK & ~_REVERSE_PARMS) /* calling convention */
45511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define CALLBACK(foo)   pascal WORD foo
46511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define PAS_PTR(x,arg)  typedef FAR WORD pascal (*x) arg
47511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define GUARD()         _inline (0x9C,0xFA)   /* pushfd, cli */
48511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define UNGUARD()       _inline (0x9D)        /* popfd */
49511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define FAR             _far
50511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
51511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined(__GNUC__)
52511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define CALLBACK(foo)   WORD foo __attribute__((stdcall))
53511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define PAS_PTR(x,arg)  typedef WORD (*x) arg __attribute__((stdcall))
54511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define GUARD()         __asm__ __volatile__ ("pushfd; cli")
55511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define UNGUARD()       __asm__ __volatile__ ("popfd")
56511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define FAR
57511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
58511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined (__TURBOC__)
59511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define CALLBACK(foo)   WORD pascal foo
60511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define PAS_PTR(x,arg)  typedef WORD pascal (_far *x) arg
61511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define GUARD()         _asm { pushf; cli }
62511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define UNGUARD()       _asm { popf }
63511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define FAR             _far
64511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
65511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#elif defined (__WATCOMC__)
66511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define CALLBACK(foo)   WORD pascal foo
67511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define PAS_PTR(x,arg)  typedef WORD pascal (_far *x) arg
68511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define GUARD()         _disable()
69511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define UNGUARD()       _enable()
70511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define FAR             _far
71511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
72511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
73511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #error Unsupported compiler
74511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
75511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
76511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
77511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
78511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *  Forwards
79511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
80511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _ReqBlock;
81511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _TxBufDescr;
82511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallstruct _TDBufDescr;
83511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
84511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
85511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * Protocol Manager API
86511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
87511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (ProtMan, (struct _ReqBlock FAR*, WORD));
88511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
89511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
90511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * System request
91511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
92511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (SystemRequest, (DWORD, DWORD, WORD, WORD, WORD));
93511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
94511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
95511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall * MAC API
96511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
97511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (TransmitChain, (WORD, WORD, struct _TxBufDescr FAR*, WORD));
98511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (TransferData,  (WORD*,WORD, struct _TDBufDescr FAR*, WORD));
99511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (Request,       (WORD, WORD, WORD, DWORD, WORD, WORD));
100511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (ReceiveRelease,(WORD, WORD));
101511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (IndicationOn,  (WORD));
102511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallPAS_PTR (IndicationOff, (WORD));
103511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
104511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
105511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
106511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_NOT_INSTALLED  = 0,
107511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_FAILED_DIAG    = 1,
108511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_FAILED_CONFIG  = 2,
109511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_HARD_FAULT     = 3,
110511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_SOFT_FAULT     = 4,
111511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_OK             = 7,
112511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HARDWARE_MASK           = 0x0007,
113511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        MAC_BOUND               = 0x0008,
114511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        MAC_OPEN                = 0x0010,
115511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DIAG_IN_PROGRESS        = 0x0020
116511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisMacStatus;
117511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
118511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
119511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        STATUS_RING_STATUS      = 1,
120511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        STATUS_ADAPTER_CHECK    = 2,
121511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        STATUS_START_RESET      = 3,
122511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        STATUS_INTERRUPT        = 4,
123511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        STATUS_END_RESET        = 5
124511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisStatus;
125511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
126511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
127511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        FILTER_DIRECTED         = 1,
128511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        FILTER_BROADCAST        = 2,
129511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        FILTER_PROMISCUOUS      = 4,
130511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        FILTER_SOURCE_ROUTE     = 8
131511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisPacketFilter;
132511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
133511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
134511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_INITIATE_DIAGNOSTICS     = 1,
135511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_READ_ERROR_LOG           = 2,
136511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_SET_STATION_ADDRESS      = 3,
137511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_OPEN_ADAPTER             = 4,
138511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_CLOSE_ADAPTER            = 5,
139511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_RESET_MAC                = 6,
140511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_SET_PACKET_FILTER        = 7,
141511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_ADD_MULTICAST_ADDRESS    = 8,
142511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_DELETE_MULTICAST_ADDRESS = 9,
143511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_UPDATE_STATISTICS        = 10,
144511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_CLEAR_STATISTICS         = 11,
145511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_INTERRUPT_REQUEST        = 12,
146511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_SET_FUNCTIONAL_ADDRESS   = 13,
147511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_SET_LOOKAHEAD            = 14
148511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisGeneralRequest;
149511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
150511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
151511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_BROADCAST             = 0x00000001L,
152511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_MULTICAST             = 0x00000002L,
153511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_FUNCTIONAL            = 0x00000004L,
154511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_PROMISCUOUS           = 0x00000008L,
155511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_SOFT_ADDRESS          = 0x00000010L,
156511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_STATS_CURRENT         = 0x00000020L,
157511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_INITIATE_DIAGS        = 0x00000040L,
158511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_LOOPBACK              = 0x00000080L,
159511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_RECEIVE_CHAIN         = 0x00000100L,
160511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_SOURCE_ROUTING        = 0x00000200L,
161511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_RESET_MAC             = 0x00000400L,
162511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_OPEN_CLOSE            = 0x00000800L,
163511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_INTERRUPT_REQUEST     = 0x00001000L,
164511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_SOURCE_ROUTING_BRIDGE = 0x00002000L,
165511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SF_VIRTUAL_ADDRESSES     = 0x00004000L
166511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisMacServiceFlags;
167511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
168511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
169511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_INITIATE_BIND        = 1,
170511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_BIND                 = 2,
171511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_INITIATE_PREBIND     = 3,
172511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_INITIATE_UNBIND      = 4,
173511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        REQ_UNBIND               = 5
174511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisSysRequest;
175511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
176511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum  {
177511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_GET_PROTOCOL_MANAGER_INFO      = 1,
178511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_REGISTER_MODULE                = 2,
179511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_BIND_AND_START                 = 3,
180511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_GET_PROTOCOL_MANAGER_LINKAGE   = 4,
181511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_GET_PROTOCOL_INI_PATH          = 5,
182511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_REGISTER_PROTOCOL_MANAGER_INFO = 6,
183511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_INIT_AND_REGISTER              = 7,
184511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_UNBIND_AND_STOP                = 8,
185511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_BIND_STATUS                    = 9,
186511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        PM_REGISTER_STATUS                = 10
187511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisProtManager;
188511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
189511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
190511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef enum {
191511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_SUCCESS                      = 0x00,
192511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_WAIT_FOR_RELEASE             = 0x01,
193511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_REQUEST_QUEUED               = 0x02,
194511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_FRAME_NOT_RECOGNIZED         = 0x03,
195511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_FRAME_REJECTED               = 0x04,
196511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_FORWARD_FRAME                = 0x05,
197511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_OUT_OF_RESOURCE              = 0x06,
198511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INVALID_PARAMETER            = 0x07,
199511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INVALID_FUNCTION             = 0x08,
200511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_NOT_SUPPORTED                = 0x09,
201511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_HARDWARE_ERROR               = 0x0A,
202511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_TRANSMIT_ERROR               = 0x0B,
203511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_NO_SUCH_DESTINATION          = 0x0C,
204511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_BUFFER_TOO_SMALL             = 0x0D,
205511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_ALREADY_STARTED              = 0x20,
206511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INCOMPLETE_BINDING           = 0x21,
207511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_DRIVER_NOT_INITIALIZED       = 0x22,
208511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_HARDWARE_NOT_FOUND           = 0x23,
209511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_HARDWARE_FAILURE             = 0x24,
210511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_CONFIGURATION_FAILURE        = 0x25,
211511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INTERRUPT_CONFLICT           = 0x26,
212511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INCOMPATIBLE_MAC             = 0x27,
213511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INITIALIZATION_FAILED        = 0x28,
214511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_NO_BINDING                   = 0x29,
215511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_NETWORK_MAY_NOT_BE_CONNECTED = 0x2A,
216511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INCOMPATIBLE_OS_VERSION      = 0x2B,
217511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_ALREADY_REGISTERED           = 0x2C,
218511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_PATH_NOT_FOUND               = 0x2D,
219511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INSUFFICIENT_MEMORY          = 0x2E,
220511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_INFO_NOT_FOUND               = 0x2F,
221511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ERR_GENERAL_FAILURE              = 0xFF
222511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } NdisError;
223511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
224511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PARAM_INTEGER   0
225511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PARAM_STRING    1
226511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
227511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_TX_BUF_LENGTH   8
228511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_TD_BUF_LENGTH   1
229511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_RX_BUF_LENGTH   8
230511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
231511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PTR_PHYSICAL    0
232511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PTR_VIRTUAL     2
233511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
234511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#define NDIS_PATH    "PROTMAN$"
235511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
236511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
237511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _CommonChars {
238511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  tableSize;
239511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  majorNdisVersion;        /* 2 - Latest version */
240511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  minorNdisVersion;        /* 0                  */
241511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  reserved1;
242511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  majorModuleVersion;
243511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  minorModuleVersion;
244511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD moduleFlags;
245511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        /* 0 - Binding at upper boundary supported
246511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 1 - Binding at lower boundary supported
247511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 2 - Dynamically bound.
248511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 3-31 - Reserved, must be zero.
249511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         */
250511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  moduleName[16];
251511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  protocolLevelUpper;
252511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        /* 1 - MAC
253511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 2 - Data Link
254511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 3 - Network
255511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 4 - Transport
256511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 5 - Session
257511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * -1 - Not specified
258511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         */
259511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  interfaceUpper;
260511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  protocolLevelLower;
261511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        /* 0 - Physical
262511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 1 - MAC
263511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 2 - Data Link
264511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 3 - Network
265511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 4 - Transport
266511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 5 - Session
267511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * -1 - Not specified
268511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         */
269511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  interfaceLower;
270511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  moduleId;
271511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  moduleDS;
272511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        SystemRequest systemRequest;
273511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *serviceChars;
274511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *serviceStatus;
275511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *upperDispatchTable;
276511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *lowerDispatchTable;
277511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *reserved2;            /* Must be NULL */
278511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE *reserved3;            /* Must be NULL */
279511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } CommonChars;
280511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
281511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
282511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MulticastList {
283511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   maxMulticastAddresses;
284511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   numberMulticastAddresses;
285511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   multicastAddress[16][16];
286511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } MulticastList;
287511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
288511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
289511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacChars {
290511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   tableSize;
291511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   macName[16];
292511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   addressLength;
293511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   permanentAddress[16];
294511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   currentAddress[16];
295511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  currentFunctionalAddress;
296511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        MulticastList *multicastList;
297511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  linkSpeed;
298511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  serviceFlags;
299511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   maxFrameSize;
300511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  txBufferSize;
301511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   txBufferAllocSize;
302511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  rxBufferSize;
303511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   rxBufferAllocSize;
304511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   ieeeVendor[3];
305511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   vendorAdapter;
306511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *vendorAdapterDescription;
307511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   interruptLevel;
308511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   txQueueDepth;
309511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   maxDataBlocks;
310511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } MacChars;
311511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
312511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
313511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ProtocolChars {
314511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   length;
315511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   name[16];
316511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   type;
317511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } ProtocolChars;
318511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
319511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
320511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacUpperDispatch {
321511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        CommonChars      *backPointer;
322511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        Request           request;
323511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        TransmitChain     transmitChain;
324511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        TransferData      transferData;
325511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        ReceiveRelease    receiveRelease;
326511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        IndicationOn      indicationOn;
327511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        IndicationOff     indicationOff;
328511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } MacUpperDispatch;
329511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
330511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
331511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _MacStatusTable {
332511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   tableSize;
333511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  lastDiag;
334511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  macStatus;
335511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   packetFilter;
336511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *mediaSpecificStats;
337511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  lastClear;
338511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalFramesRx;
339511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalFramesCrc;
340511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalBytesRx;
341511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalDiscardBufSpaceRx;
342511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalMulticastRx;
343511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalBroadcastRx;
344511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  obsolete1[5];
345511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalDiscardHwErrorRx;
346511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalFramesTx;
347511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalBytesTx;
348511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalMulticastTx;
349511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalBroadcastTx;
350511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  obsolete2[2];
351511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalDiscardTimeoutTx;
352511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  totalDiscardHwErrorTx;
353511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } MacStatusTable;
354511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
355511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
356511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ProtDispatch {
357511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        CommonChars *backPointer;
358511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD        flags;
359511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        /* 0 - handles non-LLC frames
360511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 1 - handles specific-LSAP LLC frames
361511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 2 - handles specific-LSAP LLC frames
362511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         * 3-31 - reserved must be 0
363511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall         */
364511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*requestConfirm) (void);
365511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*transmitConfirm) (void);
366511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*receiveLookahead) (void);
367511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*indicationComplete) (void);
368511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*receiveChain) (void);
369511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        void  (*status) (void);
370511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } ProtDispatch;
371511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
372511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
373511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _ReqBlock {
374511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD      opcode;
375511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD      status;
376511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE FAR *pointer1;
377511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE FAR *pointer2;
378511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD      word1;
379511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } ReqBlock;
380511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
381511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
382511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TxBufDescrRec {
383511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   txPtrType;
384511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   dummy;
385511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   txDataLen;
386511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *txDataPtr;
387511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } TxBufDescrRec;
388511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
389511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
390511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TxBufDescr {
391511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD          txImmedLen;
392511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE         *txImmedPtr;
393511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD          txDataCount;
394511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        TxBufDescrRec txBufDescrRec[NDIS_TX_BUF_LENGTH];
395511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } TxBufDescr;
396511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
397511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
398511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TDBufDescrRec {
399511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   tDPtrType;
400511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE   dummy;
401511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   tDDataLen;
402511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *tDDataPtr;
403511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } TDBufDescrRec;
404511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
405511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
406511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _TDBufDescr {
407511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD          tDDataCount;
408511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        TDBufDescrRec tDBufDescrRec[NDIS_TD_BUF_LENGTH];
409511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } TDBufDescr;
410511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
411511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
412511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _RxBufDescrRec {
413511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD   rxDataLen;
414511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *rxDataPtr;
415511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } RxBufDescrRec;
416511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
417511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
418511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _RxBufDescr {
419511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD          rxDataCount;
420511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        RxBufDescrRec rxBufDescrRec[NDIS_RX_BUF_LENGTH];
421511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } RxBufDescr;
422511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
423511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
424511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _PktBuf {
425511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	struct _PktBuf *nextLink;
426511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall	struct _PktBuf *prevLink;
427511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        int    handle;
428511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        int    length;
429511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        int    packetLength;
430511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        DWORD  sequence;
431511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  *buffer;
432511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } PktBuf;
433511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
434511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
435511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _CardHandle {
436511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE         moduleName[16];
437511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        CommonChars *common;
438511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } CardHandle;
439511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
440511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
441511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _BindingsList {
442511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  numBindings;
443511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  moduleName[2][16];
444511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } BindingsList;
445511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
446511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
447511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _FailingModules {
448511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  upperModuleName[16];
449511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  lowerModuleName[16];
450511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } FailingModules;
451511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
452511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
453511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef union _HardwareAddress {
454511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  bytes[6];
455511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD  words[3];
456511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        struct {
457511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall          BYTE bytes[6];
458511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        } addr;
459511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } HardwareAddress;
460511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
461511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
462511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _FddiHeader {
463511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE             frameControl;
464511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherDestHost;
465511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherSrcHost;
466511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } FddiHeader;
467511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
468511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
469511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _EthernetIIHeader {
470511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherDestHost;
471511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherSrcHost;
472511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        WORD             etherType;
473511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } EthernetIIHeader;
474511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
475511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
476511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _Ieee802Dot5Header {
477511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherDestHost;
478511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        HardwareAddress  etherSrcHost;
479511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE             routeInfo[30];
480511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } Ieee802Dot5Header;
481511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
482511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
483511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgralltypedef struct _Ieee802Dot2SnapHeader {
484511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  dsap;                      /* 0xAA */
485511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  ssap;                      /* 0xAA */
486511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE  control;                   /* 3    */
487511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall        BYTE protocolId[5];
488511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall      } Ieee802Dot2SnapHeader;
489511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
490511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
491511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
492511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *  Prototypes
493511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
494511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern char *NdisLastError        (void);
495511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int   NdisOpen             (void);
496511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int   NdisInit             (int promis);
497511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int   NdisRegisterAndBind  (int promis);
498511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern void  NdisShutdown         (void);
499511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern void  NdisCheckMacFeatures (struct _CardHandle *card);
500511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int   NdisSendPacket       (struct _PktBuf *pktBuf, int macId);
501511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
502511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
503511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *  Assembly "glue" functions
504511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
505511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int systemRequestGlue();
506511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int requestConfirmGlue();
507511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int transmitConfirmGlue();
508511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int receiveLookaheadGlue();
509511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int indicationCompleteGlue();
510511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int receiveChainGlue();
511511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int statusGlue();
512511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
513511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
514511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *  IOCTL function
515511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
516511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __SMALL__
517511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int _far NdisGetLinkage (int handle, char *data, int size);
518511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#else
519511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallextern int NdisGetLinkage (int handle, char *data, int size);
520511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
521511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
522511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall/*
523511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall *  NDIS callback handlers
524511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall */
525511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisSystemRequest     (DWORD,DWORD, WORD, WORD, WORD));
526511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisRequestConfirm    ( WORD, WORD, WORD, WORD, WORD,WORD));
527511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisTransmitConfirm   ( WORD, WORD, WORD, WORD, WORD));
528511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisReceiveLookahead  ( WORD, WORD, WORD, BYTE*, BYTE*, WORD));
529511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisReceiveChain      ( WORD, WORD, WORD, struct _RxBufDescr*, BYTE*, WORD));
530511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisStatusProc        ( WORD, WORD, BYTE*, WORD,WORD));
531511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallCALLBACK (NdisIndicationComplete( WORD, WORD));
532511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
533511eca30a483e912c274e1d8ba3a0f8f081e2227JP AbgrallBYTE *NdisAllocStack (void);
534511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrallvoid  NdisFreeStack  (BYTE*);
535511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
536511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#ifdef __HIGHC__
537511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define RENAME_ASM_SYM(x) pragma Alias(x,"@" #x "")  /* prepend `@' */
538511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  #define RENAME_C_SYM(x)   pragma Alias(x,"_" #x "")  /* prepend `_' */
539511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
540511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (systemRequestGlue);
541511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (requestConfirmGlue);
542511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (transmitConfirmGlue);
543511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (receiveLookaheadGlue);
544511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (indicationCompleteGlue);
545511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (receiveChainGlue);
546511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (statusGlue);
547511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_ASM_SYM (NdisGetLinkage);
548511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisSystemRequest);
549511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisRequestConfirm);
550511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisTransmitConfirm);
551511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisReceiveLookahead);
552511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisIndicationComplete);
553511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisReceiveChain);
554511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisStatusProc);
555511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisAllocStack);
556511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall  RENAME_C_SYM   (NdisFreeStack);
557511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
558511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall
559511eca30a483e912c274e1d8ba3a0f8f081e2227JP Abgrall#endif
560