2
* Copyright (C) 2003-2005 Pontus Fuchs, Giridhar Pemmasani
4
* This program is free software; you can redistribute it and/or modify
5
* it under the terms of the GNU General Public License as published by
6
* the Free Software Foundation; either version 2 of the License, or
7
* (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
16
#ifndef _NDISWRAPPER_H_
17
#define _NDISWRAPPER_H_
19
#define DRIVER_VERSION "1.56"
20
#define UTILS_VERSION "1.9"
22
#define DRIVER_NAME "ndiswrapper"
23
#define DRIVER_CONFIG_DIR "/etc/ndiswrapper"
25
#define SSID_MAX_WPA_IE_LEN 40
26
#define NDIS_ESSID_MAX_SIZE 32
27
#define NDIS_ENCODING_TOKEN_MAX 32
28
#define MAX_ENCR_KEYS 4
29
#define TX_RING_SIZE 16
30
#define NDIS_MAX_RATES 8
31
#define NDIS_MAX_RATES_EX 16
32
#define WLAN_EID_GENERIC 221
33
#define MAX_WPA_IE_LEN 64
34
#define MAX_STR_LEN 512
36
#define WRAP_PCI_BUS 5
37
#define WRAP_PCMCIA_BUS 8
38
/* some USB devices, e.g., DWL-G120 have BusType as 0 */
39
#define WRAP_INTERNAL_BUS 0
40
/* documentation at msdn says 15 is PNP bus, but inf files from all
41
* vendors say 15 is USB; which is correct? */
42
#define WRAP_USB_BUS 15
44
/* NDIS device must be 0, for compatability with old versions of
45
* ndiswrapper where device type for NDIS drivers is 0 */
46
#define WRAP_NDIS_DEVICE 0
47
#define WRAP_USB_DEVICE 1
48
#define WRAP_BLUETOOTH_DEVICE1 2
49
#define WRAP_BLUETOOTH_DEVICE2 3
51
#define WRAP_DEVICE_BUS(dev, bus) ((dev) << 8 | (bus))
52
#define WRAP_BUS(dev_bus) ((dev_bus) & 0x000FF)
53
#define WRAP_DEVICE(dev_bus) ((dev_bus) >> 8)
55
#define MAX_DRIVER_NAME_LEN 32
56
#define MAX_VERSION_STRING_LEN 64
57
#define MAX_SETTING_NAME_LEN 128
58
#define MAX_SETTING_VALUE_LEN 256
60
#define MAX_DRIVER_PE_IMAGES 4
61
#define MAX_DRIVER_BIN_FILES 5
62
#define MAX_DEVICE_SETTINGS 512
64
#define MAX_ALLOCATED_URBS 15
68
#define MAC2STR(a) (a)[0], (a)[1], (a)[2], (a)[3], (a)[4], (a)[5]
69
#define MACSTRSEP "%02x:%02x:%02x:%02x:%02x:%02x"
70
#define MACSTR "%02x%02x%02x%02x%02x%02x"
71
#define MACINTADR(a) (int*)&((a)[0]), (int*)&((a)[1]), (int*)&((a)[2]), \
72
(int*)&((a)[3]), (int*)&((a)[4]), (int*)&((a)[5])
77
#define MSG(level, fmt, ...) \
78
printk(level "ndiswrapper (%s:%d): " fmt "\n", \
79
__func__, __LINE__ , ## __VA_ARGS__)
81
#define WARNING(fmt, ...) MSG(KERN_WARNING, fmt, ## __VA_ARGS__)
82
#define ERROR(fmt, ...) MSG(KERN_ERR, fmt , ## __VA_ARGS__)
83
#define INFO(fmt, ...) MSG(KERN_INFO, fmt , ## __VA_ARGS__)
84
#define TODO() WARNING("not fully implemented (yet)")
86
#define TRACE(fmt, ...) do { } while (0)
87
#define TRACE1(fmt, ...) do { } while (0)
88
#define TRACE2(fmt, ...) do { } while (0)
89
#define TRACE3(fmt, ...) do { } while (0)
90
#define TRACE4(fmt, ...) do { } while (0)
91
#define TRACE5(fmt, ...) do { } while (0)
92
#define TRACE6(fmt, ...) do { } while (0)
94
/* for a block of code */
95
#define DBG_BLOCK(level) while (0)
101
#define TRACE(level, fmt, ...) \
103
if (debug >= level) \
104
printk(KERN_INFO "%s (%s:%d): " fmt "\n", DRIVER_NAME, \
105
__func__, __LINE__ , ## __VA_ARGS__); \
108
#define DBG_BLOCK(level) if (debug >= level)
111
#if defined(DEBUG) && DEBUG >= 1
113
#define TRACE1(fmt, ...) TRACE(1, fmt , ## __VA_ARGS__)
116
#if defined(DEBUG) && DEBUG >= 2
118
#define TRACE2(fmt, ...) TRACE(2, fmt , ## __VA_ARGS__)
121
#if defined(DEBUG) && DEBUG >= 3
123
#define TRACE3(fmt, ...) TRACE(3, fmt , ## __VA_ARGS__)
126
#if defined(DEBUG) && DEBUG >= 4
128
#define TRACE4(fmt, ...) TRACE(4, fmt , ## __VA_ARGS__)
131
#if defined(DEBUG) && DEBUG >= 5
133
#define TRACE5(fmt, ...) TRACE(5, fmt , ## __VA_ARGS__)
136
#if defined(DEBUG) && DEBUG >= 6
138
#define TRACE6(fmt, ...) TRACE(6, fmt , ## __VA_ARGS__)
141
#define ENTER1(fmt, ...) TRACE1("Enter " fmt , ## __VA_ARGS__)
142
#define ENTER2(fmt, ...) TRACE2("Enter " fmt , ## __VA_ARGS__)
143
#define ENTER3(fmt, ...) TRACE3("Enter " fmt , ## __VA_ARGS__)
144
#define ENTER4(fmt, ...) TRACE4("Enter " fmt , ## __VA_ARGS__)
145
#define ENTER5(fmt, ...) TRACE5("Enter " fmt , ## __VA_ARGS__)
146
#define ENTER6(fmt, ...) TRACE6("Enter " fmt , ## __VA_ARGS__)
148
#define EXIT1(stmt) do { TRACE1("Exit"); stmt; } while(0)
149
#define EXIT2(stmt) do { TRACE2("Exit"); stmt; } while(0)
150
#define EXIT3(stmt) do { TRACE3("Exit"); stmt; } while(0)
151
#define EXIT4(stmt) do { TRACE4("Exit"); stmt; } while(0)
152
#define EXIT5(stmt) do { TRACE5("Exit"); stmt; } while(0)
153
#define EXIT6(stmt) do { TRACE6("Exit"); stmt; } while(0)
155
#if defined(USB_DEBUG)
156
#define USBTRACE TRACE1
157
#define USBENTER ENTER1
158
#define USBEXIT EXIT1
160
#define USBTRACE(fmt, ...)
161
#define USBENTER(fmt, ...)
162
#define USBEXIT(stmt) stmt
165
#if defined(EVENT_DEBUG)
166
#define EVENTTRACE TRACE1
167
#define EVENTENTER ENTER1
168
#define EVENTEXIT EXIT1
170
#define EVENTTRACE(fmt, ...)
171
#define EVENTENTER(fmt, ...)
172
#define EVENTEXIT(stmt) stmt
175
#if defined(TIMER_DEBUG)
176
#define TIMERTRACE TRACE1
177
#define TIMERENTER ENTER1
178
#define TIMEREXIT EXIT1
180
#define TIMERTRACE(fmt, ...)
181
#define TIMERENTER(fmt, ...)
182
#define TIMEREXIT(stmt) stmt
185
#if defined(IO_DEBUG)
186
#define IOTRACE TRACE1
187
#define IOENTER ENTER1
190
#define IOTRACE(fmt, ...)
191
#define IOENTER(fmt, ...)
192
#define IOEXIT(stmt) stmt
195
#if defined(WORK_DEBUG)
196
#define WORKTRACE TRACE1
197
#define WORKENTER ENTER1
198
#define WORKEXIT EXIT1
200
#define WORKTRACE(fmt, ...)
201
#define WORKENTER(fmt, ...)
202
#define WORKEXIT(stmt) stmt
206
#define assert(expr) \
209
ERROR("assertion '%s' failed", #expr); \
214
#define assert(expr) do { } while (0)
219
#endif // NDISWRAPPER_H