Resync with broadcom drivers 5.100.138.20 and utilities.
[tomato.git] / release / src-rt / include / bcm_ndis.h
blob77560fd9f304be80109ffc027d9b359c99ddbeb0
1 /*
2 * Definitions redundant to Windows DDK header file
3 * definitions needed to build RNDIS drivers for non-
4 * Windows platforms.
6 * Portions
7 * Copyright (C) 2010, Broadcom Corporation
8 * All Rights Reserved.
9 *
10 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom Corporation;
11 * the contents of this file may not be disclosed to third parties, copied
12 * or duplicated in any form, in whole or in part, without the prior
13 * written permission of Broadcom Corporation.
15 * $Id: bcm_ndis.h,v 13.10 2009-04-15 20:01:44 Exp $
18 /*FILE-CSTYLED*/
20 #ifndef _bcm_ndis_h_
21 #define _bcm_ndis_h_
23 #ifndef NDIS
25 #include <typedefs.h>
27 /* This marks the start of a packed structure section. */
28 #include <packed_section_start.h>
30 /* Basic types */
31 typedef char CHAR, *PCHAR;
32 typedef short SHORT, *PSHORT;
33 typedef int INT, *PINT;
34 typedef long LONG, *PLONG;
35 typedef long long LONGLONG, *PLONGLONG;
36 typedef unsigned char UCHAR, *PUCHAR;
37 typedef unsigned short USHORT, *PUSHORT;
38 typedef unsigned short WCHAR, *PWCHAR;
39 typedef unsigned int UINT, *PUINT;
40 typedef unsigned long ULONG, *PULONG;
41 typedef unsigned long long ULONGLONG, *PULONGLONG;
43 /* Basic sized types */
44 typedef int8 INT8, *PINT8;
45 typedef int16 INT16, *PINT16;
46 typedef int32 INT32, *PINT32;
47 typedef int64 INT64, *PINT64;
48 typedef uint8 UINT8, *PUINT8;
49 typedef uint16 UINT16, *PUINT16;
50 typedef uint32 UINT32, *PUINT32;
51 typedef uint64 UINT64, *PUINT64;
53 /* Signed 32-bit wide types */
54 typedef int32 LONG32, *PLONG32;
56 /* Unsigned 32-bit wide types */
57 typedef uint32 ULONG32, *PULONG32;
58 typedef uint32 DWORD32, *PDWORD32;
60 /* Void */
61 #define VOID void
62 typedef void *PVOID;
64 /* Boolean */
65 typedef bool BOOLEAN;
67 /* Handle */
68 typedef void *HANDLE;
69 typedef void *NDIS_HANDLE;
71 /* Same size as a pointer */
72 typedef unsigned int UINT_PTR, *PUINT_PTR;
73 typedef unsigned long ULONG_PTR, *PULONG_PTR;
75 /* Large integer */
76 typedef struct _LARGE_INTEGER {
77 long long QuadPart;
78 } LARGE_INTEGER;
80 #endif /* !NDIS */
83 // This is the type of an NDIS OID value.
86 typedef ULONG NDIS_OID, *PNDIS_OID;
88 #ifndef _NDIS_
89 typedef int NDIS_STATUS, *PNDIS_STATUS;
90 #endif
92 #define STATUS_SUCCESS ((NDIS_STATUS)0x00000000L) // ntsubauth
93 #define STATUS_PENDING ((NDIS_STATUS)0x00000103L) // winnt
94 #define STATUS_UNSUCCESSFUL ((NDIS_STATUS)0xC0000001L)
95 #define STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)0x80000005L)
96 #define STATUS_INSUFFICIENT_RESOURCES ((NDIS_STATUS)0xC000009AL) // ntsubauth
97 #define STATUS_NOT_SUPPORTED ((NDIS_STATUS)0xC00000BBL)
98 #define STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)0xC0000010L)
99 #define STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)0xC000023CL)
102 // NDIS_STATUS values
105 #define NDIS_STATUS_SUCCESS ((NDIS_STATUS)STATUS_SUCCESS)
106 #define NDIS_STATUS_PENDING ((NDIS_STATUS) STATUS_PENDING)
107 #define NDIS_STATUS_NOT_RECOGNIZED ((NDIS_STATUS)0x00010001L)
108 #define NDIS_STATUS_NOT_COPIED ((NDIS_STATUS)0x00010002L)
109 #define NDIS_STATUS_NOT_ACCEPTED ((NDIS_STATUS)0x00010003L)
110 #define NDIS_STATUS_CALL_ACTIVE ((NDIS_STATUS)0x00010007L)
112 #define NDIS_STATUS_ONLINE ((NDIS_STATUS)0x40010003L)
113 #define NDIS_STATUS_RESET_START ((NDIS_STATUS)0x40010004L)
114 #define NDIS_STATUS_RESET_END ((NDIS_STATUS)0x40010005L)
115 #define NDIS_STATUS_RING_STATUS ((NDIS_STATUS)0x40010006L)
116 #define NDIS_STATUS_CLOSED ((NDIS_STATUS)0x40010007L)
117 #define NDIS_STATUS_WAN_LINE_UP ((NDIS_STATUS)0x40010008L)
118 #define NDIS_STATUS_WAN_LINE_DOWN ((NDIS_STATUS)0x40010009L)
119 #define NDIS_STATUS_WAN_FRAGMENT ((NDIS_STATUS)0x4001000AL)
120 #define NDIS_STATUS_MEDIA_CONNECT ((NDIS_STATUS)0x4001000BL)
121 #define NDIS_STATUS_MEDIA_DISCONNECT ((NDIS_STATUS)0x4001000CL)
122 #define NDIS_STATUS_HARDWARE_LINE_UP ((NDIS_STATUS)0x4001000DL)
123 #define NDIS_STATUS_HARDWARE_LINE_DOWN ((NDIS_STATUS)0x4001000EL)
124 #define NDIS_STATUS_INTERFACE_UP ((NDIS_STATUS)0x4001000FL)
125 #define NDIS_STATUS_INTERFACE_DOWN ((NDIS_STATUS)0x40010010L)
126 #define NDIS_STATUS_MEDIA_BUSY ((NDIS_STATUS)0x40010011L)
127 #define NDIS_STATUS_MEDIA_SPECIFIC_INDICATION ((NDIS_STATUS)0x40010012L)
128 #define NDIS_STATUS_WW_INDICATION NDIS_STATUS_MEDIA_SPECIFIC_INDICATION
129 #define NDIS_STATUS_LINK_SPEED_CHANGE ((NDIS_STATUS)0x40010013L)
130 #define NDIS_STATUS_WAN_GET_STATS ((NDIS_STATUS)0x40010014L)
131 #define NDIS_STATUS_WAN_CO_FRAGMENT ((NDIS_STATUS)0x40010015L)
132 #define NDIS_STATUS_WAN_CO_LINKPARAMS ((NDIS_STATUS)0x40010016L)
134 #define NDIS_STATUS_NOT_RESETTABLE ((NDIS_STATUS)0x80010001L)
135 #define NDIS_STATUS_SOFT_ERRORS ((NDIS_STATUS)0x80010003L)
136 #define NDIS_STATUS_HARD_ERRORS ((NDIS_STATUS)0x80010004L)
137 #define NDIS_STATUS_BUFFER_OVERFLOW ((NDIS_STATUS)STATUS_BUFFER_OVERFLOW)
139 #define NDIS_STATUS_INVALID_STATE ((NDIS_STATUS)0xC0000184L)
141 #define NDIS_STATUS_FAILURE ((NDIS_STATUS) STATUS_UNSUCCESSFUL)
142 #define NDIS_STATUS_RESOURCES ((NDIS_STATUS)STATUS_INSUFFICIENT_RESOURCES)
143 #define NDIS_STATUS_CLOSING ((NDIS_STATUS)0xC0010002L)
144 #define NDIS_STATUS_BAD_VERSION ((NDIS_STATUS)0xC0010004L)
145 #define NDIS_STATUS_BAD_CHARACTERISTICS ((NDIS_STATUS)0xC0010005L)
146 #define NDIS_STATUS_ADAPTER_NOT_FOUND ((NDIS_STATUS)0xC0010006L)
147 #define NDIS_STATUS_OPEN_FAILED ((NDIS_STATUS)0xC0010007L)
148 #define NDIS_STATUS_DEVICE_FAILED ((NDIS_STATUS)0xC0010008L)
149 #define NDIS_STATUS_MULTICAST_FULL ((NDIS_STATUS)0xC0010009L)
150 #define NDIS_STATUS_MULTICAST_EXISTS ((NDIS_STATUS)0xC001000AL)
151 #define NDIS_STATUS_MULTICAST_NOT_FOUND ((NDIS_STATUS)0xC001000BL)
152 #define NDIS_STATUS_REQUEST_ABORTED ((NDIS_STATUS)0xC001000CL)
153 #define NDIS_STATUS_RESET_IN_PROGRESS ((NDIS_STATUS)0xC001000DL)
154 #define NDIS_STATUS_CLOSING_INDICATING ((NDIS_STATUS)0xC001000EL)
155 #define NDIS_STATUS_NOT_SUPPORTED ((NDIS_STATUS)STATUS_NOT_SUPPORTED)
156 #define NDIS_STATUS_INVALID_PACKET ((NDIS_STATUS)0xC001000FL)
157 #define NDIS_STATUS_OPEN_LIST_FULL ((NDIS_STATUS)0xC0010010L)
158 #define NDIS_STATUS_ADAPTER_NOT_READY ((NDIS_STATUS)0xC0010011L)
159 #define NDIS_STATUS_ADAPTER_NOT_OPEN ((NDIS_STATUS)0xC0010012L)
160 #define NDIS_STATUS_NOT_INDICATING ((NDIS_STATUS)0xC0010013L)
161 #define NDIS_STATUS_INVALID_LENGTH ((NDIS_STATUS)0xC0010014L)
162 #define NDIS_STATUS_INVALID_DATA ((NDIS_STATUS)0xC0010015L)
163 #define NDIS_STATUS_BUFFER_TOO_SHORT ((NDIS_STATUS)0xC0010016L)
164 #define NDIS_STATUS_INVALID_OID ((NDIS_STATUS)0xC0010017L)
165 #define NDIS_STATUS_ADAPTER_REMOVED ((NDIS_STATUS)0xC0010018L)
166 #define NDIS_STATUS_UNSUPPORTED_MEDIA ((NDIS_STATUS)0xC0010019L)
167 #define NDIS_STATUS_GROUP_ADDRESS_IN_USE ((NDIS_STATUS)0xC001001AL)
168 #define NDIS_STATUS_FILE_NOT_FOUND ((NDIS_STATUS)0xC001001BL)
169 #define NDIS_STATUS_ERROR_READING_FILE ((NDIS_STATUS)0xC001001CL)
170 #define NDIS_STATUS_ALREADY_MAPPED ((NDIS_STATUS)0xC001001DL)
171 #define NDIS_STATUS_RESOURCE_CONFLICT ((NDIS_STATUS)0xC001001EL)
172 #define NDIS_STATUS_NO_CABLE ((NDIS_STATUS)0xC001001FL)
174 #define NDIS_STATUS_INVALID_SAP ((NDIS_STATUS)0xC0010020L)
175 #define NDIS_STATUS_SAP_IN_USE ((NDIS_STATUS)0xC0010021L)
176 #define NDIS_STATUS_INVALID_ADDRESS ((NDIS_STATUS)0xC0010022L)
177 #define NDIS_STATUS_VC_NOT_ACTIVATED ((NDIS_STATUS)0xC0010023L)
178 #define NDIS_STATUS_DEST_OUT_OF_ORDER ((NDIS_STATUS)0xC0010024L) // cause 27
179 #define NDIS_STATUS_VC_NOT_AVAILABLE ((NDIS_STATUS)0xC0010025L) // cause 35,45
180 #define NDIS_STATUS_CELLRATE_NOT_AVAILABLE ((NDIS_STATUS)0xC0010026L) // cause 37
181 #define NDIS_STATUS_INCOMPATABLE_QOS ((NDIS_STATUS)0xC0010027L) // cause 49
182 #define NDIS_STATUS_AAL_PARAMS_UNSUPPORTED ((NDIS_STATUS)0xC0010028L) // cause 93
183 #define NDIS_STATUS_NO_ROUTE_TO_DESTINATION ((NDIS_STATUS)0xC0010029L) // cause 3
185 #define NDIS_STATUS_TOKEN_RING_OPEN_ERROR ((NDIS_STATUS)0xC0011000L)
186 #define NDIS_STATUS_INVALID_DEVICE_REQUEST ((NDIS_STATUS)STATUS_INVALID_DEVICE_REQUEST)
187 #define NDIS_STATUS_NETWORK_UNREACHABLE ((NDIS_STATUS)STATUS_NETWORK_UNREACHABLE)
190 // Ndis Packet Filter Bits (OID_GEN_CURRENT_PACKET_FILTER).
192 #define NDIS_PACKET_TYPE_DIRECTED 0x00000001
193 #define NDIS_PACKET_TYPE_MULTICAST 0x00000002
194 #define NDIS_PACKET_TYPE_ALL_MULTICAST 0x00000004
195 #define NDIS_PACKET_TYPE_BROADCAST 0x00000008
196 #define NDIS_PACKET_TYPE_SOURCE_ROUTING 0x00000010
197 #define NDIS_PACKET_TYPE_PROMISCUOUS 0x00000020
198 #define NDIS_PACKET_TYPE_SMT 0x00000040
199 #define NDIS_PACKET_TYPE_ALL_LOCAL 0x00000080
200 #define NDIS_PACKET_TYPE_GROUP 0x00001000
201 #define NDIS_PACKET_TYPE_ALL_FUNCTIONAL 0x00002000
202 #define NDIS_PACKET_TYPE_FUNCTIONAL 0x00004000
203 #define NDIS_PACKET_TYPE_MAC_FRAME 0x00008000
206 // Required OIDs
208 #define OID_GEN_SUPPORTED_LIST 0x00010101
209 #define OID_GEN_HARDWARE_STATUS 0x00010102
210 #define OID_GEN_MEDIA_SUPPORTED 0x00010103
211 #define OID_GEN_MEDIA_IN_USE 0x00010104
212 #define OID_GEN_MAXIMUM_LOOKAHEAD 0x00010105
213 #define OID_GEN_MAXIMUM_FRAME_SIZE 0x00010106
214 #define OID_GEN_LINK_SPEED 0x00010107
215 #define OID_GEN_TRANSMIT_BUFFER_SPACE 0x00010108
216 #define OID_GEN_RECEIVE_BUFFER_SPACE 0x00010109
217 #define OID_GEN_TRANSMIT_BLOCK_SIZE 0x0001010A
218 #define OID_GEN_RECEIVE_BLOCK_SIZE 0x0001010B
219 #define OID_GEN_VENDOR_ID 0x0001010C
220 #define OID_GEN_VENDOR_DESCRIPTION 0x0001010D
221 #define OID_GEN_CURRENT_PACKET_FILTER 0x0001010E
222 #define OID_GEN_CURRENT_LOOKAHEAD 0x0001010F
223 #define OID_GEN_DRIVER_VERSION 0x00010110
224 #define OID_GEN_MAXIMUM_TOTAL_SIZE 0x00010111
225 #define OID_GEN_PROTOCOL_OPTIONS 0x00010112
226 #define OID_GEN_MAC_OPTIONS 0x00010113
227 #define OID_GEN_MEDIA_CONNECT_STATUS 0x00010114
228 #define OID_GEN_MAXIMUM_SEND_PACKETS 0x00010115
229 #define OID_GEN_VENDOR_DRIVER_VERSION 0x00010116
230 #define OID_GEN_SUPPORTED_GUIDS 0x00010117
231 #define OID_GEN_NETWORK_LAYER_ADDRESSES 0x00010118 // Set only
232 #define OID_GEN_TRANSPORT_HEADER_OFFSET 0x00010119 // Set only
233 #define OID_GEN_MACHINE_NAME 0x0001021A
234 #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B // Set only
235 #define OID_GEN_VLAN_ID 0x0001021C
238 // Optional OIDs
240 #define OID_GEN_MEDIA_CAPABILITIES 0x00010201
241 #define OID_GEN_PHYSICAL_MEDIUM 0x00010202
243 #define OID_GEN_RNDIS_CONFIG_PARAMETER 0x0001021B // Set only
246 // Required statistics
248 #define OID_GEN_XMIT_OK 0x00020101
249 #define OID_GEN_RCV_OK 0x00020102
250 #define OID_GEN_XMIT_ERROR 0x00020103
251 #define OID_GEN_RCV_ERROR 0x00020104
252 #define OID_GEN_RCV_NO_BUFFER 0x00020105
255 // Optional statistics
257 #define OID_GEN_DIRECTED_BYTES_XMIT 0x00020201
258 #define OID_GEN_DIRECTED_FRAMES_XMIT 0x00020202
259 #define OID_GEN_MULTICAST_BYTES_XMIT 0x00020203
260 #define OID_GEN_MULTICAST_FRAMES_XMIT 0x00020204
261 #define OID_GEN_BROADCAST_BYTES_XMIT 0x00020205
262 #define OID_GEN_BROADCAST_FRAMES_XMIT 0x00020206
263 #define OID_GEN_DIRECTED_BYTES_RCV 0x00020207
264 #define OID_GEN_DIRECTED_FRAMES_RCV 0x00020208
265 #define OID_GEN_MULTICAST_BYTES_RCV 0x00020209
266 #define OID_GEN_MULTICAST_FRAMES_RCV 0x0002020A
267 #define OID_GEN_BROADCAST_BYTES_RCV 0x0002020B
268 #define OID_GEN_BROADCAST_FRAMES_RCV 0x0002020C
270 #define OID_GEN_RCV_CRC_ERROR 0x0002020D
271 #define OID_GEN_TRANSMIT_QUEUE_LENGTH 0x0002020E
273 #define OID_GEN_GET_TIME_CAPS 0x0002020F
274 #define OID_GEN_GET_NETCARD_TIME 0x00020210
275 #define OID_GEN_NETCARD_LOAD 0x00020211
276 #define OID_GEN_DEVICE_PROFILE 0x00020212
279 // The following is exported by NDIS itself and is only queryable. It returns
280 // the time in milliseconds a driver took to initialize.
282 #define OID_GEN_INIT_TIME_MS 0x00020213
283 #define OID_GEN_RESET_COUNTS 0x00020214
284 #define OID_GEN_MEDIA_SENSE_COUNTS 0x00020215
285 #define OID_GEN_FRIENDLY_NAME 0x00020216
286 #define OID_GEN_MINIPORT_INFO 0x00020217
287 #define OID_GEN_RESET_VERIFY_PARAMETERS 0x00020218
290 // 802.3 Objects (Ethernet)
292 #define OID_802_3_PERMANENT_ADDRESS 0x01010101
293 #define OID_802_3_CURRENT_ADDRESS 0x01010102
294 #define OID_802_3_MULTICAST_LIST 0x01010103
295 #define OID_802_3_MAXIMUM_LIST_SIZE 0x01010104
296 #define OID_802_3_MAC_OPTIONS 0x01010105
298 #define NDIS_802_3_MAC_OPTION_PRIORITY 0x00000001
300 #define OID_802_3_RCV_ERROR_ALIGNMENT 0x01020101
301 #define OID_802_3_XMIT_ONE_COLLISION 0x01020102
302 #define OID_802_3_XMIT_MORE_COLLISIONS 0x01020103
304 #define OID_802_3_XMIT_DEFERRED 0x01020201
305 #define OID_802_3_XMIT_MAX_COLLISIONS 0x01020202
306 #define OID_802_3_RCV_OVERRUN 0x01020203
307 #define OID_802_3_XMIT_UNDERRUN 0x01020204
308 #define OID_802_3_XMIT_HEARTBEAT_FAILURE 0x01020205
309 #define OID_802_3_XMIT_TIMES_CRS_LOST 0x01020206
310 #define OID_802_3_XMIT_LATE_COLLISIONS 0x01020207
312 // PnP and PM OIDs
314 #define OID_PNP_CAPABILITIES 0xFD010100
315 #define OID_PNP_SET_POWER 0xFD010101
316 #define OID_PNP_QUERY_POWER 0xFD010102
317 #define OID_PNP_ADD_WAKE_UP_PATTERN 0xFD010103
318 #define OID_PNP_REMOVE_WAKE_UP_PATTERN 0xFD010104
319 #define OID_PNP_WAKE_UP_PATTERN_LIST 0xFD010105
320 #define OID_PNP_ENABLE_WAKE_UP 0xFD010106
323 // PnP/PM Statistics (Optional).
325 #define OID_PNP_WAKE_UP_OK 0xFD020200
326 #define OID_PNP_WAKE_UP_ERROR 0xFD020201
329 // The following bits are defined for OID_PNP_ENABLE_WAKE_UP
331 #define NDIS_PNP_WAKE_UP_MAGIC_PACKET 0x00000001
332 #define NDIS_PNP_WAKE_UP_PATTERN_MATCH 0x00000002
333 #define NDIS_PNP_WAKE_UP_LINK_CHANGE 0x00000004
336 // The following structure defines the device power states.
338 typedef enum _NDIS_DEVICE_POWER_STATE
340 NdisDeviceStateUnspecified = 0,
341 NdisDeviceStateD0,
342 NdisDeviceStateD1,
343 NdisDeviceStateD2,
344 NdisDeviceStateD3,
345 NdisDeviceStateMaximum
346 } NDIS_DEVICE_POWER_STATE, *PNDIS_DEVICE_POWER_STATE;
349 // The following structure defines the wake-up capabilities of the device.
351 typedef struct _NDIS_PM_WAKE_UP_CAPABILITIES
353 NDIS_DEVICE_POWER_STATE MinMagicPacketWakeUp;
354 NDIS_DEVICE_POWER_STATE MinPatternWakeUp;
355 NDIS_DEVICE_POWER_STATE MinLinkChangeWakeUp;
356 } NDIS_PM_WAKE_UP_CAPABILITIES, *PNDIS_PM_WAKE_UP_CAPABILITIES;
359 // the following flags define the -enabled- wake-up capabilities of the device
360 // passed in the Flags field of NDIS_PNP_CAPABILITIES structure
362 #define NDIS_DEVICE_WAKE_UP_ENABLE 0x00000001
363 #define NDIS_DEVICE_WAKE_ON_PATTERN_MATCH_ENABLE 0x00000002
364 #define NDIS_DEVICE_WAKE_ON_MAGIC_PACKET_ENABLE 0x00000004
367 // This structure defines general PnP capabilities of the miniport driver.
369 typedef struct _NDIS_PNP_CAPABILITIES
371 ULONG Flags;
372 NDIS_PM_WAKE_UP_CAPABILITIES WakeUpCapabilities;
373 } NDIS_PNP_CAPABILITIES, *PNDIS_PNP_CAPABILITIES;
377 // Ndis MAC option bits (OID_GEN_MAC_OPTIONS).
379 #define NDIS_MAC_OPTION_COPY_LOOKAHEAD_DATA 0x00000001
380 #define NDIS_MAC_OPTION_RECEIVE_SERIALIZED 0x00000002
381 #define NDIS_MAC_OPTION_TRANSFERS_NOT_PEND 0x00000004
382 #define NDIS_MAC_OPTION_NO_LOOPBACK 0x00000008
383 #define NDIS_MAC_OPTION_FULL_DUPLEX 0x00000010
384 #define NDIS_MAC_OPTION_EOTX_INDICATION 0x00000020
385 #define NDIS_MAC_OPTION_8021P_PRIORITY 0x00000040
386 #define NDIS_MAC_OPTION_SUPPORTS_MAC_ADDRESS_OVERWRITE 0x00000080
387 #define NDIS_MAC_OPTION_RECEIVE_AT_DPC 0x00000100
388 #define NDIS_MAC_OPTION_8021Q_VLAN 0x00000200
389 #define NDIS_MAC_OPTION_RESERVED 0x80000000
392 // TCP/IP OIDs
394 #define OID_TCP_TASK_OFFLOAD 0xFC010201
395 #define OID_TCP_TASK_IPSEC_ADD_SA 0xFC010202
396 #define OID_TCP_TASK_IPSEC_DELETE_SA 0xFC010203
397 #define OID_TCP_SAN_SUPPORT 0xFC010204
399 typedef struct _NDIS_802_11_FIXED_IEs
401 UCHAR Timestamp[8];
402 USHORT BeaconInterval;
403 USHORT Capabilities;
404 } NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
407 // IEEE 802.11 OIDs
409 #define OID_802_11_BSSID 0x0D010101
410 #define OID_802_11_SSID 0x0D010102
411 #define OID_802_11_NETWORK_TYPES_SUPPORTED 0x0D010203
412 #define OID_802_11_NETWORK_TYPE_IN_USE 0x0D010204
413 #define OID_802_11_TX_POWER_LEVEL 0x0D010205
414 #define OID_802_11_RSSI 0x0D010206
415 #define OID_802_11_RSSI_TRIGGER 0x0D010207
416 #define OID_802_11_INFRASTRUCTURE_MODE 0x0D010108
417 #define OID_802_11_FRAGMENTATION_THRESHOLD 0x0D010209
418 #define OID_802_11_RTS_THRESHOLD 0x0D01020A
419 #define OID_802_11_NUMBER_OF_ANTENNAS 0x0D01020B
420 #define OID_802_11_RX_ANTENNA_SELECTED 0x0D01020C
421 #define OID_802_11_TX_ANTENNA_SELECTED 0x0D01020D
422 #define OID_802_11_SUPPORTED_RATES 0x0D01020E
423 #define OID_802_11_DESIRED_RATES 0x0D010210
424 #define OID_802_11_CONFIGURATION 0x0D010211
425 #define OID_802_11_STATISTICS 0x0D020212
426 #define OID_802_11_ADD_WEP 0x0D010113
427 #define OID_802_11_REMOVE_WEP 0x0D010114
428 #define OID_802_11_DISASSOCIATE 0x0D010115
429 #define OID_802_11_POWER_MODE 0x0D010216
430 #define OID_802_11_BSSID_LIST 0x0D010217
431 #define OID_802_11_AUTHENTICATION_MODE 0x0D010118
432 #define OID_802_11_PRIVACY_FILTER 0x0D010119
433 #define OID_802_11_BSSID_LIST_SCAN 0x0D01011A
434 #define OID_802_11_WEP_STATUS 0x0D01011B
435 // Renamed to support more than just WEP encryption
436 #define OID_802_11_ENCRYPTION_STATUS OID_802_11_WEP_STATUS
437 #define OID_802_11_RELOAD_DEFAULTS 0x0D01011C
438 // Added to allow key mapping and default keys
439 #define OID_802_11_ADD_KEY 0x0D01011D
440 #define OID_802_11_REMOVE_KEY 0x0D01011E
441 #define OID_802_11_ASSOCIATION_INFORMATION 0x0D01011F
442 #define OID_802_11_TEST 0x0D010120
443 #define OID_802_11_CAPABILITY 0x0D010122
444 #define OID_802_11_PMKID 0x0D010123
447 // IEEE 802.11 Structures and definitions
449 // new types for Media Specific Indications
451 typedef enum _NDIS_802_11_STATUS_TYPE
453 Ndis802_11StatusType_Authentication,
454 Ndis802_11StatusType_MediaStreamMode,
455 Ndis802_11StatusType_PMKID_CandidateList,
456 Ndis802_11StatusTypeMax // not a real type, defined as an upper bound
457 } NDIS_802_11_STATUS_TYPE, *PNDIS_802_11_STATUS_TYPE;
459 typedef UCHAR NDIS_802_11_MAC_ADDRESS[6];
461 typedef struct _NDIS_802_11_STATUS_INDICATION
463 NDIS_802_11_STATUS_TYPE StatusType;
464 } NDIS_802_11_STATUS_INDICATION, *PNDIS_802_11_STATUS_INDICATION;
466 // mask for authentication/integrity fields
467 #define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS 0x0f
469 #define NDIS_802_11_AUTH_REQUEST_REAUTH 0x01
470 #define NDIS_802_11_AUTH_REQUEST_KEYUPDATE 0x02
471 #define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR 0x06
472 #define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR 0x0E
474 typedef struct _NDIS_802_11_AUTHENTICATION_REQUEST
476 ULONG Length; // Length of structure
477 NDIS_802_11_MAC_ADDRESS Bssid;
478 char Reserved[2]; // BCM - added for explicit alignment
479 ULONG Flags;
480 } NDIS_802_11_AUTHENTICATION_REQUEST, *PNDIS_802_11_AUTHENTICATION_REQUEST;
482 //Added new types for PMKID Candidate lists.
483 typedef struct _PMKID_CANDIDATE {
484 NDIS_802_11_MAC_ADDRESS BSSID;
485 char Reserved[2]; // BCM - added for explicit alignment
486 ULONG Flags;
487 } PMKID_CANDIDATE, *PPMKID_CANDIDATE;
489 typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST
491 ULONG Version; // Version of the structure
492 ULONG NumCandidates; // No. of pmkid candidates
493 PMKID_CANDIDATE CandidateList[1];
494 } NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
496 //Flags for PMKID Candidate list structure
497 #define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED 0x01
500 // IEEE 802.11 Structures and definitions
503 typedef enum _NDIS_802_11_NETWORK_TYPE
505 Ndis802_11FH,
506 Ndis802_11DS,
507 Ndis802_11OFDM5,
508 Ndis802_11OFDM24,
509 Ndis802_11Automode,
510 Ndis802_11NetworkTypeMax // not a real type, defined as an upper bound
511 } NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
513 typedef struct _NDIS_802_11_NETWORK_TYPE_LIST
515 ULONG NumberOfItems; // in list below, at least 1
516 NDIS_802_11_NETWORK_TYPE NetworkType [1];
517 } NDIS_802_11_NETWORK_TYPE_LIST, *PNDIS_802_11_NETWORK_TYPE_LIST;
519 typedef enum _NDIS_802_11_POWER_MODE
521 Ndis802_11PowerModeCAM,
522 Ndis802_11PowerModeMAX_PSP,
523 Ndis802_11PowerModeFast_PSP,
524 Ndis802_11PowerModeMax // not a real mode, defined as an upper bound
525 } NDIS_802_11_POWER_MODE, *PNDIS_802_11_POWER_MODE;
527 typedef ULONG NDIS_802_11_TX_POWER_LEVEL; // in milliwatts
530 // Received Signal Strength Indication
532 typedef LONG NDIS_802_11_RSSI; // in dBm
534 typedef struct _NDIS_802_11_CONFIGURATION_FH
536 ULONG Length; // Length of structure
537 ULONG HopPattern; // As defined by 802.11, MSB set
538 ULONG HopSet; // to one if non-802.11
539 ULONG DwellTime; // units are Kusec
540 } NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
542 typedef struct _NDIS_802_11_CONFIGURATION
544 ULONG Length; // Length of structure
545 ULONG BeaconPeriod; // units are Kusec
546 ULONG ATIMWindow; // units are Kusec
547 ULONG DSConfig; // Frequency, units are kHz
548 NDIS_802_11_CONFIGURATION_FH FHConfig;
549 } NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
551 typedef struct _NDIS_802_11_STATISTICS
553 ULONG Length; // Length of structure
554 char Reserved[4]; // BCM - added for explicit alignment
555 LARGE_INTEGER TransmittedFragmentCount;
556 LARGE_INTEGER MulticastTransmittedFrameCount;
557 LARGE_INTEGER FailedCount;
558 LARGE_INTEGER RetryCount;
559 LARGE_INTEGER MultipleRetryCount;
560 LARGE_INTEGER RTSSuccessCount;
561 LARGE_INTEGER RTSFailureCount;
562 LARGE_INTEGER ACKFailureCount;
563 LARGE_INTEGER FrameDuplicateCount;
564 LARGE_INTEGER ReceivedFragmentCount;
565 LARGE_INTEGER MulticastReceivedFrameCount;
566 LARGE_INTEGER FCSErrorCount;
567 LARGE_INTEGER TKIPLocalMICFailures;
568 LARGE_INTEGER TKIPRemoteMICErrors;
569 LARGE_INTEGER TKIPCounterMeasuresInvoked;
570 LARGE_INTEGER TKIPReplays;
571 LARGE_INTEGER CCMPFormatErrors;
572 LARGE_INTEGER CCMPReplays;
573 LARGE_INTEGER CCMPDecryptErrors;
574 LARGE_INTEGER FourWayHandshakeFailures;
575 } NDIS_802_11_STATISTICS, *PNDIS_802_11_STATISTICS;
577 typedef ULONG NDIS_802_11_KEY_INDEX;
578 typedef long long NDIS_802_11_KEY_RSC;
580 // Key mapping keys require a BSSID
581 typedef struct _NDIS_802_11_KEY
583 ULONG Length; // Length of this structure
584 ULONG KeyIndex;
585 ULONG KeyLength; // length of key in bytes
586 NDIS_802_11_MAC_ADDRESS BSSID;
587 char Reserved[6]; // BCM - added for explicit alignment
588 NDIS_802_11_KEY_RSC KeyRSC;
589 UCHAR KeyMaterial[1]; // variable length depending on above field
590 } NDIS_802_11_KEY, *PNDIS_802_11_KEY;
592 typedef struct _NDIS_802_11_REMOVE_KEY
594 ULONG Length; // Length of this structure
595 ULONG KeyIndex;
596 NDIS_802_11_MAC_ADDRESS BSSID;
597 } NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
599 typedef struct _NDIS_802_11_WEP
601 ULONG Length; // Length of this structure
602 ULONG KeyIndex; // 0 is the per-client key, 1-N are the
603 // global keys
604 ULONG KeyLength; // length of key in bytes
605 UCHAR KeyMaterial[1]; // variable length depending on above field
606 } NDIS_802_11_WEP, *PNDIS_802_11_WEP;
608 typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
610 Ndis802_11IBSS,
611 Ndis802_11Infrastructure,
612 Ndis802_11AutoUnknown,
613 Ndis802_11InfrastructureMax // Not a real value, defined as upper bound
614 } NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
616 typedef enum _NDIS_802_11_AUTHENTICATION_MODE
618 Ndis802_11AuthModeOpen,
619 Ndis802_11AuthModeShared,
620 Ndis802_11AuthModeAutoSwitch,
621 Ndis802_11AuthModeWPA,
622 Ndis802_11AuthModeWPAPSK,
623 Ndis802_11AuthModeWPANone,
624 Ndis802_11AuthModeWPA2,
625 Ndis802_11AuthModeWPA2PSK,
626 Ndis802_11AuthModeMax // Not a real mode, defined as upper bound
627 } NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
629 typedef UCHAR NDIS_802_11_RATES[8]; // Set of 8 data rates
630 typedef UCHAR NDIS_802_11_RATES_EX[16]; // Set of 16 data rates
632 typedef struct _NDIS_802_11_SSID
634 ULONG SsidLength; // length of SSID field below, in bytes;
635 // this can be zero.
636 UCHAR Ssid[32]; // SSID information field
637 } NDIS_802_11_SSID, *PNDIS_802_11_SSID;
639 typedef struct _NDIS_WLAN_BSSID
641 ULONG Length; // Length of this structure
642 NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID
643 UCHAR Reserved[2];
644 NDIS_802_11_SSID Ssid; // SSID
645 ULONG Privacy; // WEP encryption requirement
646 NDIS_802_11_RSSI Rssi; // receive signal
647 // strength in dBm
648 NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
649 NDIS_802_11_CONFIGURATION Configuration;
650 NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
651 NDIS_802_11_RATES SupportedRates;
652 } NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
654 typedef struct _NDIS_802_11_BSSID_LIST
656 ULONG NumberOfItems; // in list below, at least 1
657 NDIS_WLAN_BSSID Bssid[1];
658 } NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
660 // Added Capabilities, IELength and IEs for each BSSID
661 typedef struct _NDIS_WLAN_BSSID_EX
663 ULONG Length; // Length of this structure
664 NDIS_802_11_MAC_ADDRESS MacAddress; // BSSID
665 UCHAR Reserved[2];
666 NDIS_802_11_SSID Ssid; // SSID
667 ULONG Privacy; // WEP encryption requirement
668 NDIS_802_11_RSSI Rssi; // receive signal
669 // strength in dBm
670 NDIS_802_11_NETWORK_TYPE NetworkTypeInUse;
671 NDIS_802_11_CONFIGURATION Configuration;
672 NDIS_802_11_NETWORK_INFRASTRUCTURE InfrastructureMode;
673 NDIS_802_11_RATES_EX SupportedRates;
674 ULONG IELength;
675 UCHAR IEs[1];
676 } NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
678 typedef struct _NDIS_802_11_BSSID_LIST_EX
680 ULONG NumberOfItems; // in list below, at least 1
681 NDIS_WLAN_BSSID_EX Bssid[1];
682 } NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
684 typedef struct _NDIS_802_11_VARIABLE_IEs
686 UCHAR ElementID;
687 UCHAR Length; // Number of bytes in data field
688 UCHAR data[1];
689 } NDIS_802_11_VARIABLE_IEs, *PNDIS_802_11_VARIABLE_IEs;
691 typedef ULONG NDIS_802_11_FRAGMENTATION_THRESHOLD;
693 typedef ULONG NDIS_802_11_RTS_THRESHOLD;
695 typedef ULONG NDIS_802_11_ANTENNA;
697 typedef enum _NDIS_802_11_PRIVACY_FILTER
699 Ndis802_11PrivFilterAcceptAll,
700 Ndis802_11PrivFilter8021xWEP
701 } NDIS_802_11_PRIVACY_FILTER, *PNDIS_802_11_PRIVACY_FILTER;
703 // Added new encryption types
704 // Also aliased typedef to new name
705 typedef enum _NDIS_802_11_WEP_STATUS
707 Ndis802_11WEPEnabled,
708 Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
709 Ndis802_11WEPDisabled,
710 Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
711 Ndis802_11WEPKeyAbsent,
712 Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
713 Ndis802_11WEPNotSupported,
714 Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
715 Ndis802_11Encryption2Enabled,
716 Ndis802_11Encryption2KeyAbsent,
717 Ndis802_11Encryption3Enabled,
718 Ndis802_11Encryption3KeyAbsent
719 } NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
720 NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
722 typedef enum _NDIS_802_11_RELOAD_DEFAULTS
724 Ndis802_11ReloadWEPKeys
725 } NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
727 #define NDIS_802_11_AI_REQFI_CAPABILITIES 1
728 #define NDIS_802_11_AI_REQFI_LISTENINTERVAL 2
729 #define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS 4
731 #define NDIS_802_11_AI_RESFI_CAPABILITIES 1
732 #define NDIS_802_11_AI_RESFI_STATUSCODE 2
733 #define NDIS_802_11_AI_RESFI_ASSOCIATIONID 4
735 typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
737 ULONG Length;
738 USHORT AvailableRequestFixedIEs;
739 struct _NDIS_802_11_AI_REQFI {
740 USHORT Capabilities;
741 USHORT ListenInterval;
742 NDIS_802_11_MAC_ADDRESS CurrentAPAddress;
743 } RequestFixedIEs;
744 ULONG RequestIELength;
745 ULONG OffsetRequestIEs;
746 USHORT AvailableResponseFixedIEs;
747 struct _NDIS_802_11_AI_RESFI {
748 USHORT Capabilities;
749 USHORT StatusCode;
750 USHORT AssociationId;
751 } ResponseFixedIEs;
752 ULONG ResponseIELength;
753 ULONG OffsetResponseIEs;
754 } NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
756 typedef struct _NDIS_802_11_AUTHENTICATION_EVENT
758 NDIS_802_11_STATUS_INDICATION Status;
759 NDIS_802_11_AUTHENTICATION_REQUEST Request[1];
760 } NDIS_802_11_AUTHENTICATION_EVENT, *PNDIS_802_11_AUTHENTICATION_EVENT;
762 typedef struct _NDIS_802_11_TEST
764 ULONG Length;
765 ULONG Type;
766 union {
767 NDIS_802_11_AUTHENTICATION_EVENT AuthenticationEvent;
768 NDIS_802_11_RSSI RssiTrigger;
770 } NDIS_802_11_TEST, *PNDIS_802_11_TEST;
772 // PMKID Structures
773 typedef UCHAR NDIS_802_11_PMKID_VALUE[16];
775 typedef struct _BSSID_INFO
777 NDIS_802_11_MAC_ADDRESS BSSID;
778 NDIS_802_11_PMKID_VALUE PMKID;
779 } BSSID_INFO, *PBSSID_INFO;
781 typedef struct _NDIS_802_11_PMKID
783 ULONG Length;
784 ULONG BSSIDInfoCount;
785 BSSID_INFO BSSIDInfo[1];
786 } NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
788 typedef struct _NDIS_802_11_AUTH_ENCRYPTION
790 NDIS_802_11_AUTHENTICATION_MODE AuthModeSupported;
791 NDIS_802_11_ENCRYPTION_STATUS EncryptStatusSupported;
792 } NDIS_802_11_AUTH_ENCRYPTION, *PNDIS_802_11_AUTH_ENCRYPTION;
794 typedef struct _NDIS_802_11_CAPABILITY
796 ULONG Length;
797 ULONG Version;
798 ULONG NoOfPMKIDs;
799 ULONG NoOfAuthEncryptPairsSupported;
800 NDIS_802_11_AUTH_ENCRYPTION AuthEncryptionSupported[1];
801 } NDIS_802_11_CAPABILITY, *PNDIS_802_11_CAPABILITY;
804 // Medium the Ndis Driver is running on (OID_GEN_MEDIA_SUPPORTED/ OID_GEN_MEDIA_IN_USE).
806 typedef enum _NDIS_MEDIUM
808 NdisMedium802_3,
809 NdisMedium802_5,
810 NdisMediumFddi,
811 NdisMediumWan,
812 NdisMediumLocalTalk,
813 NdisMediumDix, // defined for convenience, not a real medium
814 NdisMediumArcnetRaw,
815 NdisMediumArcnet878_2,
816 NdisMediumAtm,
817 NdisMediumWirelessWan,
818 NdisMediumIrda,
819 NdisMediumBpc,
820 NdisMediumCoWan,
821 NdisMedium1394,
822 NdisMediumMax // Not a real medium, defined as an upper-bound
823 } NDIS_MEDIUM, *PNDIS_MEDIUM;
826 // Physical Medium Type definitions. Used with OID_GEN_PHYSICAL_MEDIUM.
828 typedef enum _NDIS_PHYSICAL_MEDIUM
830 NdisPhysicalMediumUnspecified,
831 NdisPhysicalMediumWirelessLan,
832 NdisPhysicalMediumCableModem,
833 NdisPhysicalMediumPhoneLine,
834 NdisPhysicalMediumPowerLine,
835 NdisPhysicalMediumDSL, // includes ADSL and UADSL (G.Lite)
836 NdisPhysicalMediumFibreChannel,
837 NdisPhysicalMedium1394,
838 NdisPhysicalMediumWirelessWan,
839 NdisPhysicalMediumMax // Not a real physical type, defined as an upper-bound
840 } NDIS_PHYSICAL_MEDIUM, *PNDIS_PHYSICAL_MEDIUM;
843 // Hardware status codes (OID_GEN_HARDWARE_STATUS).
845 typedef enum _NDIS_HARDWARE_STATUS
847 NdisHardwareStatusReady,
848 NdisHardwareStatusInitializing,
849 NdisHardwareStatusReset,
850 NdisHardwareStatusClosing,
851 NdisHardwareStatusNotReady
852 } NDIS_HARDWARE_STATUS, *PNDIS_HARDWARE_STATUS;
855 // Defines the state of the LAN media
857 typedef enum _NDIS_MEDIA_STATE
859 NdisMediaStateConnected,
860 NdisMediaStateDisconnected
861 } NDIS_MEDIA_STATE, *PNDIS_MEDIA_STATE;
863 #ifndef GUID_DEFINED
864 #define GUID_DEFINED
865 typedef struct _GUID {
866 unsigned long Data1;
867 unsigned short Data2;
868 unsigned short Data3;
869 unsigned char Data4[ 8 ];
870 } GUID;
871 #endif
873 #define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
874 const GUID name \
875 = { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
877 #define OID_GEN_SUPPORTED_GUIDS 0x00010117
880 // Structure to be used for OID_GEN_SUPPORTED_GUIDS.
881 // This structure describes an OID to GUID mapping.
882 // Or a Status to GUID mapping.
883 // When ndis receives a request for a give GUID it will
884 // query the miniport with the supplied OID.
886 typedef struct _NDIS_GUID
888 GUID Guid;
889 union
891 NDIS_OID Oid;
892 NDIS_STATUS Status;
894 ULONG Size; // Size of the data element. If the GUID
895 // represents an array then this is the
896 // size of an element in the array.
897 // This is -1 for strings.
898 ULONG Flags;
899 } NDIS_GUID, *PNDIS_GUID;
901 #define fNDIS_GUID_TO_OID 0x00000001
902 #define fNDIS_GUID_TO_STATUS 0x00000002
903 #define fNDIS_GUID_ANSI_STRING 0x00000004
904 #define fNDIS_GUID_UNICODE_STRING 0x00000008
905 #define fNDIS_GUID_ARRAY 0x00000010
906 #define fNDIS_GUID_ALLOW_READ 0x00000020
907 #define fNDIS_GUID_ALLOW_WRITE 0x00000040
910 // Possible registry configuration value data types
912 typedef enum _NDIS_PARAMETER_TYPE
914 NdisParameterInteger,
915 NdisParameterHexInteger,
916 NdisParameterString,
917 NdisParameterMultiString,
918 NdisParameterBinary
919 } NDIS_PARAMETER_TYPE, *PNDIS_PARAMETER_TYPE;
921 typedef struct _NDIS_STRING {
922 USHORT Length;
923 USHORT MaximumLength;
924 char *Buffer;
925 } NDIS_STRING, *PNDIS_STRING;
927 typedef struct _NDIS_CONFIGURATION_PARAMETER {
928 NDIS_PARAMETER_TYPE ParameterType;
929 union {
930 ULONG IntegerData;
931 NDIS_STRING StringData;
932 } ParameterData;
933 } NDIS_CONFIGURATION_PARAMETER, *PNDIS_CONFIGURATION_PARAMETER;
937 * Provide OSL equivalents to NDIS utility functions defined in ndis.h.
940 #include <osl.h>
942 #define NdisMoveMemory(dst, src, len) bcopy((src), (dst), (len))
943 #define NdisEqualMemory(b1, b2, len) (!bcmp((b1), (b2), (len)))
944 #define NdisZeroMemory(b, len) bzero((b), (len))
947 /* This marks the end of a packed structure section. */
948 #include <packed_section_end.h>
950 #endif /* _bcm_ndis_h_ */