]> git.karo-electronics.de Git - linux-beck.git/blob - drivers/staging/wlags49_h2/wl_internal.h
1d9bdfa2fbfb6143c33b87e05d3bd1e3a6521209
[linux-beck.git] / drivers / staging / wlags49_h2 / wl_internal.h
1 /*******************************************************************************
2  * Agere Systems Inc.
3  * Wireless device driver for Linux (wlags49).
4  *
5  * Copyright (c) 1998-2003 Agere Systems Inc.
6  * All rights reserved.
7  *   http://www.agere.com
8  *
9  * Initially developed by TriplePoint, Inc.
10  *   http://www.triplepoint.com
11  *
12  *------------------------------------------------------------------------------
13  *
14  *   Header for defintions and macros internal to the drvier.
15  *
16  *------------------------------------------------------------------------------
17  *
18  * SOFTWARE LICENSE
19  *
20  * This software is provided subject to the following terms and conditions,
21  * which you should read carefully before using the software.  Using this
22  * software indicates your acceptance of these terms and conditions.  If you do
23  * not agree with these terms and conditions, do not use the software.
24  *
25  * Copyright © 2003 Agere Systems Inc.
26  * All rights reserved.
27  *
28  * Redistribution and use in source or binary forms, with or without
29  * modifications, are permitted provided that the following conditions are met:
30  *
31  * . Redistributions of source code must retain the above copyright notice, this
32  *    list of conditions and the following Disclaimer as comments in the code as
33  *    well as in the documentation and/or other materials provided with the
34  *    distribution.
35  *
36  * . Redistributions in binary form must reproduce the above copyright notice,
37  *    this list of conditions and the following Disclaimer in the documentation
38  *    and/or other materials provided with the distribution.
39  *
40  * . Neither the name of Agere Systems Inc. nor the names of the contributors
41  *    may be used to endorse or promote products derived from this software
42  *    without specific prior written permission.
43  *
44  * Disclaimer
45  *
46  * THIS SOFTWARE IS PROVIDED \93AS IS\94 AND ANY EXPRESS OR IMPLIED WARRANTIES,
47  * INCLUDING, BUT NOT LIMITED TO, INFRINGEMENT AND THE IMPLIED WARRANTIES OF
48  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  ANY
49  * USE, MODIFICATION OR DISTRIBUTION OF THIS SOFTWARE IS SOLELY AT THE USERS OWN
50  * RISK. IN NO EVENT SHALL AGERE SYSTEMS INC. OR CONTRIBUTORS BE LIABLE FOR ANY
51  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
52  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
53  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
54  * ON ANY THEORY OF LIABILITY, INCLUDING, BUT NOT LIMITED TO, CONTRACT, STRICT
55  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
56  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
57  * DAMAGE.
58  *
59  ******************************************************************************/
60
61
62
63
64 /*******************************************************************************
65  * VERSION CONTROL INFORMATION
66  *******************************************************************************
67  *
68  * $Author: nico $
69  * $Date: 2004/08/03 11:39:39 $
70  * $Revision: 1.8 $
71  * $Source: /usr/local/cvs/wl_lkm/include/wireless/wl_internal.h,v $
72  *
73  ******************************************************************************/
74
75
76
77
78 #ifndef __WAVELAN2_H__
79 #define __WAVELAN2_H__
80
81
82
83
84 /*******************************************************************************
85  *  include files
86  ******************************************************************************/
87 #include <linux/version.h>
88 #ifdef BUS_PCMCIA
89 #if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,27)
90 #include <pcmcia/version.h>
91 #endif
92 #include <pcmcia/cs_types.h>
93 #include <pcmcia/cs.h>
94 #include <pcmcia/cistpl.h>
95 #include <pcmcia/cisreg.h>
96 #include <pcmcia/ciscode.h>
97 #include <pcmcia/ds.h>
98 #endif  // BUS_PCMCIA
99
100 #ifdef HAS_WIRELESS_EXTENSIONS
101 #include <linux/wireless.h>
102 #if WIRELESS_EXT > 13
103 #include <net/iw_handler.h>
104 #endif // WIRELESS_EXT > 13
105 #define USE_DBM
106 #define RETURN_CURRENT_NETWORKNAME
107 #define USE_FREQUENCY
108 #endif // HAS_WIRELESS_EXTENSIONS/
109
110 #include <linux/list.h>
111
112 #include <linux/interrupt.h>
113
114
115
116
117 /*******************************************************************************
118  *  constant definitions
119  ******************************************************************************/
120 #define p_u8    __u8
121 #define p_s8    __s8
122 #define p_u16   __u16
123 #define p_s16   __s16
124 #define p_u32   __u32
125 #define p_s32   __s32
126 #define p_char  char
127
128 #define MAX_KEY_LEN         (2 + (13 * 2)) // 0x plus 13 hex digit pairs
129 #define MB_SIZE             1024
130 #define MAX_ENC_LEN         104
131
132 #define MAX_SCAN_TIME_SEC   8
133 #define MAX_NAPS            32
134
135 #define CFG_MB_INFO         0x0820              //Mail Box Info Block
136
137 #define NUM_WDS_PORTS       6
138
139 #define WVLAN_MAX_LOOKAHEAD (HCF_MAX_MSG+46) /* as per s0005MIC_4.doc */
140
141
142 /* Min/Max/Default Parameter Values */
143 #if 0 //;? (HCF_TYPE) & HCF_TYPE_AP
144 //;? why this difference depending on compile option, seems to me it should depend on runtime if anything
145 #define PARM_DEFAULT_SSID                       "LinuxAP"
146 #else
147 #define PARM_DEFAULT_SSID                       "ANY"
148 #endif // HCF_TYPE_AP
149
150 #define PARM_MIN_NAME_LEN                       1
151 #define PARM_MAX_NAME_LEN                       32
152
153
154 /* The following definitions pertain to module and profile parameters */
155 // #define PARM_AP_MODE                            APMode
156 // #define PARM_NAME_AP_MODE                                            TEXT("APMode")
157 // #define PARM_DEFAULT_AP_MODE                                 FALSE
158
159 #define PARM_AUTHENTICATION                     Authentication
160 #define PARM_NAME_AUTHENTICATION                                TEXT("Authentication")
161 #define PARM_MIN_AUTHENTICATION                 1
162 #define PARM_MAX_AUTHENTICATION                 2
163 #define PARM_DEFAULT_AUTHENTICATION             1
164
165 #define PARM_AUTH_KEY_MGMT_SUITE                AuthKeyMgmtSuite
166 #define PARM_NAME_AUTH_KEY_MGMT_SUITE           TEXT("AuthKeyMgmtSuite")
167 #define PARM_MIN_AUTH_KEY_MGMT_SUITE            0
168 #define PARM_MAX_AUTH_KEY_MGMT_SUITE            4
169 #define PARM_DEFAULT_AUTH_KEY_MGMT_SUITE        0
170
171 #define PARM_BRSC_2GHZ                          BRSC2GHz
172 #define PARM_NAME_BRSC_2GHZ                     TEXT("BRSC2GHz")
173 #define PARM_MIN_BRSC                           0x0000
174 #define PARM_MAX_BRSC                           0x0FFF
175 #define PARM_DEFAULT_BRSC_2GHZ                  0x000F
176
177 #define PARM_BRSC_5GHZ                          BRSC5GHz
178 #define PARM_NAME_BRSC_5GHZ                     TEXT("BRSC5GHz")
179 #define PARM_DEFAULT_BRSC_5GHZ                  0x0150
180
181 #define PARM_COEXISTENCE                        Coexistence
182 #define PARM_NAME_COEXISTENCE                   TEXT("Coexistence")
183 #define PARM_MIN_COEXISTENCE                    0x0000
184 #define PARM_MAX_COEXISTENCE                    0x0007
185 #define PARM_DEFAULT_COEXISTENCE                0x0000
186
187 #define PARM_CONFIGURED                         Configured
188 #define PARM_NAME_CONFIGURED                                    TEXT("Configured")
189
190 #define PARM_CONNECTION_CONTROL                 ConnectionControl
191 #define PARM_NAME_CONNECTION_CONTROL            TEXT("ConnectionControl")
192 #define PARM_MIN_CONNECTION_CONTROL             0
193 #define PARM_MAX_CONNECTION_CONTROL             3
194 #define PARM_DEFAULT_CONNECTION_CONTROL         2
195
196 #define PARM_CREATE_IBSS                        CreateIBSS
197 #define PARM_NAME_CREATE_IBSS                   TEXT("CreateIBSS")
198 #define PARM_DEFAULT_CREATE_IBSS                FALSE
199 #define PARM_DEFAULT_CREATE_IBSS_STR            "N"
200
201 #define PARM_DEBUG_FLAG                         DebugFlag
202 #define PARM_NAME_DEBUG_FLAG                            TEXT("DebugFlag")
203 #define PARM_MIN_DEBUG_FLAG                             0
204 #define PARM_MAX_DEBUG_FLAG                             0xFFFF
205 #define PARM_DEFAULT_DEBUG_FLAG                         0xFFFF
206
207 #define PARM_DESIRED_SSID                       DesiredSSID
208 #define PARM_NAME_DESIRED_SSID                  TEXT("DesiredSSID")
209
210 #define PARM_DOWNLOAD_FIRMWARE                  DownloadFirmware
211 #define PARM_NAME_DOWNLOAD_FIRMWARE             TEXT("DownloadFirmware")
212
213 #define PARM_DRIVER_ENABLE                      DriverEnable
214 #define PARM_NAME_DRIVER_ENABLE                                 TEXT("DriverEnable")
215 #define PARM_DEFAULT_DRIVER_ENABLE                              TRUE
216
217 #define PARM_ENABLE_ENCRYPTION                  EnableEncryption
218 #define PARM_NAME_ENABLE_ENCRYPTION             TEXT("EnableEncryption")
219 #define PARM_MIN_ENABLE_ENCRYPTION              0
220 #define PARM_MAX_ENABLE_ENCRYPTION              7
221 #define PARM_DEFAULT_ENABLE_ENCRYPTION          0
222
223 #define PARM_ENCRYPTION                         Encryption
224 #define PARM_NAME_ENCRYPTION                    TEXT("Encryption")
225
226 #define PARM_EXCLUDE_UNENCRYPTED                ExcludeUnencrypted
227 #define PARM_NAME_EXCLUDE_UNENCRYPTED           TEXT("ExcludeUnencrypted")
228 #define PARM_DEFAULT_EXCLUDE_UNENCRYPTED        TRUE
229 #define PARM_DEFAULT_EXCLUDE_UNENCRYPTED_STR    "N"
230
231 #define PARM_INTRA_BSS_RELAY                    IntraBSSRelay
232 #define PARM_NAME_INTRA_BSS_RELAY               TEXT("IntraBSSRelay")
233 #define PARM_DEFAULT_INTRA_BSS_RELAY            TRUE
234 #define PARM_DEFAULT_INTRA_BSS_RELAY_STR        "Y"
235
236 #define PARM_KEY1                               Key1
237 #define PARM_NAME_KEY1                          TEXT("Key1")
238 #define PARM_KEY2                               Key2
239 #define PARM_NAME_KEY2                          TEXT("Key2")
240 #define PARM_KEY3                               Key3
241 #define PARM_NAME_KEY3                          TEXT("Key3")
242 #define PARM_KEY4                               Key4
243 #define PARM_NAME_KEY4                          TEXT("Key4")
244
245 //;? #define PARM_KEY_FORMAT                         AsciiHex
246 //;? #define PARM_NAME_KEY_FORMAT                    TEXT("AsciiHex")
247
248 #define PARM_LOAD_BALANCING                     LoadBalancing
249 #define PARM_NAME_LOAD_BALANCING                TEXT("LoadBalancing")
250 #define PARM_DEFAULT_LOAD_BALANCING             TRUE
251 #define PARM_DEFAULT_LOAD_BALANCING_STR         "Y"
252
253 #define PARM_MAX_DATA_LENGTH                    MaxDataLength
254 #define PARM_NAME_MAX_DATA_LENGTH                               TEXT("MaxDataLength")
255
256 #define PARM_MAX_SLEEP                          MaxSleepDuration
257 #define PARM_NAME_MAX_SLEEP                     TEXT("MaxSleepDuration")
258 #define PARM_MIN_MAX_PM_SLEEP                   1                                                               //;?names nearly right?
259 #define PARM_MAX_MAX_PM_SLEEP                   65535
260 #define PARM_DEFAULT_MAX_PM_SLEEP               100
261
262 #define PARM_MEDIUM_DISTRIBUTION                MediumDistribution
263 #define PARM_NAME_MEDIUM_DISTRIBUTION           TEXT("MediumDistribution")
264 #define PARM_DEFAULT_MEDIUM_DISTRIBUTION        TRUE
265 #define PARM_DEFAULT_MEDIUM_DISTRIBUTION_STR    "Y"
266
267 #define PARM_MICROWAVE_ROBUSTNESS               MicroWaveRobustness
268 #define PARM_NAME_MICROWAVE_ROBUSTNESS          TEXT("MicroWaveRobustness")
269 #define PARM_DEFAULT_MICROWAVE_ROBUSTNESS       FALSE
270 #define PARM_DEFAULT_MICROWAVE_ROBUSTNESS_STR   "N"
271
272 #define PARM_MULTICAST_PM_BUFFERING             MulticastPMBuffering
273 #define PARM_NAME_MULTICAST_PM_BUFFERING            TEXT("MulticastPMBuffering")
274 #define PARM_DEFAULT_MULTICAST_PM_BUFFERING     TRUE
275 #define PARM_DEFAULT_MULTICAST_PM_BUFFERING_STR "Y"
276
277 #define PARM_MULTICAST_RATE                     MulticastRate
278 #define PARM_NAME_MULTICAST_RATE                TEXT("MulticastRate")
279 #ifdef WARP
280 #define PARM_MIN_MULTICAST_RATE                 0x0001
281 #define PARM_MAX_MULTICAST_RATE                 0x0fff
282 #define PARM_DEFAULT_MULTICAST_RATE_2GHZ        0x0004
283 #define PARM_DEFAULT_MULTICAST_RATE_5GHZ        0x0010
284 #else
285 #define PARM_MIN_MULTICAST_RATE                 0x0001
286 #define PARM_MAX_MULTICAST_RATE                 0x0004
287 #define PARM_DEFAULT_MULTICAST_RATE_2GHZ        0x0002
288 #define PARM_DEFAULT_MULTICAST_RATE_5GHZ        0x0000
289 #endif  // WARP
290
291 #define PARM_MULTICAST_RX                       MulticastReceive
292 #define PARM_NAME_MULTICAST_RX                  TEXT("MulticastReceive")
293 #define PARM_DEFAULT_MULTICAST_RX               TRUE
294 #define PARM_DEFAULT_MULTICAST_RX_STR           "Y"
295
296 #define PARM_NETWORK_ADDR                       NetworkAddress
297 #define PARM_NAME_NETWORK_ADDR                  TEXT("NetworkAddress")
298 #define PARM_DEFAULT_NETWORK_ADDR               { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
299
300 #define PARM_NETWORK_TYPE                       NetworkType
301 #define PARM_NAME_NETWORK_TYPE                                  TEXT("NetworkType")
302 #define PARM_DEFAULT_NETWORK_TYPE                       0
303
304 #define PARM_OWN_ATIM_WINDOW                    OwnATIMWindow
305 #define PARM_NAME_OWN_ATIM_WINDOW                               TEXT("OwnATIMWindow")
306 #define PARM_MIN_OWN_ATIM_WINDOW                0
307 #define PARM_MAX_OWN_ATIM_WINDOW                100
308 #define PARM_DEFAULT_OWN_ATIM_WINDOW            0
309
310 #define PARM_OWN_BEACON_INTERVAL                OwnBeaconInterval
311 #define PARM_NAME_OWN_BEACON_INTERVAL           TEXT("OwnBeaconInterval")
312 #define PARM_MIN_OWN_BEACON_INTERVAL            20
313 #define PARM_MAX_OWN_BEACON_INTERVAL            200
314 #define PARM_DEFAULT_OWN_BEACON_INTERVAL        100
315
316 #define PARM_OWN_CHANNEL                        OwnChannel
317 #define PARM_NAME_OWN_CHANNEL                   TEXT("OwnChannel")
318 #define PARM_MIN_OWN_CHANNEL                    1
319 #define PARM_MAX_OWN_CHANNEL                    161
320 #define PARM_DEFAULT_OWN_CHANNEL                10
321
322 #define PARM_OWN_DTIM_PERIOD                    OwnDTIMPeriod
323 #define PARM_NAME_OWN_DTIM_PERIOD                   TEXT("OwnDTIMPeriod")
324 #define PARM_MIN_OWN_DTIM_PERIOD                1
325 #define PARM_MAX_OWN_DTIM_PERIOD                65535
326 #define PARM_DEFAULT_OWN_DTIM_PERIOD            1
327
328 #define PARM_OWN_NAME                           OwnName
329 #define PARM_NAME_OWN_NAME                      TEXT("OwnName")
330 #define PARM_DEFAULT_OWN_NAME                   "Linux"
331
332 #define PARM_OWN_SSID                           OwnSSID
333 #define PARM_NAME_OWN_SSID                      TEXT("OwnSSID")
334
335 #define PARM_PM_ENABLED                         PMEnabled
336 #define PARM_NAME_PM_ENABLED                    TEXT("PMEnabled")
337 #define PARM_MAX_PM_ENABLED                                             3
338
339 #define PARM_PMEPS                              PMEPS
340 #define PARM_NAME_PMEPS                         TEXT("PMEPS")
341
342 #define PARM_PM_HOLDOVER_DURATION               PMHoldoverDuration
343 #define PARM_NAME_PM_HOLDOVER_DURATION          TEXT("PMHoldoverDuration")
344 #define PARM_MIN_PM_HOLDOVER_DURATION           1
345 #define PARM_MAX_PM_HOLDOVER_DURATION           1000
346 #define PARM_DEFAULT_PM_HOLDOVER_DURATION       100
347
348 #define PARM_PM_MODE                            PowerMode
349 #define PARM_NAME_PM_MODE                       TEXT("PowerMode")
350
351 #define PARM_PORT_TYPE                          PortType
352 #define PARM_NAME_PORT_TYPE                     TEXT("PortType")
353 #define PARM_MIN_PORT_TYPE                      1
354 #define PARM_MAX_PORT_TYPE                      3
355 #define PARM_DEFAULT_PORT_TYPE                  1
356
357 #define PARM_PROMISCUOUS_MODE                   PromiscuousMode
358 #define PARM_NAME_PROMISCUOUS_MODE              TEXT("PromiscuousMode")
359 #define PARM_DEFAULT_PROMISCUOUS_MODE           FALSE
360 #define PARM_DEFAULT_PROMISCUOUS_MODE_STR       "N"
361
362 #define PARM_REJECT_ANY                         RejectANY
363 #define PARM_NAME_REJECT_ANY                                TEXT("RejectANY")
364 #define PARM_DEFAULT_REJECT_ANY                 FALSE
365 #define PARM_DEFAULT_REJECT_ANY_STR             "N"
366
367 #define PARM_RTS_THRESHOLD                      RTSThreshold
368 #define PARM_NAME_RTS_THRESHOLD                 TEXT("RTSThreshold")
369 #define PARM_MIN_RTS_THRESHOLD                  0
370 #define PARM_MAX_RTS_THRESHOLD                  2347
371 #define PARM_DEFAULT_RTS_THRESHOLD              2347
372
373 #define PARM_RTS_THRESHOLD1                     RTSThreshold1
374 #define PARM_NAME_RTS_THRESHOLD1                TEXT("RTSThreshold1")
375 #define PARM_RTS_THRESHOLD2                     RTSThreshold2
376 #define PARM_NAME_RTS_THRESHOLD2                TEXT("RTSThreshold2")
377 #define PARM_RTS_THRESHOLD3                     RTSThreshold3
378 #define PARM_NAME_RTS_THRESHOLD3                TEXT("RTSThreshold3")
379 #define PARM_RTS_THRESHOLD4                     RTSThreshold4
380 #define PARM_NAME_RTS_THRESHOLD4                TEXT("RTSThreshold4")
381 #define PARM_RTS_THRESHOLD5                     RTSThreshold5
382 #define PARM_NAME_RTS_THRESHOLD5                TEXT("RTSThreshold5")
383 #define PARM_RTS_THRESHOLD6                     RTSThreshold6
384 #define PARM_NAME_RTS_THRESHOLD6                TEXT("RTSThreshold6")
385
386 #define PARM_SRSC_2GHZ                          SRSC2GHz
387 #define PARM_NAME_SRSC_2GHZ                     TEXT("SRSC2GHz")
388 #define PARM_MIN_SRSC                           0x0000
389 #define PARM_MAX_SRSC                           0x0FFF
390 #define PARM_DEFAULT_SRSC_2GHZ                  0x0FFF
391
392 #define PARM_SRSC_5GHZ                          SRSC5GHz
393 #define PARM_NAME_SRSC_5GHZ                     TEXT("SRSC5GHz")
394 #define PARM_DEFAULT_SRSC_5GHZ                  0x0FF0
395
396 #define PARM_SYSTEM_SCALE                       SystemScale
397 #define PARM_NAME_SYSTEM_SCALE                  TEXT("SystemScale")
398 #define PARM_MIN_SYSTEM_SCALE                   1
399 #define PARM_MAX_SYSTEM_SCALE                   5
400 #define PARM_DEFAULT_SYSTEM_SCALE               1
401
402 #define PARM_TX_KEY                             TxKey
403 #define PARM_NAME_TX_KEY                        TEXT("TxKey")
404 #define PARM_MIN_TX_KEY                         1
405 #define PARM_MAX_TX_KEY                         4
406 #define PARM_DEFAULT_TX_KEY                     1
407
408 #define PARM_TX_POW_LEVEL                       TxPowLevel
409 #define PARM_NAME_TX_POW_LEVEL                  TEXT("TxPowLevel")
410 #define PARM_MIN_TX_POW_LEVEL                   1   // 20 dBm
411 #define PARM_MAX_TX_POW_LEVEL                   6   //  8 dBm
412 #define PARM_DEFAULT_TX_POW_LEVEL               3   // 15 dBm
413
414 #define PARM_TX_RATE                            TxRateControl
415 #define PARM_NAME_TX_RATE                       TEXT("TxRateControl")
416 #define PARM_MIN_TX_RATE                        0x0001
417 #ifdef WARP
418 #define PARM_MAX_TX_RATE                        0x0FFF
419 #define PARM_DEFAULT_TX_RATE_2GHZ               0x0FFF
420 #define PARM_DEFAULT_TX_RATE_5GHZ               0x0FF0
421 #else
422 #define PARM_MAX_TX_RATE                        0x0007
423 #define PARM_DEFAULT_TX_RATE_2GHZ               0x0003
424 #define PARM_DEFAULT_TX_RATE_5GHZ               0x0000
425 #endif  // WARP
426
427 #define PARM_TX_RATE1                           TxRateControl1
428 #define PARM_NAME_TX_RATE1                      TEXT("TxRateControl1")
429 #define PARM_TX_RATE2                           TxRateControl2
430 #define PARM_NAME_TX_RATE2                      TEXT("TxRateControl2")
431 #define PARM_TX_RATE3                           TxRateControl3
432 #define PARM_NAME_TX_RATE3                      TEXT("TxRateControl3")
433 #define PARM_TX_RATE4                           TxRateControl4
434 #define PARM_NAME_TX_RATE4                      TEXT("TxRateControl4")
435 #define PARM_TX_RATE5                           TxRateControl5
436 #define PARM_NAME_TX_RATE5                      TEXT("TxRateControl5")
437 #define PARM_TX_RATE6                           TxRateControl6
438 #define PARM_NAME_TX_RATE6                      TEXT("TxRateControl6")
439
440 #define PARM_VENDORDESCRIPTION                  VendorDescription
441 #define PARM_NAME_VENDORDESCRIPTION                             TEXT("VendorDescription")
442
443 #define PARM_WDS_ADDRESS                        WDSAddress
444 #define PARM_NAME_WDS_ADDRESS                                   TEXT("WDSAddress")
445
446 #define PARM_WDS_ADDRESS1                       WDSAddress1
447 #define PARM_NAME_WDS_ADDRESS1                                  TEXT("WDSAddress1")
448 #define PARM_WDS_ADDRESS2                       WDSAddress2
449 #define PARM_NAME_WDS_ADDRESS2                                  TEXT("WDSAddress2")
450 #define PARM_WDS_ADDRESS3                       WDSAddress3
451 #define PARM_NAME_WDS_ADDRESS3                                  TEXT("WDSAddress3")
452 #define PARM_WDS_ADDRESS4                       WDSAddress4
453 #define PARM_NAME_WDS_ADDRESS4                                  TEXT("WDSAddress4")
454 #define PARM_WDS_ADDRESS5                       WDSAddress5
455 #define PARM_NAME_WDS_ADDRESS5                                  TEXT("WDSAddress5")
456 #define PARM_WDS_ADDRESS6                       WDSAddress6
457 #define PARM_NAME_WDS_ADDRESS6                                  TEXT("WDSAddress6")
458
459 /*
460 #define PARM_LONG_RETRY_LIMIT                   LongRetryLimit
461 #define PARM_NAME_LONG_RETRY_LIMIT              TEXT("LongRetryLimit")
462 #define PARM_MIN_LONG_RETRY_LIMIT               1
463 #define PARM_MAX_LONG_RETRY_LIMIT               15
464 #define PARM_DEFAULT_LONG_RETRY_LIMIT           3
465
466
467 #define PARM_PROBE_DATA_RATES                   ProbeDataRates
468 #define PARM_NAME_PROBE_DATA_RATES              TEXT("ProbeDataRates")
469 #define PARM_MIN_PROBE_DATA_RATES               0x0000
470 #define PARM_MAX_PROBE_DATA_RATES               0x0FFF
471 #define PARM_DEFAULT_PROBE_DATA_RATES_2GHZ      0x0002
472 #define PARM_DEFAULT_PROBE_DATA_RATES_5GHZ      0x0010
473
474 #define PARM_SHORT_RETRY_LIMIT                  ShortRetryLimit
475 #define PARM_NAME_SHORT_RETRY_LIMIT             TEXT("ShortRetryLimit")
476 #define PARM_MIN_SHORT_RETRY_LIMIT              1
477 #define PARM_MAX_SHORT_RETRY_LIMIT              15
478 #define PARM_DEFAULT_SHORT_RETRY_LIMIT          7
479
480
481 */
482
483 /*******************************************************************************
484  *  state definitions
485  ******************************************************************************/
486 /* The following constants are used to track state the device */
487 #define WL_FRIMWARE_PRESENT     1 // Download if needed
488 #define WL_FRIMWARE_NOT_PRESENT 0 // Skip over download, assume its already there
489 #define WL_HANDLING_INT         1 // Actually call the HCF to switch interrupts on/off
490 #define WL_NOT_HANDLING_INT     0 // Not yet handling interrupts, do not switch on/off
491
492 /*******************************************************************************
493  *  macro definitions
494  ******************************************************************************/
495 /* The following macro ensures that no symbols are exported, minimizing the
496    chance of a symbol collision in the kernel */
497 // EXPORT_NO_SYMBOLS;
498
499 #define NELEM(arr) (sizeof(arr) / sizeof(arr[0]))
500
501 #define WVLAN_VALID_MAC_ADDRESS( x ) \
502 ((x[0]!=0xFF) && (x[1]!=0xFF) && (x[2]!=0xFF) && (x[3]!=0xFF) && (x[4]!=0xFF) && (x[5]!=0xFF))
503
504
505
506
507 /*******************************************************************************
508  * type definitions
509  ******************************************************************************/
510 #undef FALSE
511 #undef TRUE
512
513 typedef enum
514 {
515         FALSE = 0,
516         TRUE  = 1
517 }
518 bool_t;
519
520
521 typedef struct _ScanResult
522 {
523         //hcf_16        len;
524         //hcf_16        typ;
525         int             scan_complete;
526         int             num_aps;
527         SCAN_RS_STRCT   APTable [MAX_NAPS];
528 }
529 ScanResult;
530
531
532 typedef struct _LINK_STATUS_STRCT
533 {
534         hcf_16  len;
535         hcf_16  typ;
536         hcf_16  linkStatus;     /* 1..5 */
537 }
538 LINK_STATUS_STRCT;
539
540
541 typedef struct _ASSOC_STATUS_STRCT
542 {
543         hcf_16  len;
544         hcf_16  typ;
545         hcf_16  assocStatus;            /* 1..3 */
546         hcf_8   staAddr[ETH_ALEN];
547         hcf_8   oldApAddr[ETH_ALEN];
548 }
549 ASSOC_STATUS_STRCT;
550
551
552 typedef struct _SECURITY_STATUS_STRCT
553 {
554         hcf_16  len;
555         hcf_16  typ;
556         hcf_16  securityStatus;     /* 1..3 */
557         hcf_8   staAddr[ETH_ALEN];
558         hcf_16  reason;
559 }
560 SECURITY_STATUS_STRCT;
561
562 #define WVLAN_WMP_PDU_TYPE_LT_REQ       0x00
563 #define WVLAN_WMP_PDU_TYPE_LT_RSP       0x01
564 #define WVLAN_WMP_PDU_TYPE_APL_REQ      0x02
565 #define WVLAN_WMP_PDU_TYPE_APL_RSP      0x03
566
567 typedef struct wvlan_eth_hdr
568 {
569         unsigned char   dst[ETH_ALEN];           /* Destination address. */
570         unsigned char   src[ETH_ALEN];           /* Source address. */
571         unsigned short  len;                    /* Length of the PDU. */
572 }
573 WVLAN_ETH_HDR, *PWVLAN_ETH_HDR;
574
575 typedef struct wvlan_llc_snap
576 {
577         unsigned char   dsap;                   /* DSAP (0xAA) */
578         unsigned char   ssap;                   /* SSAP (0xAA) */
579         unsigned char   ctrl;                   /* Control (0x03) */
580         unsigned char   oui[3];                 /* Organization Unique ID (00-60-1d). */
581         unsigned char   specid[2];              /* Specific ID code (00-01). */
582 }
583 WVLAN_LLC_SNAP, *PWVLAN_LLC_SNAP;
584
585
586 typedef struct wvlan_lt_hdr
587 {
588         unsigned char   version;                /* Version (0x00) */
589         unsigned char   type;                   /* PDU type: 0-req/1-resp. */
590         unsigned short  id;                     /* Identifier to associate resp to req. */
591 }
592 WVLAN_LT_HDR, *PWVLAN_LT_HDR;
593
594
595 typedef struct wvlan_wmp_hdr
596 {
597         unsigned char   version;                /* Version  */
598         unsigned char   type;                   /* PDU type */
599 }
600 WVLAN_WMP_HDR, *PWVLAN_WMP_HDR;
601
602
603 #define FILLER_SIZE             1554
604 #define TEST_PATTERN_SIZE       54
605
606
607 typedef struct wvlan_lt_req
608 {
609         unsigned char   Filler[TEST_PATTERN_SIZE];   /* minimal length of 54 bytes */
610 }
611 WVLAN_LT_REQ, *PWVLAN_LT_REQ;
612
613
614 typedef struct wvlan_lt_rsp
615 {
616         char           name[32];
617         /* Measured Data */
618         unsigned char  signal;
619         unsigned char  noise;
620         unsigned char  rxFlow;
621         unsigned char  dataRate;
622         unsigned short protocol;
623         /* Capabilities */
624         unsigned char  station;
625         unsigned char  dataRateCap;
626         unsigned char  powerMgmt[4];
627         unsigned char  robustness[4];
628         unsigned char  scaling;
629         unsigned char  reserved[5];
630 }
631 WVLAN_LT_RSP, *PWVLAN_LT_RSP;
632
633
634 typedef struct wvlan_rx_wmp_hdr
635 {
636         unsigned short status;
637         unsigned short reserved1[2];
638         unsigned char  silence;
639         unsigned char  signal;
640         unsigned char  rate;
641         unsigned char  rxFlow;
642         unsigned short reserved2[2];
643         unsigned short frameControl;
644         unsigned short duration;
645         unsigned short address1[3];
646         unsigned short address2[3];
647         unsigned short address3[3];
648         unsigned short sequenceControl;
649         unsigned short address4[3];
650 #ifndef HERMES25        //;?just to be on the safe side of inherited but not comprehended code #ifdef HERMES2
651         unsigned short seems_to_be_unused_reserved3[5];  //;?
652         unsigned short seems_to_be_unused_reserved4;     //;?
653 #endif // HERMES25
654         unsigned short HeaderDataLen;
655 }
656 WVLAN_RX_WMP_HDR, *PWVLAN_RX_WMP_HDR;
657
658
659 typedef struct wvlan_linktest_req_pdu
660 {
661         WVLAN_ETH_HDR     ethHdr;
662         WVLAN_LLC_SNAP    llcSnap;
663         WVLAN_LT_HDR      ltHdr;
664         WVLAN_LT_REQ      ltReq;
665 }
666 WVLAN_LINKTEST_REQ_PDU, *PWVLAN_LINKTEST_REQ_PDU;
667
668
669 typedef struct wvlan_linktest_rsp_pdu
670 {
671         WVLAN_RX_WMP_HDR  wmpRxHdr;
672         WVLAN_ETH_HDR     ethHdr;
673         WVLAN_LLC_SNAP    llcSnap;
674         WVLAN_LT_HDR      ltHdr;
675         WVLAN_LT_RSP      ltRsp;
676 }
677 WVLAN_LINKTEST_RSP_PDU, *PWVLAN_LINKTEST_RSP_PDU;
678
679
680 typedef struct _LINKTEST_RSP_STRCT
681 {
682         hcf_16                   len;
683         hcf_16                   typ;
684         WVLAN_LINKTEST_RSP_PDU   ltRsp;
685 }
686 LINKTEST_RSP_STRCT;
687
688
689 typedef struct wvlan_wmp_rsp_pdu
690 {
691         WVLAN_RX_WMP_HDR  wmpRxHdr;
692         WVLAN_ETH_HDR     ethHdr;
693         WVLAN_LLC_SNAP    llcSnap;
694         WVLAN_WMP_HDR     wmpHdr;
695 }
696 WVLAN_WMP_RSP_PDU, *PWVLAN_WMP_RSP_PDU;
697
698
699 typedef struct _WMP_RSP_STRCT
700 {
701         hcf_16              len;
702         hcf_16              typ;
703         WVLAN_WMP_RSP_PDU   wmpRsp;
704 }
705 WMP_RSP_STRCT;
706
707
708 typedef struct _PROBE_RESP
709 {
710         // first part: 802.11
711         hcf_16  length;
712         hcf_16  infoType;
713         hcf_16  reserved0;
714         //hcf_8 signal;
715         hcf_8   silence;
716         hcf_8   signal;     // Moved signal here as signal/noise values were flipped
717         hcf_8   rxFlow;
718         hcf_8   rate;
719         hcf_16  reserved1[2];
720
721         // second part:
722         hcf_16  frameControl;
723         hcf_16  durID;
724         hcf_8   address1[6];
725         hcf_8   address2[6];
726         hcf_8   BSSID[6];                                       //! this is correct, right ?
727         hcf_16  sequence;
728         hcf_8   address4[6];
729
730 #ifndef WARP
731         hcf_8   reserved2[12];
732 #endif // WARP
733
734         hcf_16  dataLength;
735                                                                                 // the information in the next 3 fields (DA/SA/LenType) is actually not filled in.
736         hcf_8   DA[6];
737         hcf_8   SA[6];
738
739 #ifdef WARP
740         hcf_8   channel;
741         hcf_8   band;
742 #else
743         hcf_16  lenType;
744 #endif  // WARP
745
746         hcf_8   timeStamp[8];
747         hcf_16  beaconInterval;
748         hcf_16  capability;
749         hcf_8   rawData[200];                           //! <<< think about this number !
750         hcf_16  flags;
751 }
752 PROBE_RESP, *PPROBE_RESP;
753
754
755 typedef struct _ProbeResult
756 {
757         int         scan_complete;
758         int         num_aps;
759         PROBE_RESP  ProbeTable[MAX_NAPS];
760 }
761 ProbeResult;
762
763 /* Definitions used to parse capabilities out of the probe responses */
764 #define CAPABILITY_ESS      0x0001
765 #define CAPABILITY_IBSS     0x0002
766 #define CAPABILITY_PRIVACY  0x0010
767
768 /* Definitions used to parse the Information Elements out of probe responses */
769 #define DS_INFO_ELEM                        0x03
770 #define GENERIC_INFO_ELEM                   0xdd
771 #define WPA_MAX_IE_LEN                      40
772 #define WPA_SELECTOR_LEN                    4
773 #define WPA_OUI_TYPE                        { 0x00, 0x50, 0xf2, 1 }
774 #define WPA_VERSION                         1
775 #define WPA_AUTH_KEY_MGMT_UNSPEC_802_1X     { 0x00, 0x50, 0xf2, 1 }
776 #define WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X   { 0x00, 0x50, 0xf2, 2 }
777 #define WPA_CIPHER_SUITE_NONE               { 0x00, 0x50, 0xf2, 0 }
778 #define WPA_CIPHER_SUITE_WEP40              { 0x00, 0x50, 0xf2, 1 }
779 #define WPA_CIPHER_SUITE_TKIP               { 0x00, 0x50, 0xf2, 2 }
780 #define WPA_CIPHER_SUITE_WRAP               { 0x00, 0x50, 0xf2, 3 }
781 #define WPA_CIPHER_SUITE_CCMP               { 0x00, 0x50, 0xf2, 4 }
782 #define WPA_CIPHER_SUITE_WEP104             { 0x00, 0x50, 0xf2, 5 }
783
784 typedef enum wvlan_drv_mode
785 {
786         WVLAN_DRV_MODE_NO_DOWNLOAD,     /* this is the same as STA for Hermes 1    */
787                                                     /* it is also only applicable for Hermes 1 */
788         WVLAN_DRV_MODE_STA,
789         WVLAN_DRV_MODE_AP,
790         WVLAN_DRV_MODE_MAX
791 }
792 WVLAN_DRV_MODE, *PWVLAN_DRV_MODE;
793
794
795 typedef enum wvlan_port_state
796 {
797         WVLAN_PORT_STATE_ENABLED,
798         WVLAN_PORT_STATE_DISABLED,
799         WVLAN_PORT_STATE_CONNECTED
800 }
801 WVLAN_PORT_STATE, *PWVLAN_PORT_STATE;
802
803 /*
804 typedef enum wvlan_connect_state
805 {
806         WVLAN_CONNECT_STATE_CONNECTED,
807         WVLAN_CONNECT_STATE_DISCONNECTED
808 }
809 WVLAN_CONNECT_STATE, *PWVLAN_CONNECT_STATE;
810 */
811
812 typedef enum wvlan_pm_state
813 {
814         WVLAN_PM_STATE_DISABLED,
815         WVLAN_PM_STATE_ENHANCED,
816         WVLAN_PM_STATE_STANDARD
817 }
818 WVLAN_PM_STATE, *PWVLAN_PM_STATE;
819
820
821 typedef struct wvlan_frame
822 {
823         struct sk_buff  *skb;       /* sk_buff for frame. */
824         hcf_16          port;       /* MAC port for the frame. */
825         hcf_16          len;        /* Length of the frame. */
826 }
827 WVLAN_FRAME, *PWVLAN_FRAME;
828
829
830 typedef struct wvlan_lframe
831 {
832         struct list_head    node;   /* Node in the list */
833         WVLAN_FRAME             frame;  /* Frame. */
834 }
835 WVLAN_LFRAME, *PWVLAN_LFRAME;
836
837
838
839 #define DEFAULT_NUM_TX_FRAMES           48
840 #define TX_Q_LOW_WATER_MARK             (DEFAULT_NUM_TX_FRAMES/3)
841
842 #define WVLAN_MAX_TX_QUEUES             1
843
844
845 #ifdef USE_WDS
846
847 typedef struct wvlan_wds_if
848 {
849         struct net_device           *dev;
850         int                         is_registered;
851         int                         netif_queue_on;
852         struct net_device_stats     stats;
853         hcf_16                      rtsThreshold;
854         hcf_16                      txRateCntl;
855         hcf_8                       wdsAddress[ETH_ALEN];
856 } WVLAN_WDS_IF, *PWVLAN_WDS_IF;
857
858 #endif  // USE_WDS
859
860
861
862 #define NUM_RX_DESC 5
863 #define NUM_TX_DESC 5
864
865 typedef struct dma_strct
866 {
867         DESC_STRCT  *tx_packet[NUM_TX_DESC];
868         DESC_STRCT  *rx_packet[NUM_RX_DESC];
869         DESC_STRCT  *rx_reclaim_desc, *tx_reclaim_desc; // Descriptors for host-reclaim purposes (see HCF)
870         int         tx_rsc_ind; // DMA Tx resource indicator is maintained in the MSF, not in the HCF
871         int         rx_rsc_ind; // Also added rx rsource indicator so that cleanup can be performed if alloc fails
872         int         status;
873 } DMA_STRCT;
874
875
876 /* Macros used in DMA support */
877 /* get bus address of {rx,tx}dma structure member, in little-endian byte order */
878 #define WL_DMA_BUS_ADDR_LE(str, i, mem) \
879         cpu_to_le32(str##_dma_addr[(i)] + ((hcf_8 *)&str[(i)]->mem - (hcf_8 *)str[(i)]))
880
881
882 struct wl_private
883 {
884
885 #ifdef BUS_PCMCIA
886         dev_node_t                  node;
887         struct pcmcia_device        *link;
888 #endif // BUS_PCMCIA
889
890
891         struct net_device           *dev;
892 //      struct net_device           *dev_next;
893         spinlock_t                  slock;
894         struct tasklet_struct       task;
895         struct net_device_stats     stats;
896
897
898 #ifdef WIRELESS_EXT
899         struct iw_statistics        wstats;
900 //      int                         spy_number;
901 //      u_char                      spy_address[IW_MAX_SPY][ETH_ALEN];
902 //      struct iw_quality           spy_stat[IW_MAX_SPY];
903         struct iw_spy_data          spy_data;
904         struct iw_public_data   wireless_data;
905 #endif // WIRELESS_EXT
906
907
908         IFB_STRCT                   hcfCtx;
909 //;? struct timer_list                  timer_oor;
910 //;? hcf_16                                             timer_oor_cnt;
911         u_long                                          wlags49_type;           //controls output in /proc/wlags49
912         u_long                      flags;
913         hcf_16                                          DebugFlag;
914         int                         is_registered;
915         int                         is_handling_int;
916         int                         firmware_present;
917         char                        sysfsCreated;
918         CFG_DRV_INFO_STRCT          driverInfo;
919         CFG_IDENTITY_STRCT          driverIdentity;
920         CFG_FW_IDENTITY_STRCT       StationIdentity;
921         CFG_PRI_IDENTITY_STRCT      PrimaryIdentity;
922         CFG_PRI_IDENTITY_STRCT      NICIdentity;
923
924         ltv_t                       ltvRecord;
925         u_long                      txBytes;
926         hcf_16                      maxPort;        /* 0 for STA, 6 for AP */
927
928         /* Elements used for async notification from hardware */
929         RID_LOG_STRCT                           RidList[10];
930         ltv_t                       updatedRecord;
931         PROBE_RESP                                  ProbeResp;
932         ASSOC_STATUS_STRCT          assoc_stat;
933         SECURITY_STATUS_STRCT       sec_stat;
934
935         u_char                      lookAheadBuf[WVLAN_MAX_LOOKAHEAD];
936
937         hcf_8                       PortType;           // 1 - 3 (1 [Normal] | 3 [AdHoc])
938         hcf_16                      Channel;            // 0 - 14 (0)
939         hcf_16                      TxRateControl[2];
940         hcf_8                       DistanceBetweenAPs; // 1 - 3 (1)
941         hcf_16                      RTSThreshold;       // 0 - 2347 (2347)
942         hcf_16                      PMEnabled;          // 0 - 2, 8001 - 8002 (0)
943         hcf_8                       MicrowaveRobustness;// 0 - 1 (0)
944         hcf_8                       CreateIBSS;         // 0 - 1 (0)
945         hcf_8                       MulticastReceive;   // 0 - 1 (1)
946         hcf_16                      MaxSleepDuration;   // 0 - 65535 (100)
947         hcf_8                       MACAddress[ETH_ALEN];
948         char                        NetworkName[HCF_MAX_NAME_LEN+1];
949         char                        StationName[HCF_MAX_NAME_LEN+1];
950         hcf_8                       EnableEncryption;   // 0 - 1 (0)
951         char                        Key1[MAX_KEY_LEN+1];
952         char                        Key2[MAX_KEY_LEN+1];
953         char                        Key3[MAX_KEY_LEN+1];
954         char                        Key4[MAX_KEY_LEN+1];
955         hcf_8                       TransmitKeyID;      // 1 - 4 (1)
956         CFG_DEFAULT_KEYS_STRCT      DefaultKeys;
957         u_char                      mailbox[MB_SIZE];
958         char                        szEncryption[MAX_ENC_LEN];
959
960         hcf_16                      driverEnable;
961         hcf_16                      wolasEnable;
962         hcf_16                      atimWindow;
963         hcf_16                      holdoverDuration;
964         hcf_16                      MulticastRate[2];
965
966         hcf_16                      authentication; // is this AP specific?
967         hcf_16                      promiscuousMode;
968         WVLAN_DRV_MODE              DownloadFirmware;   // 0 - 2 (0 [None] | 1 [STA] | 2 [AP])
969
970         char                                            fw_image_filename[MAX_LINE_SIZE+1];
971
972         hcf_16                      AuthKeyMgmtSuite;
973
974         hcf_16                      loadBalancing;
975         hcf_16                      mediumDistribution;
976         hcf_16                      txPowLevel;
977         //hcf_16                      shortRetryLimit;
978         //hcf_16                      longRetryLimit;
979         hcf_16                      srsc[2];
980         hcf_16                      brsc[2];
981         hcf_16                      connectionControl;
982         //hcf_16                      probeDataRates[2];
983         hcf_16                      ownBeaconInterval;
984         hcf_16                      coexistence;
985
986         WVLAN_FRAME                 txF;
987         WVLAN_LFRAME                txList[DEFAULT_NUM_TX_FRAMES];
988         struct list_head            txFree;
989         struct list_head            txQ[WVLAN_MAX_TX_QUEUES];
990         int                         netif_queue_on;
991         int                         txQ_count;
992         DESC_STRCT                  desc_rx;
993         DESC_STRCT                  desc_tx;
994
995         WVLAN_PORT_STATE            portState;
996
997         ScanResult                  scan_results;
998         ProbeResult                 probe_results;
999         int                         probe_num_aps;
1000
1001         int                         use_dma;
1002         DMA_STRCT                   dma;
1003 #ifdef USE_RTS
1004         int                         useRTS;
1005 #endif  // USE_RTS
1006         hcf_8                       DTIMPeriod;         // 1 - 255 (1)
1007         hcf_16                      multicastPMBuffering;
1008         hcf_8                       RejectAny;          // 0 - 1 (0)
1009         hcf_8                       ExcludeUnencrypted; // 0 - 1 (1)
1010         hcf_16                      intraBSSRelay;
1011 #ifdef USE_WDS
1012         WVLAN_WDS_IF                wds_port[NUM_WDS_PORTS];
1013 #endif // USE_WDS
1014 }; // wl_private
1015
1016 #ifdef HAVE_NETDEV_PRIV
1017 #define wl_priv(dev) ((struct wl_private *) netdev_priv(dev))
1018 #else
1019 extern inline struct wl_private *wl_priv(struct net_device *dev)
1020 {
1021     return dev->priv;
1022 }
1023 #endif
1024
1025 /********************************************************************/
1026 /* Locking and synchronization functions                            */
1027 /********************************************************************/
1028
1029 /* These functions *must* be inline or they will break horribly on
1030  * SPARC, due to its weird semantics for save/restore flags. extern
1031  * inline should prevent the kernel from linking or module from
1032  * loading if they are not inlined. */
1033 extern inline void wl_lock(struct wl_private *lp,
1034                                unsigned long *flags)
1035 {
1036         spin_lock_irqsave(&lp->slock, *flags);
1037 }
1038
1039 extern inline void wl_unlock(struct wl_private *lp,
1040                                   unsigned long *flags)
1041 {
1042         spin_unlock_irqrestore(&lp->slock, *flags);
1043 }
1044
1045 /********************************************************************/
1046 /* Interrupt enable disable functions                               */
1047 /********************************************************************/
1048
1049 extern inline void wl_act_int_on(struct wl_private *lp)
1050 {
1051         /*
1052          * Only do something when the driver is handling
1053          * interrupts. Handling starts at wl_open and
1054          * ends at wl_close when not in RTS mode
1055          */
1056         if(lp->is_handling_int == WL_HANDLING_INT) {
1057                 hcf_action( &lp->hcfCtx, HCF_ACT_INT_ON );
1058         }
1059 }
1060
1061 extern inline void wl_act_int_off(struct wl_private *lp)
1062 {
1063         /*
1064          * Only do something when the driver is handling
1065          * interrupts. Handling starts at wl_open and
1066          * ends at wl_close when not in RTS mode
1067          */
1068         if(lp->is_handling_int == WL_HANDLING_INT) {
1069                 hcf_action( &lp->hcfCtx, HCF_ACT_INT_OFF );
1070         }
1071 }
1072
1073 #endif  // __WAVELAN2_H__