[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/compat/ndis/ndis_var.h

Version: -  FREEBSD  -  FREEBSD7  -  FREEBSD71  -  FREEBSD70  -  FREEBSD6  -  FREEBSD64  -  FREEBSD63  -  FREEBSD62  -  FREEBSD61  -  FREEBSD60  -  FREEBSD5  -  FREEBSD55  -  FREEBSD54  -  FREEBSD53  -  FREEBSD52  -  FREEBSD51  -  FREEBSD50  -  FREEBSD4  -  FREEBSD3  -  FREEBSD22  -  linux-2.6  -  linux-2.4.22  -  MK83  -  MK84  -  PLAN9  -  DFBSD  -  NETBSD  -  NETBSD5  -  NETBSD4  -  NETBSD3  -  NETBSD20  -  OPENBSD  -  xnu-517  -  xnu-792  -  xnu-792.6.70  -  xnu-1228  -  OPENSOLARIS  -  minix-3-1-1  -  TRUSTEDBSD-SEBSD  -  FREEBSD-LIBC  -  FREEBSD7-LIBC  -  FREEBSD6-LIBC  -  GLIBC27 
SearchContext: -  none  -  excerpts  -  bigexcerpts 

  1 /*-
  2  * Copyright (c) 2003
  3  *      Bill Paul <wpaul@windriver.com>.  All rights reserved.
  4  *
  5  * Redistribution and use in source and binary forms, with or without
  6  * modification, are permitted provided that the following conditions
  7  * are met:
  8  * 1. Redistributions of source code must retain the above copyright
  9  *    notice, this list of conditions and the following disclaimer.
 10  * 2. Redistributions in binary form must reproduce the above copyright
 11  *    notice, this list of conditions and the following disclaimer in the
 12  *    documentation and/or other materials provided with the distribution.
 13  * 3. All advertising materials mentioning features or use of this software
 14  *    must display the following acknowledgement:
 15  *      This product includes software developed by Bill Paul.
 16  * 4. Neither the name of the author nor the names of any co-contributors
 17  *    may be used to endorse or promote products derived from this software
 18  *    without specific prior written permission.
 19  *
 20  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
 21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 23  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
 24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
 25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
 26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
 27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
 28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
 29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
 30  * THE POSSIBILITY OF SUCH DAMAGE.
 31  *
 32  * $FreeBSD: src/sys/compat/ndis/ndis_var.h,v 1.49 2008/12/27 08:03:32 weongyo Exp $
 33  */
 34 
 35 #ifndef _NDIS_VAR_H_
 36 #define _NDIS_VAR_H_
 37 
 38 /* Forward declarations */
 39 struct ndis_miniport_block;
 40 struct ndis_mdriver_block;
 41 typedef struct ndis_miniport_block ndis_miniport_block;
 42 typedef struct ndis_mdriver_block ndis_mdriver_block;
 43 
 44 /* Base types */
 45 typedef uint32_t ndis_status;
 46 typedef void *ndis_handle;
 47 typedef uint32_t ndis_oid;
 48 typedef uint32_t ndis_error_code;
 49 typedef register_t ndis_kspin_lock;
 50 typedef uint8_t ndis_kirql;
 51 
 52 /*
 53  * NDIS status codes (there are lots of them). The ones that
 54  * don't seem to fit the pattern are actually mapped to generic
 55  * NT status codes.
 56  */
 57 
 58 #define NDIS_STATUS_SUCCESS             0
 59 #define NDIS_STATUS_PENDING             0x00000103
 60 #define NDIS_STATUS_NOT_RECOGNIZED      0x00010001
 61 #define NDIS_STATUS_NOT_COPIED          0x00010002
 62 #define NDIS_STATUS_NOT_ACCEPTED        0x00010003
 63 #define NDIS_STATUS_CALL_ACTIVE         0x00010007
 64 #define NDIS_STATUS_ONLINE              0x40010003
 65 #define NDIS_STATUS_RESET_START         0x40010004
 66 #define NDIS_STATUS_RESET_END           0x40010005
 67 #define NDIS_STATUS_RING_STATUS         0x40010006
 68 #define NDIS_STATUS_CLOSED              0x40010007
 69 #define NDIS_STATUS_WAN_LINE_UP         0x40010008
 70 #define NDIS_STATUS_WAN_LINE_DOWN       0x40010009
 71 #define NDIS_STATUS_WAN_FRAGMENT        0x4001000A
 72 #define NDIS_STATUS_MEDIA_CONNECT       0x4001000B
 73 #define NDIS_STATUS_MEDIA_DISCONNECT    0x4001000C
 74 #define NDIS_STATUS_HARDWARE_LINE_UP    0x4001000D
 75 #define NDIS_STATUS_HARDWARE_LINE_DOWN  0x4001000E
 76 #define NDIS_STATUS_INTERFACE_UP        0x4001000F
 77 #define NDIS_STATUS_INTERFACE_DOWN      0x40010010
 78 #define NDIS_STATUS_MEDIA_BUSY          0x40010011
 79 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION   0x40010012
 80 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
 81 #define NDIS_STATUS_LINK_SPEED_CHANGE   0x40010013
 82 #define NDIS_STATUS_WAN_GET_STATS       0x40010014
 83 #define NDIS_STATUS_WAN_CO_FRAGMENT     0x40010015
 84 #define NDIS_STATUS_WAN_CO_LINKPARAMS   0x40010016
 85 #define NDIS_STATUS_NOT_RESETTABLE      0x80010001
 86 #define NDIS_STATUS_SOFT_ERRORS         0x80010003
 87 #define NDIS_STATUS_HARD_ERRORS         0x80010004
 88 #define NDIS_STATUS_BUFFER_OVERFLOW     0x80000005
 89 #define NDIS_STATUS_FAILURE             0xC0000001
 90 #define NDIS_STATUS_RESOURCES           0xC000009A
 91 #define NDIS_STATUS_CLOSING             0xC0010002
 92 #define NDIS_STATUS_BAD_VERSION         0xC0010004
 93 #define NDIS_STATUS_BAD_CHARACTERISTICS 0xC0010005
 94 #define NDIS_STATUS_ADAPTER_NOT_FOUND   0xC0010006
 95 #define NDIS_STATUS_OPEN_FAILED         0xC0010007
 96 #define NDIS_STATUS_DEVICE_FAILED       0xC0010008
 97 #define NDIS_STATUS_MULTICAST_FULL      0xC0010009
 98 #define NDIS_STATUS_MULTICAST_EXISTS    0xC001000A
 99 #define NDIS_STATUS_MULTICAST_NOT_FOUND 0xC001000B
100 #define NDIS_STATUS_REQUEST_ABORTED     0xC001000C
101 #define NDIS_STATUS_RESET_IN_PROGRESS   0xC001000D
102 #define NDIS_STATUS_CLOSING_INDICATING  0xC001000E
103 #define NDIS_STATUS_NOT_SUPPORTED       0xC00000BB
104 #define NDIS_STATUS_INVALID_PACKET      0xC001000F
105 #define NDIS_STATUS_OPEN_LIST_FULL      0xC0010010
106 #define NDIS_STATUS_ADAPTER_NOT_READY   0xC0010011
107 #define NDIS_STATUS_ADAPTER_NOT_OPEN    0xC0010012
108 #define NDIS_STATUS_NOT_INDICATING      0xC0010013
109 #define NDIS_STATUS_INVALID_LENGTH      0xC0010014
110 #define NDIS_STATUS_INVALID_DATA        0xC0010015
111 #define NDIS_STATUS_BUFFER_TOO_SHORT    0xC0010016
112 #define NDIS_STATUS_INVALID_OID         0xC0010017
113 #define NDIS_STATUS_ADAPTER_REMOVED     0xC0010018
114 #define NDIS_STATUS_UNSUPPORTED_MEDIA   0xC0010019
115 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE        0xC001001A
116 #define NDIS_STATUS_FILE_NOT_FOUND      0xC001001B
117 #define NDIS_STATUS_ERROR_READING_FILE  0xC001001C
118 #define NDIS_STATUS_ALREADY_MAPPED      0xC001001D
119 #define NDIS_STATUS_RESOURCE_CONFLICT   0xC001001E
120 #define NDIS_STATUS_NO_CABLE            0xC001001F
121 #define NDIS_STATUS_INVALID_SAP         0xC0010020
122 #define NDIS_STATUS_SAP_IN_USE          0xC0010021
123 #define NDIS_STATUS_INVALID_ADDRESS     0xC0010022
124 #define NDIS_STATUS_VC_NOT_ACTIVATED    0xC0010023
125 #define NDIS_STATUS_DEST_OUT_OF_ORDER   0xC0010024
126 #define NDIS_STATUS_VC_NOT_AVAILABLE    0xC0010025
127 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE      0xC0010026
128 #define NDIS_STATUS_INCOMPATABLE_QOS    0xC0010027
129 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED      0xC0010028
130 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION     0xC0010029
131 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR       0xC0011000
132 #define NDIS_STATUS_INVALID_DEVICE_REQUEST      0xC0000010
133 #define NDIS_STATUS_NETWORK_UNREACHABLE         0xC000023C
134 
135 /*
136  * NDIS event codes. They are usually reported to NdisWriteErrorLogEntry().
137  */
138 
139 #define EVENT_NDIS_RESOURCE_CONFLICT    0xC0001388
140 #define EVENT_NDIS_OUT_OF_RESOURCE      0xC0001389
141 #define EVENT_NDIS_HARDWARE_FAILURE     0xC000138A
142 #define EVENT_NDIS_ADAPTER_NOT_FOUND    0xC000138B
143 #define EVENT_NDIS_INTERRUPT_CONNECT    0xC000138C
144 #define EVENT_NDIS_DRIVER_FAILURE       0xC000138D
145 #define EVENT_NDIS_BAD_VERSION          0xC000138E
146 #define EVENT_NDIS_TIMEOUT              0x8000138F
147 #define EVENT_NDIS_NETWORK_ADDRESS      0xC0001390
148 #define EVENT_NDIS_UNSUPPORTED_CONFIGURATION    0xC0001391
149 #define EVENT_NDIS_INVALID_VALUE_FROM_ADAPTER   0xC0001392
150 #define EVENT_NDIS_MISSING_CONFIGURATION_PARAMETER      0xC0001393
151 #define EVENT_NDIS_BAD_IO_BASE_ADDRESS  0xC0001394
152 #define EVENT_NDIS_RECEIVE_SPACE_SMALL  0x40001395
153 #define EVENT_NDIS_ADAPTER_DISABLED     0x80001396
154 #define EVENT_NDIS_IO_PORT_CONFLICT     0x80001397
155 #define EVENT_NDIS_PORT_OR_DMA_CONFLICT 0x80001398
156 #define EVENT_NDIS_MEMORY_CONFLICT      0x80001399
157 #define EVENT_NDIS_INTERRUPT_CONFLICT   0x8000139A
158 #define EVENT_NDIS_DMA_CONFLICT         0x8000139B
159 #define EVENT_NDIS_INVALID_DOWNLOAD_FILE_ERROR  0xC000139C
160 #define EVENT_NDIS_MAXRECEIVES_ERROR    0x8000139D
161 #define EVENT_NDIS_MAXTRANSMITS_ERROR   0x8000139E
162 #define EVENT_NDIS_MAXFRAMESIZE_ERROR   0x8000139F
163 #define EVENT_NDIS_MAXINTERNALBUFS_ERROR        0x800013A0
164 #define EVENT_NDIS_MAXMULTICAST_ERROR   0x800013A1
165 #define EVENT_NDIS_PRODUCTID_ERROR      0x800013A2
166 #define EVENT_NDIS_LOBE_FAILUE_ERROR    0x800013A3
167 #define EVENT_NDIS_SIGNAL_LOSS_ERROR    0x800013A4
168 #define EVENT_NDIS_REMOVE_RECEIVED_ERROR        0x800013A5
169 #define EVENT_NDIS_TOKEN_RING_CORRECTION        0x400013A6
170 #define EVENT_NDIS_ADAPTER_CHECK_ERROR  0xC00013A7
171 #define EVENT_NDIS_RESET_FAILURE_ERROR  0x800013A8
172 #define EVENT_NDIS_CABLE_DISCONNECTED_ERROR     0x800013A9
173 #define EVENT_NDIS_RESET_FAILURE_CORRECTION     0x800013AA
174 
175 /*
176  * NDIS OIDs used by the queryinfo/setinfo routines.
177  * Some are required by all NDIS drivers, some are specific to
178  * a particular type of device, and some are purely optional.
179  * Unfortunately, one of the purely optional OIDs is the one
180  * that lets us set the MAC address of the device.
181  */
182 
183 /* Required OIDs */
184 #define OID_GEN_SUPPORTED_LIST                  0x00010101
185 #define OID_GEN_HARDWARE_STATUS                 0x00010102
186 #define OID_GEN_MEDIA_SUPPORTED                 0x00010103
187 #define OID_GEN_MEDIA_IN_USE                    0x00010104
188 #define OID_GEN_MAXIMUM_LOOKAHEAD               0x00010105
189 #define OID_GEN_MAXIMUM_FRAME_SIZE              0x00010106
190 #define OID_GEN_LINK_SPEED                      0x00010107
191 #define OID_GEN_TRANSMIT_BUFFER_SPACE           0x00010108
192 #define OID_GEN_RECEIVE_BUFFER_SPACE            0x00010109
193 #define OID_GEN_TRANSMIT_BLOCK_SIZE             0x0001010A
194 #define OID_GEN_RECEIVE_BLOCK_SIZE              0x0001010B
195 #define OID_GEN_VENDOR_ID                       0x0001010C
196 #define OID_GEN_VENDOR_DESCRIPTION              0x0001010D
197 #define OID_GEN_CURRENT_PACKET_FILTER           0x0001010E
198 #define OID_GEN_CURRENT_LOOKAHEAD               0x0001010F
199 #define OID_GEN_DRIVER_VERSION                  0x00010110
200 #define OID_GEN_MAXIMUM_TOTAL_SIZE              0x00010111
201 #define OID_GEN_PROTOCOL_OPTIONS                0x00010112
202 #define OID_GEN_MAC_OPTIONS                     0x00010113
203 #define OID_GEN_MEDIA_CONNECT_STATUS            0x00010114
204 #define OID_GEN_MAXIMUM_SEND_PACKETS            0x00010115
205 #define OID_GEN_VENDOR_DRIVER_VERSION           0x00010116
206 #define OID_GEN_SUPPORTED_GUIDS                 0x00010117
207 #define OID_GEN_NETWORK_LAYER_ADDRESSES         0x00010118      /* Set only */
208 #define OID_GEN_TRANSPORT_HEADER_OFFSET         0x00010119      /* Set only */
209 #define OID_GEN_MACHINE_NAME                    0x0001021A
210 #define OID_GEN_RNDIS_CONFIG_PARAMETER          0x0001021B      /* Set only */
211 #define OID_GEN_VLAN_ID                         0x0001021C
212 
213 /* Optional OIDs. */
214 #define OID_GEN_MEDIA_CAPABILITIES              0x00010201
215 #define OID_GEN_PHYSICAL_MEDIUM                 0x00010202
216 
217 /* Required statistics OIDs. */
218 #define OID_GEN_XMIT_OK                         0x00020101
219 #define OID_GEN_RCV_OK                          0x00020102
220 #define OID_GEN_XMIT_ERROR                      0x00020103
221 #define OID_GEN_RCV_ERROR                       0x00020104
222 #define OID_GEN_RCV_NO_BUFFER                   0x00020105
223 
224 /* Optional OID statistics */
225 #define OID_GEN_DIRECTED_BYTES_XMIT             0x00020201
226 #define OID_GEN_DIRECTED_FRAMES_XMIT            0x00020202
227 #define OID_GEN_MULTICAST_BYTES_XMIT            0x00020203
228 #define OID_GEN_MULTICAST_FRAMES_XMIT           0x00020204
229 #define OID_GEN_BROADCAST_BYTES_XMIT            0x00020205
230 #define OID_GEN_BROADCAST_FRAMES_XMIT           0x00020206
231 #define OID_GEN_DIRECTED_BYTES_RCV              0x00020207
232 #define OID_GEN_DIRECTED_FRAMES_RCV             0x00020208
233 #define OID_GEN_MULTICAST_BYTES_RCV             0x00020209
234 #define OID_GEN_MULTICAST_FRAMES_RCV            0x0002020A
235 #define OID_GEN_BROADCAST_BYTES_RCV             0x0002020B
236 #define OID_GEN_BROADCAST_FRAMES_RCV            0x0002020C
237 #define OID_GEN_RCV_CRC_ERROR                   0x0002020D
238 #define OID_GEN_TRANSMIT_QUEUE_LENGTH           0x0002020E
239 #define OID_GEN_GET_TIME_CAPS                   0x0002020F
240 #define OID_GEN_GET_NETCARD_TIME                0x00020210
241 #define OID_GEN_NETCARD_LOAD                    0x00020211
242 #define OID_GEN_DEVICE_PROFILE                  0x00020212
243 
244 /* 802.3 (ethernet) OIDs */
245 #define OID_802_3_PERMANENT_ADDRESS             0x01010101
246 #define OID_802_3_CURRENT_ADDRESS               0x01010102
247 #define OID_802_3_MULTICAST_LIST                0x01010103
248 #define OID_802_3_MAXIMUM_LIST_SIZE             0x01010104
249 #define OID_802_3_MAC_OPTIONS                   0x01010105
250 #define NDIS_802_3_MAC_OPTION_PRIORITY          0x00000001
251 #define OID_802_3_RCV_ERROR_ALIGNMENT           0x01020101
252 #define OID_802_3_XMIT_ONE_COLLISION            0x01020102
253 #define OID_802_3_XMIT_MORE_COLLISIONS          0x01020103
254 #define OID_802_3_XMIT_DEFERRED                 0x01020201
255 #define OID_802_3_XMIT_MAX_COLLISIONS           0x01020202
256 #define OID_802_3_RCV_OVERRUN                   0x01020203
257 #define OID_802_3_XMIT_UNDERRUN                 0x01020204
258 #define OID_802_3_XMIT_HEARTBEAT_FAILURE        0x01020205
259 #define OID_802_3_XMIT_TIMES_CRS_LOST           0x01020206
260 #define OID_802_3_XMIT_LATE_COLLISIONS          0x01020207
261 
262 /* PnP and power management OIDs */
263 #define OID_PNP_CAPABILITIES                    0xFD010100
264 #define OID_PNP_SET_POWER                       0xFD010101
265 #define OID_PNP_QUERY_POWER                     0xFD010102
266 #define OID_PNP_ADD_WAKE_UP_PATTERN             0xFD010103
267 #define OID_PNP_REMOVE_WAKE_UP_PATTERN          0xFD010104
268 #define OID_PNP_WAKE_UP_PATTERN_LIST            0xFD010105
269 #define OID_PNP_ENABLE_WAKE_UP                  0xFD010106
270 
271 /*
272  * These are the possible power states for
273  * OID_PNP_SET_POWER and OID_PNP_QUERY_POWER.
274  */
275 #define NDIS_POWERSTATE_UNSPEC                  0
276 #define NDIS_POWERSTATE_D0                      1
277 #define NDIS_POWERSTATE_D1                      2
278 #define NDIS_POWERSTATE_D2                      3
279 #define NDIS_POWERSTATE_D3                      4
280 
281 /*
282  * These are used with the MiniportPnpEventNotify() method.
283  */
284 
285 #define NDIS_POWERPROFILE_BATTERY               0
286 #define NDIS_POWERPROFILE_ACONLINE              1
287 
288 #define NDIS_PNP_EVENT_QUERY_REMOVED            0
289 #define NDIS_PNP_EVENT_REMOVED                  1
290 #define NDIS_PNP_EVENT_SURPRISE_REMOVED         2
291 #define NDIS_PNP_EVENT_QUERY_STOPPED            3
292 #define NDIS_PNP_EVENT_STOPPED                  4
293 #define NDIS_PNP_EVENT_PROFILECHANGED           5
294 
295 
296 /* PnP/PM Statistics (Optional). */
297 #define OID_PNP_WAKE_UP_OK                      0xFD020200
298 #define OID_PNP_WAKE_UP_ERROR                   0xFD020201
299 
300 /* The following bits are defined for OID_PNP_ENABLE_WAKE_UP */
301 #define NDIS_PNP_WAKE_UP_MAGIC_PACKET           0x00000001
302 #define NDIS_PNP_WAKE_UP_PATTERN_MATCH          0x00000002
303 #define NDIS_PNP_WAKE_UP_LINK_CHANGE            0x00000004
304 
305 /* 802.11 OIDs */
306 #define OID_802_11_BSSID                        0x0D010101
307 #define OID_802_11_SSID                         0x0D010102
308 #define OID_802_11_NETWORK_TYPES_SUPPORTED      0x0D010203
309 #define OID_802_11_NETWORK_TYPE_IN_USE          0x0D010204
310 #define OID_802_11_TX_POWER_LEVEL               0x0D010205
311 #define OID_802_11_RSSI                         0x0D010206
312 #define OID_802_11_RSSI_TRIGGER                 0x0D010207
313 #define OID_802_11_INFRASTRUCTURE_MODE          0x0D010108
314 #define OID_802_11_FRAGMENTATION_THRESHOLD      0x0D010209
315 #define OID_802_11_RTS_THRESHOLD                0x0D01020A
316 #define OID_802_11_NUMBER_OF_ANTENNAS           0x0D01020B
317 #define OID_802_11_RX_ANTENNA_SELECTED          0x0D01020C
318 #define OID_802_11_TX_ANTENNA_SELECTED          0x0D01020D
319 #define OID_802_11_SUPPORTED_RATES              0x0D01020E
320 #define OID_802_11_DESIRED_RATES                0x0D010210
321 #define OID_802_11_CONFIGURATION                0x0D010211
322 #define OID_802_11_STATISTICS                   0x0D020212
323 #define OID_802_11_ADD_WEP                      0x0D010113
324 #define OID_802_11_REMOVE_WEP                   0x0D010114
325 #define OID_802_11_DISASSOCIATE                 0x0D010115
326 #define OID_802_11_POWER_MODE                   0x0D010216
327 #define OID_802_11_BSSID_LIST                   0x0D010217
328 #define OID_802_11_AUTHENTICATION_MODE          0x0D010118
329 #define OID_802_11_PRIVACY_FILTER               0x0D010119
330 #define OID_802_11_BSSID_LIST_SCAN              0x0D01011A
331 #define OID_802_11_WEP_STATUS                   0x0D01011B
332 #define OID_802_11_ENCRYPTION_STATUS            OID_802_11_WEP_STATUS
333 #define OID_802_11_RELOAD_DEFAULTS              0x0D01011C
334 #define OID_802_11_ADD_KEY                      0x0D01011D
335 #define OID_802_11_REMOVE_KEY                   0x0D01011E
336 #define OID_802_11_ASSOCIATION_INFORMATION      0x0D01011F
337 #define OID_802_11_TEST                         0x0D010120
338 #define OID_802_11_CAPABILITY                   0x0D010122
339 #define OID_802_11_PMKID                        0x0D010123
340 
341 /* structures/definitions for 802.11 */
342 #define NDIS_80211_NETTYPE_11FH         0x00000000
343 #define NDIS_80211_NETTYPE_11DS         0x00000001
344 #define NDIS_80211_NETTYPE_11OFDM5      0x00000002
345 #define NDIS_80211_NETTYPE_11OFDM24     0x00000003
346 #define NDIS_80211_NETTYPE_AUTO         0x00000004
347 
348 struct ndis_80211_nettype_list {
349         uint32_t                ntl_items;
350         uint32_t                ntl_type[1];
351 };
352 
353 #define NDIS_80211_POWERMODE_CAM        0x00000000
354 #define NDIS_80211_POWERMODE_MAX_PSP    0x00000001
355 #define NDIS_80211_POWERMODE_FAST_PSP   0x00000002
356 
357 typedef uint32_t ndis_80211_power;      /* Power in milliwatts */
358 typedef uint32_t ndis_80211_rssi;       /* Signal strength in dBm */
359 
360 struct ndis_80211_config_fh {
361         uint32_t                ncf_length;
362         uint32_t                ncf_hoppatterh;
363         uint32_t                ncf_hopset;
364         uint32_t                ncf_dwelltime;
365 };
366 
367 typedef struct ndis_80211_config_fh ndis_80211_config_fh;
368 
369 struct ndis_80211_config {
370         uint32_t                nc_length;
371         uint32_t                nc_beaconperiod;
372         uint32_t                nc_atimwin;
373         uint32_t                nc_dsconfig;
374         ndis_80211_config_fh    nc_fhconfig;
375 };
376 
377 typedef struct ndis_80211_config ndis_80211_config;
378 
379 struct ndis_80211_stats {
380         uint32_t                ns_length;
381         uint64_t                ns_txfragcnt;
382         uint64_t                ns_txmcastcnt;
383         uint64_t                ns_failedcnt;
384         uint64_t                ns_retrycnt;
385         uint64_t                ns_multiretrycnt;
386         uint64_t                ns_rtssuccesscnt;
387         uint64_t                ns_rtsfailcnt;
388         uint64_t                ns_ackfailcnt;
389         uint64_t                ns_dupeframecnt;
390         uint64_t                ns_rxfragcnt;
391         uint64_t                ns_rxmcastcnt;
392         uint64_t                ns_fcserrcnt;
393 };
394 
395 typedef struct ndis_80211_stats ndis_80211_stats;
396 
397 typedef uint32_t ndis_80211_key_idx;
398 
399 struct ndis_80211_wep {
400         uint32_t                nw_length;
401         uint32_t                nw_keyidx;
402         uint32_t                nw_keylen;
403         uint8_t                 nw_keydata[256];
404 };
405 
406 typedef struct ndis_80211_wep ndis_80211_wep;
407 
408 #define NDIS_80211_WEPKEY_TX            0x80000000
409 #define NDIS_80211_WEPKEY_PERCLIENT     0x40000000
410 
411 #define NDIS_80211_NET_INFRA_IBSS       0x00000000
412 #define NDIS_80211_NET_INFRA_BSS        0x00000001
413 #define NDIS_80211_NET_INFRA_AUTO       0x00000002
414 
415 #define NDIS_80211_AUTHMODE_OPEN        0x00000000
416 #define NDIS_80211_AUTHMODE_SHARED      0x00000001
417 #define NDIS_80211_AUTHMODE_AUTO        0x00000002
418 #define NDIS_80211_AUTHMODE_WPA         0x00000003
419 #define NDIS_80211_AUTHMODE_WPAPSK      0x00000004
420 #define NDIS_80211_AUTHMODE_WPANONE     0x00000005
421 #define NDIS_80211_AUTHMODE_WPA2        0x00000006
422 #define NDIS_80211_AUTHMODE_WPA2PSK     0x00000007
423 
424 typedef uint8_t ndis_80211_rates[8];
425 typedef uint8_t ndis_80211_rates_ex[16];
426 typedef uint8_t ndis_80211_macaddr[6];
427 
428 struct ndis_80211_ssid {
429         uint32_t                ns_ssidlen;
430         uint8_t                 ns_ssid[32];
431 };
432 
433 typedef struct ndis_80211_ssid ndis_80211_ssid;
434 
435 struct ndis_wlan_bssid {
436         uint32_t                nwb_length;
437         ndis_80211_macaddr      nwb_macaddr;
438         uint8_t                 nwb_rsvd[2];
439         ndis_80211_ssid         nwb_ssid;
440         uint32_t                nwb_privacy;
441         ndis_80211_rssi         nwb_rssi;
442         uint32_t                nwb_nettype;
443         ndis_80211_config       nwb_config;
444         uint32_t                nwb_netinfra;
445         ndis_80211_rates        nwb_supportedrates;
446 };
447 
448 typedef struct ndis_wlan_bssid ndis_wlan_bssid;
449 
450 struct ndis_80211_bssid_list {
451         uint32_t                nbl_items;
452         ndis_wlan_bssid         nbl_bssid[1];
453 };
454 
455 typedef struct ndis_80211_bssid_list ndis_80211_bssid_list;
456 
457 struct ndis_wlan_bssid_ex {
458         uint32_t                nwbx_len;
459         ndis_80211_macaddr      nwbx_macaddr;
460         uint8_t                 nwbx_rsvd[2];
461         ndis_80211_ssid         nwbx_ssid;
462         uint32_t                nwbx_privacy;
463         ndis_80211_rssi         nwbx_rssi;
464         uint32_t                nwbx_nettype;
465         ndis_80211_config       nwbx_config;
466         uint32_t                nwbx_netinfra;
467         ndis_80211_rates_ex     nwbx_supportedrates;
468         uint32_t                nwbx_ielen;
469         uint8_t                 nwbx_ies[1];
470 };
471 
472 typedef struct ndis_wlan_bssid_ex ndis_wlan_bssid_ex;
473 
474 struct ndis_80211_bssid_list_ex {
475         uint32_t                nblx_items;
476         ndis_wlan_bssid_ex      nblx_bssid[1];
477 };
478 
479 typedef struct ndis_80211_bssid_list_ex ndis_80211_bssid_list_ex;
480 
481 struct ndis_80211_fixed_ies {
482         uint8_t                 nfi_tstamp[8];
483         uint16_t                nfi_beaconint;
484         uint16_t                nfi_caps;
485 };
486 
487 struct ndis_80211_variable_ies {
488         uint8_t                 nvi_elemid;
489         uint8_t                 nvi_len;
490         uint8_t                 nvi_data[1];
491 };
492 
493 typedef uint32_t ndis_80211_fragthresh;
494 typedef uint32_t ndis_80211_rtsthresh;
495 typedef uint32_t ndis_80211_antenna;
496 
497 #define NDIS_80211_PRIVFILT_ACCEPTALL   0x00000000
498 #define NDIS_80211_PRIVFILT_8021XWEP    0x00000001
499 
500 #define NDIS_80211_WEPSTAT_ENABLED      0x00000000
501 #define NDIS_80211_WEPSTAT_ENC1ENABLED  NDIS_80211_WEPSTAT_ENABLED
502 #define NDIS_80211_WEPSTAT_DISABLED     0x00000001
503 #define NDIS_80211_WEPSTAT_ENCDISABLED  NDIS_80211_WEPSTAT_DISABLED
504 #define NDIS_80211_WEPSTAT_KEYABSENT    0x00000002
505 #define NDIS_80211_WEPSTAT_ENC1KEYABSENT        NDIS_80211_WEPSTAT_KEYABSENT
506 #define NDIS_80211_WEPSTAT_NOTSUPPORTED 0x00000003
507 #define NDIS_80211_WEPSTAT_ENCNOTSUPPORTED      NDIS_80211_WEPSTAT_NOTSUPPORTED
508 #define NDIS_80211_WEPSTAT_ENC2ENABLED  0x00000004
509 #define NDIS_80211_WEPSTAT_ENC2KEYABSENT        0x00000005
510 #define NDIS_80211_WEPSTAT_ENC3ENABLED  0x00000006
511 #define NDIS_80211_WEPSTAT_ENC3KEYABSENT        0x00000007
512 
513 #define NDIS_80211_RELOADDEFAULT_WEP    0x00000000
514 
515 #define NDIS_80211_STATUSTYPE_AUTH      0x00000000
516 #define NDIS_80211_STATUSTYPE_PMKIDLIST 0x00000001
517 
518 struct ndis_80211_status_indication {
519         uint32_t                nsi_type;
520 };
521 
522 typedef struct ndis_80211_status_indication ndis_80211_status_indication;
523 
524 #define NDIS_802_11_AUTH_REQUEST_REAUTH         0x01
525 #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE      0x02
526 #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
527 #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR    0x0E
528 
529 struct ndis_80211_auth_request {
530         uint32_t                nar_len;
531         ndis_80211_macaddr      nar_bssid;
532         uint32_t                nar_flags;
533 };
534 
535 typedef struct ndis_80211_auth_request ndis_80211_auth_request;
536 
537 struct ndis_80211_key {
538         uint32_t                nk_len;
539         uint32_t                nk_keyidx;
540         uint32_t                nk_keylen;
541         ndis_80211_macaddr      nk_bssid;
542         uint8_t                 nk_pad[6];
543         uint64_t                nk_keyrsc;
544         uint8_t                 nk_keydata[32];
545 };
546 
547 typedef struct ndis_80211_key ndis_80211_key;
548 
549 struct ndis_80211_remove_key {
550         uint32_t                nk_len;
551         uint32_t                nk_keyidx;
552         ndis_80211_macaddr      nk_bssid;
553 };
554 
555 typedef struct ndis_80211_remove_key ndis_80211_remove_key;
556 
557 #define NDIS_80211_AI_REQFI_CAPABILITIES        0x00000001
558 #define NDIS_80211_AI_REQFI_LISTENINTERVAL      0x00000002
559 #define NDIS_80211_AI_REQFI_CURRENTAPADDRESS    0x00000004
560 
561 #define NDIS_80211_AI_RESFI_CAPABILITIES        0x00000001
562 #define NDIS_80211_AI_RESFI_STATUSCODE          0x00000002
563 #define NDIS_80211_AI_RESFI_ASSOCIATIONID       0x00000004
564 
565 struct ndis_80211_ai_reqfi {
566         uint16_t                naq_caps;
567         uint16_t                naq_listentint;
568         ndis_80211_macaddr      naq_currentapaddr;
569 };
570 
571 typedef struct ndis_80211_ai_reqfi ndis_80211_ai_reqfi;
572 
573 struct ndis_80211_ai_resfi {
574         uint16_t                nas_caps;
575         uint16_t                nas_statuscode;
576         uint16_t                nas_associd;
577 };
578 
579 typedef struct ndis_80211_ai_resfi ndis_80211_ai_resfi;
580 
581 struct ndis_80211_assoc_info {
582         uint32_t                nai_len;
583         uint16_t                nai_avail_req_fixed_ies;
584         ndis_80211_ai_reqfi     nai_req_fixed_ies;
585         uint32_t                nai_req_ielen;
586         uint32_t                nai_offset_req_ies;
587         uint16_t                nai_avail_resp_fixed_ies;
588         ndis_80211_ai_resfi     nai_resp_fixed_iex;
589         uint32_t                nai_resp_ielen;
590         uint32_t                nai_offset_resp_ies;
591 };
592 
593 typedef struct ndis_80211_assoc_info ndis_80211_assoc_info;
594 
595 struct ndis_80211_auth_event {
596         ndis_80211_status_indication    nae_status;
597         ndis_80211_auth_request         nae_request[1];
598 };
599 
600 typedef struct ndis_80211_auth_event ndis_80211_auth_event;
601 
602 struct ndis_80211_test {
603         uint32_t                nt_len;
604         uint32_t                nt_type;
605         union {
606                 ndis_80211_auth_event   nt_authevent;
607                 uint32_t                nt_rssitrigger;
608         } u;
609 };
610 
611 typedef struct ndis_80211_test ndis_80211_test;
612 
613 struct ndis_80211_auth_encrypt {
614         uint32_t                ne_authmode;
615         uint32_t                ne_cryptstat;
616 };
617 
618 typedef struct ndis_80211_auth_encrypt ndis_80211_auth_encrypt;
619         
620 struct ndis_80211_caps {
621         uint32_t                nc_len;
622         uint32_t                nc_ver;
623         uint32_t                nc_numpmkids;
624         ndis_80211_auth_encrypt nc_authencs[1];
625 };
626 
627 typedef struct ndis_80211_caps ndis_80211_caps;
628 
629 struct ndis_80211_bssidinfo {
630         ndis_80211_macaddr      nb_bssid;
631         uint8_t                 nb_pmkid[16];
632 };
633 
634 typedef struct ndis_80211_bssidinfo ndis_80211_bssidinfo;
635 
636 struct ndis_80211_pmkid {
637         uint32_t                np_len;
638         uint32_t                np_bssidcnt;
639         ndis_80211_bssidinfo    np_bssidinfo[1];
640 };
641 
642 typedef struct ndis_80211_pmkid ndis_80211_pmkid;
643 
644 struct ndis_80211_pmkid_cand {
645         ndis_80211_macaddr      npc_bssid;
646         uint32_t                npc_flags;
647 };
648 
649 typedef struct ndis_80211_pmkid_cand ndis_80211_pmkid_cand;
650 
651 #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED (0x01)
652 
653 struct ndis_80211_pmkid_candidate_list {
654         uint32_t                npcl_version;
655         uint32_t                npcl_numcandidates;
656         ndis_80211_pmkid_cand   npcl_candidatelist[1];
657 };
658 
659 typedef struct ndis_80211_pmkid_candidate_list ndis_80211_pmkid_candidate_list;
660 
661 struct ndis_80211_enc_indication {
662         uint32_t                nei_statustype;
663         ndis_80211_pmkid_candidate_list nei_pmkidlist;
664 };
665 
666 typedef struct ndis_80211_enc_indication ndis_80211_enc_indication;
667 
668 /* TCP OIDs. */
669 
670 #define OID_TCP_TASK_OFFLOAD                    0xFC010201
671 #define OID_TCP_TASK_IPSEC_ADD_SA               0xFC010202
672 #define OID_TCP_TASK_IPSEC_DELETE_SA            0xFC010203
673 #define OID_TCP_SAN_SUPPORT                     0xFC010204
674 
675 
676 #define NDIS_TASK_OFFLOAD_VERSION 1
677 
678 #define NDIS_TASK_TCPIP_CSUM                    0x00000000
679 #define NDIS_TASK_IPSEC                         0x00000001
680 #define NDIS_TASK_TCP_LARGESEND                 0x00000002
681 
682 #define NDIS_ENCAP_UNSPEC                       0x00000000
683 #define NDIS_ENCAP_NULL                         0x00000001
684 #define NDIS_ENCAP_IEEE802_3                    0x00000002
685 #define NDIS_ENCAP_IEEE802_5                    0x00000003
686 #define NDIS_ENCAP_SNAP_ROUTED                  0x00000004
687 #define NDIS_ENCAP_SNAP_BRIDGED                 0x00000005
688 
689 #define NDIS_ENCAPFLAG_FIXEDHDRLEN              0x00000001
690 
691 struct ndis_encap_fmt {
692         uint32_t                nef_encap;
693         uint32_t                nef_flags;
694         uint32_t                nef_encaphdrlen;
695 };
696 
697 typedef struct ndis_encap_fmt ndis_encap_fmt;
698 
699 struct ndis_task_offload_hdr {
700         uint32_t                ntoh_vers;
701         uint32_t                ntoh_len;
702         uint32_t                ntoh_rsvd;
703         uint32_t                ntoh_offset_firsttask;
704         ndis_encap_fmt          ntoh_encapfmt;
705 };
706 
707 typedef struct ndis_task_offload_hdr ndis_task_offload_hdr;
708 
709 struct ndis_task_offload {
710         uint32_t                nto_vers;
711         uint32_t                nto_len;
712         uint32_t                nto_task;
713         uint32_t                nto_offset_nexttask;
714         uint32_t                nto_taskbuflen;
715         uint8_t                 nto_taskbuf[1];
716 };
717 
718 typedef struct ndis_task_offload ndis_task_offload;
719 
720 #define NDIS_TCPSUM_FLAGS_IP_OPTS       0x00000001
721 #define NDIS_TCPSUM_FLAGS_TCP_OPTS      0x00000002
722 #define NDIS_TCPSUM_FLAGS_TCP_CSUM      0x00000004
723 #define NDIS_TCPSUM_FLAGS_UDP_CSUM      0x00000008
724 #define NDIS_TCPSUM_FLAGS_IP_CSUM       0x00000010
725 
726 struct ndis_task_tcpip_csum {
727         uint32_t                nttc_v4tx;
728         uint32_t                nttc_v4rx;
729         uint32_t                nttc_v6tx;
730         uint32_t                nttc_v6rx;
731 };
732 
733 typedef struct ndis_task_tcpip_csum ndis_task_tcpip_csum;
734 
735 struct ndis_task_tcp_largesend {
736         uint32_t                nttl_vers;
737         uint32_t                nttl_maxofflen;
738         uint32_t                nttl_minsegcnt;
739         uint8_t                 nttl_tcpopt;
740         uint8_t                 nttl_ipopt;
741 };
742 
743 typedef struct ndis_task_tcp_largesend ndis_task_tcp_largesend;
744 
745 #define NDIS_IPSEC_AH_MD5               0x00000001
746 #define NDIS_IPSEC_AH_SHA1              0x00000002
747 #define NDIS_IPSEC_AH_TRANSPORT         0x00000004
748 #define NDIS_IPSEC_AH_TUNNEL            0x00000008
749 #define NDIS_IPSEC_AH_SEND              0x00000010
750 #define NDIS_IPSEC_AH_RECEIVE           0x00000020
751 
752 #define NDIS_IPSEC_ESP_DES              0x00000001
753 #define NDIS_IPSEC_ESP_RSVD             0x00000002
754 #define NDIS_IPSEC_ESP_3DES             0x00000004
755 #define NDIS_IPSEC_ESP_NULL             0x00000008
756 #define NDIS_IPSEC_ESP_TRANSPORT        0x00000010
757 #define NDIS_IPSEC_ESP_TUNNEL           0x00000020
758 #define NDIS_IPSEC_ESP_SEND             0x00000040
759 #define NDIS_IPSEC_ESP_RECEIVE          0x00000080
760 
761 struct ndis_task_ipsec {
762         uint32_t                nti_ah_esp_combined;
763         uint32_t                nti_ah_transport_tunnel_combined;
764         uint32_t                nti_v4_options;
765         uint32_t                nti_rsvd;
766         uint32_t                nti_v4ah;
767         uint32_t                nti_v4esp;
768 };
769 
770 typedef struct ndis_task_ipsec ndis_task_ipsec;
771 
772 /*
773  * Attribures of NDIS drivers. Not all drivers support
774  * all attributes.
775  */
776 
777 #define NDIS_ATTRIBUTE_IGNORE_PACKET_TIMEOUT            0x00000001
778 #define NDIS_ATTRIBUTE_IGNORE_REQUEST_TIMEOUT           0x00000002
779 #define NDIS_ATTRIBUTE_IGNORE_TOKEN_RING_ERRORS         0x00000004
780 #define NDIS_ATTRIBUTE_BUS_MASTER                       0x00000008
781 #define NDIS_ATTRIBUTE_INTERMEDIATE_DRIVER              0x00000010
782 #define NDIS_ATTRIBUTE_DESERIALIZE                      0x00000020
783 #define NDIS_ATTRIBUTE_NO_HALT_ON_SUSPEND               0x00000040
784 #define NDIS_ATTRIBUTE_SURPRISE_REMOVE_OK               0x00000080
785 #define NDIS_ATTRIBUTE_NOT_CO_NDIS                      0x00000100
786 #define NDIS_ATTRIBUTE_USES_SAFE_BUFFER_APIS            0x00000200
787 
788 #define NDIS_SERIALIZED(block)          \
789         (((block)->nmb_flags & NDIS_ATTRIBUTE_DESERIALIZE) == 0)
790 
791 enum ndis_media_state {
792         nmc_connected,
793         nmc_disconnected
794 };
795 
796 typedef enum ndis_media_state ndis_media_state;
797 
798 /* Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER). */
799 
800 #define NDIS_PACKET_TYPE_DIRECTED               0x00000001
801 #define NDIS_PACKET_TYPE_MULTICAST              0x00000002
802 #define NDIS_PACKET_TYPE_ALL_MULTICAST          0x00000004
803 #define NDIS_PACKET_TYPE_BROADCAST              0x00000008
804 #define NDIS_PACKET_TYPE_SOURCE_ROUTING         0x00000010
805 #define NDIS_PACKET_TYPE_PROMISCUOUS            0x00000020
806 #define NDIS_PACKET_TYPE_SMT                    0x00000040
807 #define NDIS_PACKET_TYPE_ALL_LOCAL              0x00000080
808 #define NDIS_PACKET_TYPE_GROUP                  0x00001000
809 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL         0x00002000
810 #define NDIS_PACKET_TYPE_FUNCTIONAL             0x00004000
811 #define NDIS_PACKET_TYPE_MAC_FRAME              0x00008000
812 
813 
814 /* Ndis MAC option bits (OID_GEN_MAC_OPTIONS). */
815 
816 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA             0x00000001
817 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED              0x00000002
818 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND              0x00000004
819 #define NDIS_MAC_OPTION_NO_LOOPBACK                     0x00000008
820 #define NDIS_MAC_OPTION_FULL_DUPLEX                     0x00000010
821 #define NDIS_MAC_OPTION_EOTX_INDICATION                 0x00000020
822 #define NDIS_MAC_OPTION_8021P_PRIORITY                  0x00000040
823 #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE  0x00000080
824 #define NDIS_MAC_OPTION_RECEIVE_AT_DPC                  0x00000100
825 #define NDIS_MAC_OPTION_8021Q_VLAN                      0x00000200
826 #define NDIS_MAC_OPTION_RESERVED                        0x80000000
827 
828 #define NDIS_DMA_24BITS         0x00
829 #define NDIS_DMA_32BITS         0x01
830 #define NDIS_DMA_64BITS         0x02
831 
832 /*
833 struct ndis_physaddr {
834 #ifdef __i386__
835         uint64_t                np_quad;
836 #endif
837 #ifdef __amd64__
838         uint32_t                np_low;
839         uint32_t                np_high;
840 #define np_quad np_low
841 #endif
842 #ifdef notdef
843         uint32_t                np_low;
844         uint32_t                np_high;
845 #endif
846 };
847 */
848 
849 typedef struct physaddr ndis_physaddr;
850 
851 struct ndis_ansi_string {
852         uint16_t                nas_len;
853         uint16_t                nas_maxlen;
854         char                    *nas_buf;
855 };
856 
857 typedef struct ndis_ansi_string ndis_ansi_string;
858 
859 #ifdef notdef
860 /*
861  * nus_buf is really a wchar_t *, but it's inconvenient to include
862  * all the necessary header goop needed to define it, and it's a
863  * pointer anyway, so for now, just make it a uint16_t *.
864  */
865 struct ndis_unicode_string {
866         uint16_t                nus_len;
867         uint16_t                nus_maxlen;
868         uint16_t                *nus_buf;
869 };
870 typedef struct ndis_unicode_string ndis_unicode_string;
871 #endif
872 
873 typedef unicode_string ndis_unicode_string;
874 
875 enum ndis_parm_type {
876         ndis_parm_int,
877         ndis_parm_hexint,
878         ndis_parm_string,
879         ndis_parm_multistring,
880         ndis_parm_binary
881 };
882 
883 typedef enum ndis_parm_type ndis_parm_type;
884 
885 struct ndis_binary_data {
886         uint16_t                nbd_len;
887         void                    *nbd_buf;
888 };
889 
890 typedef struct ndis_binary_data ndis_binary_data;
891 
892 struct ndis_config_parm {
893         ndis_parm_type          ncp_type;
894         union {
895                 uint32_t                ncp_intdata;
896                 ndis_unicode_string     ncp_stringdata;
897                 ndis_binary_data        ncp_binarydata;
898         } ncp_parmdata;
899 };
900 
901 /*
902  * Not part of Windows NDIS spec; we uses this to keep a
903  * list of ndis_config_parm structures that we've allocated.
904  */
905 
906 typedef struct ndis_config_parm ndis_config_parm;
907 
908 struct ndis_parmlist_entry {
909         list_entry              np_list;
910         ndis_config_parm        np_parm;
911 };
912 
913 typedef struct ndis_parmlist_entry ndis_parmlist_entry;
914 
915 #ifdef notdef
916 struct ndis_list_entry {
917         struct ndis_list_entry *nle_flink;
918         struct ndis_list_entry *nle_blink;
919 };
920 
921 typedef struct ndis_list_entry ndis_list_entry;
922 #endif
923 
924 struct ndis_bind_paths {
925         uint32_t                nbp_number;
926         ndis_unicode_string     nbp_paths[1];
927 };
928 
929 typedef struct ndis_bind_paths ndis_bind_paths;
930 
931 #ifdef notdef
932 struct dispatch_header {
933         uint8_t                 dh_type;
934         uint8_t                 dh_abs;
935         uint8_t                 dh_size;
936         uint8_t                 dh_inserted;
937         uint32_t                dh_sigstate;
938         list_entry              dh_waitlisthead;
939 };
940 #endif
941 
942 #define dispatch_header nt_dispatch_header
943 
944 struct ndis_ktimer {
945         struct dispatch_header  nk_header;
946         uint64_t                nk_duetime;
947         list_entry              nk_timerlistentry;
948         void                    *nk_dpc;
949         uint32_t                nk_period;
950 };
951 
952 struct ndis_kevent {
953         struct dispatch_header  nk_header;
954 };
955 
956 struct ndis_event {