1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61#ifndef __WAVELAN2_H__
62#define __WAVELAN2_H__
63
64
65
66
67
68
69
70#ifdef BUS_PCMCIA
71#include <pcmcia/cistpl.h>
72#include <pcmcia/cisreg.h>
73#include <pcmcia/ciscode.h>
74#include <pcmcia/ds.h>
75#endif
76
77#include <linux/wireless.h>
78#include <net/iw_handler.h>
79
80#include <linux/list.h>
81
82#include <linux/interrupt.h>
83
84
85
86
87
88
89
90#define p_u8 __u8
91#define p_s8 __s8
92#define p_u16 __u16
93#define p_s16 __s16
94#define p_u32 __u32
95#define p_s32 __s32
96#define p_char char
97
98#define MAX_KEY_LEN (2 + (13 * 2))
99#define MB_SIZE 1024
100#define MAX_ENC_LEN 104
101
102#define MAX_SCAN_TIME_SEC 8
103#define MAX_NAPS 32
104
105#define CFG_MB_INFO 0x0820
106
107#define NUM_WDS_PORTS 6
108
109#define WVLAN_MAX_LOOKAHEAD (HCF_MAX_MSG+46)
110
111
112
113#if 0
114
115#define PARM_DEFAULT_SSID "LinuxAP"
116#else
117#define PARM_DEFAULT_SSID "ANY"
118#endif
119
120#define PARM_MIN_NAME_LEN 1
121#define PARM_MAX_NAME_LEN 32
122
123
124
125
126
127
128
129#define PARM_AUTHENTICATION Authentication
130#define PARM_NAME_AUTHENTICATION TEXT("Authentication")
131#define PARM_MIN_AUTHENTICATION 1
132#define PARM_MAX_AUTHENTICATION 2
133#define PARM_DEFAULT_AUTHENTICATION 1
134
135#define PARM_AUTH_KEY_MGMT_SUITE AuthKeyMgmtSuite
136#define PARM_NAME_AUTH_KEY_MGMT_SUITE TEXT("AuthKeyMgmtSuite")
137#define PARM_MIN_AUTH_KEY_MGMT_SUITE 0
138#define PARM_MAX_AUTH_KEY_MGMT_SUITE 4
139#define PARM_DEFAULT_AUTH_KEY_MGMT_SUITE 0
140
141#define PARM_BRSC_2GHZ BRSC2GHz
142#define PARM_NAME_BRSC_2GHZ TEXT("BRSC2GHz")
143#define PARM_MIN_BRSC 0x0000
144#define PARM_MAX_BRSC 0x0FFF
145#define PARM_DEFAULT_BRSC_2GHZ 0x000F
146
147#define PARM_BRSC_5GHZ BRSC5GHz
148#define PARM_NAME_BRSC_5GHZ TEXT("BRSC5GHz")
149#define PARM_DEFAULT_BRSC_5GHZ 0x0150
150
151#define PARM_COEXISTENCE Coexistence
152#define PARM_NAME_COEXISTENCE TEXT("Coexistence")
153#define PARM_MIN_COEXISTENCE 0x0000
154#define PARM_MAX_COEXISTENCE 0x0007
155#define PARM_DEFAULT_COEXISTENCE 0x0000
156
157#define PARM_CONFIGURED Configured
158#define PARM_NAME_CONFIGURED TEXT("Configured")
159
160#define PARM_CONNECTION_CONTROL ConnectionControl
161#define PARM_NAME_CONNECTION_CONTROL TEXT("ConnectionControl")
162#define PARM_MIN_CONNECTION_CONTROL 0
163#define PARM_MAX_CONNECTION_CONTROL 3
164#define PARM_DEFAULT_CONNECTION_CONTROL 2
165
166#define PARM_CREATE_IBSS CreateIBSS
167#define PARM_NAME_CREATE_IBSS TEXT("CreateIBSS")
168#define PARM_DEFAULT_CREATE_IBSS FALSE
169#define PARM_DEFAULT_CREATE_IBSS_STR "N"
170
171#define PARM_DEBUG_FLAG DebugFlag
172#define PARM_NAME_DEBUG_FLAG TEXT("DebugFlag")
173#define PARM_MIN_DEBUG_FLAG 0
174#define PARM_MAX_DEBUG_FLAG 0xFFFF
175#define PARM_DEFAULT_DEBUG_FLAG 0xFFFF
176
177#define PARM_DESIRED_SSID DesiredSSID
178#define PARM_NAME_DESIRED_SSID TEXT("DesiredSSID")
179
180#define PARM_DOWNLOAD_FIRMWARE DownloadFirmware
181#define PARM_NAME_DOWNLOAD_FIRMWARE TEXT("DownloadFirmware")
182
183#define PARM_DRIVER_ENABLE DriverEnable
184#define PARM_NAME_DRIVER_ENABLE TEXT("DriverEnable")
185#define PARM_DEFAULT_DRIVER_ENABLE TRUE
186
187#define PARM_ENABLE_ENCRYPTION EnableEncryption
188#define PARM_NAME_ENABLE_ENCRYPTION TEXT("EnableEncryption")
189#define PARM_MIN_ENABLE_ENCRYPTION 0
190#define PARM_MAX_ENABLE_ENCRYPTION 7
191#define PARM_DEFAULT_ENABLE_ENCRYPTION 0
192
193#define PARM_ENCRYPTION Encryption
194#define PARM_NAME_ENCRYPTION TEXT("Encryption")
195
196#define PARM_EXCLUDE_UNENCRYPTED ExcludeUnencrypted
197#define PARM_NAME_EXCLUDE_UNENCRYPTED TEXT("ExcludeUnencrypted")
198#define PARM_DEFAULT_EXCLUDE_UNENCRYPTED TRUE
199#define PARM_DEFAULT_EXCLUDE_UNENCRYPTED_STR "N"
200
201#define PARM_INTRA_BSS_RELAY IntraBSSRelay
202#define PARM_NAME_INTRA_BSS_RELAY TEXT("IntraBSSRelay")
203#define PARM_DEFAULT_INTRA_BSS_RELAY TRUE
204#define PARM_DEFAULT_INTRA_BSS_RELAY_STR "Y"
205
206#define PARM_KEY1 Key1
207#define PARM_NAME_KEY1 TEXT("Key1")
208#define PARM_KEY2 Key2
209#define PARM_NAME_KEY2 TEXT("Key2")
210#define PARM_KEY3 Key3
211#define PARM_NAME_KEY3 TEXT("Key3")
212#define PARM_KEY4 Key4
213#define PARM_NAME_KEY4 TEXT("Key4")
214
215
216
217
218#define PARM_LOAD_BALANCING LoadBalancing
219#define PARM_NAME_LOAD_BALANCING TEXT("LoadBalancing")
220#define PARM_DEFAULT_LOAD_BALANCING TRUE
221#define PARM_DEFAULT_LOAD_BALANCING_STR "Y"
222
223#define PARM_MAX_DATA_LENGTH MaxDataLength
224#define PARM_NAME_MAX_DATA_LENGTH TEXT("MaxDataLength")
225
226#define PARM_MAX_SLEEP MaxSleepDuration
227#define PARM_NAME_MAX_SLEEP TEXT("MaxSleepDuration")
228#define PARM_MIN_MAX_PM_SLEEP 1
229#define PARM_MAX_MAX_PM_SLEEP 65535
230#define PARM_DEFAULT_MAX_PM_SLEEP 100
231
232#define PARM_MEDIUM_DISTRIBUTION MediumDistribution
233#define PARM_NAME_MEDIUM_DISTRIBUTION TEXT("MediumDistribution")
234#define PARM_DEFAULT_MEDIUM_DISTRIBUTION TRUE
235#define PARM_DEFAULT_MEDIUM_DISTRIBUTION_STR "Y"
236
237#define PARM_MICROWAVE_ROBUSTNESS MicroWaveRobustness
238#define PARM_NAME_MICROWAVE_ROBUSTNESS TEXT("MicroWaveRobustness")
239#define PARM_DEFAULT_MICROWAVE_ROBUSTNESS FALSE
240#define PARM_DEFAULT_MICROWAVE_ROBUSTNESS_STR "N"
241
242#define PARM_MULTICAST_PM_BUFFERING MulticastPMBuffering
243#define PARM_NAME_MULTICAST_PM_BUFFERING TEXT("MulticastPMBuffering")
244#define PARM_DEFAULT_MULTICAST_PM_BUFFERING TRUE
245#define PARM_DEFAULT_MULTICAST_PM_BUFFERING_STR "Y"
246
247#define PARM_MULTICAST_RATE MulticastRate
248#define PARM_NAME_MULTICAST_RATE TEXT("MulticastRate")
249#ifdef WARP
250#define PARM_MIN_MULTICAST_RATE 0x0001
251#define PARM_MAX_MULTICAST_RATE 0x0fff
252#define PARM_DEFAULT_MULTICAST_RATE_2GHZ 0x0004
253#define PARM_DEFAULT_MULTICAST_RATE_5GHZ 0x0010
254#else
255#define PARM_MIN_MULTICAST_RATE 0x0001
256#define PARM_MAX_MULTICAST_RATE 0x0004
257#define PARM_DEFAULT_MULTICAST_RATE_2GHZ 0x0002
258#define PARM_DEFAULT_MULTICAST_RATE_5GHZ 0x0000
259#endif
260
261#define PARM_MULTICAST_RX MulticastReceive
262#define PARM_NAME_MULTICAST_RX TEXT("MulticastReceive")
263#define PARM_DEFAULT_MULTICAST_RX TRUE
264#define PARM_DEFAULT_MULTICAST_RX_STR "Y"
265
266#define PARM_NETWORK_ADDR NetworkAddress
267#define PARM_NAME_NETWORK_ADDR TEXT("NetworkAddress")
268#define PARM_DEFAULT_NETWORK_ADDR { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF }
269
270#define PARM_NETWORK_TYPE NetworkType
271#define PARM_NAME_NETWORK_TYPE TEXT("NetworkType")
272#define PARM_DEFAULT_NETWORK_TYPE 0
273
274#define PARM_OWN_ATIM_WINDOW OwnATIMWindow
275#define PARM_NAME_OWN_ATIM_WINDOW TEXT("OwnATIMWindow")
276#define PARM_MIN_OWN_ATIM_WINDOW 0
277#define PARM_MAX_OWN_ATIM_WINDOW 100
278#define PARM_DEFAULT_OWN_ATIM_WINDOW 0
279
280#define PARM_OWN_BEACON_INTERVAL OwnBeaconInterval
281#define PARM_NAME_OWN_BEACON_INTERVAL TEXT("OwnBeaconInterval")
282#define PARM_MIN_OWN_BEACON_INTERVAL 20
283#define PARM_MAX_OWN_BEACON_INTERVAL 200
284#define PARM_DEFAULT_OWN_BEACON_INTERVAL 100
285
286#define PARM_OWN_CHANNEL OwnChannel
287#define PARM_NAME_OWN_CHANNEL TEXT("OwnChannel")
288#define PARM_MIN_OWN_CHANNEL 1
289#define PARM_MAX_OWN_CHANNEL 161
290#define PARM_DEFAULT_OWN_CHANNEL 10
291
292#define PARM_OWN_DTIM_PERIOD OwnDTIMPeriod
293#define PARM_NAME_OWN_DTIM_PERIOD TEXT("OwnDTIMPeriod")
294#define PARM_MIN_OWN_DTIM_PERIOD 1
295#define PARM_MAX_OWN_DTIM_PERIOD 65535
296#define PARM_DEFAULT_OWN_DTIM_PERIOD 1
297
298#define PARM_OWN_NAME OwnName
299#define PARM_NAME_OWN_NAME TEXT("OwnName")
300#define PARM_DEFAULT_OWN_NAME "Linux"
301
302#define PARM_OWN_SSID OwnSSID
303#define PARM_NAME_OWN_SSID TEXT("OwnSSID")
304
305#define PARM_PM_ENABLED PMEnabled
306#define PARM_NAME_PM_ENABLED TEXT("PMEnabled")
307#define PARM_MAX_PM_ENABLED 3
308
309#define PARM_PMEPS PMEPS
310#define PARM_NAME_PMEPS TEXT("PMEPS")
311
312#define PARM_PM_HOLDOVER_DURATION PMHoldoverDuration
313#define PARM_NAME_PM_HOLDOVER_DURATION TEXT("PMHoldoverDuration")
314#define PARM_MIN_PM_HOLDOVER_DURATION 1
315#define PARM_MAX_PM_HOLDOVER_DURATION 1000
316#define PARM_DEFAULT_PM_HOLDOVER_DURATION 100
317
318#define PARM_PM_MODE PowerMode
319#define PARM_NAME_PM_MODE TEXT("PowerMode")
320
321#define PARM_PORT_TYPE PortType
322#define PARM_NAME_PORT_TYPE TEXT("PortType")
323#define PARM_MIN_PORT_TYPE 1
324#define PARM_MAX_PORT_TYPE 3
325#define PARM_DEFAULT_PORT_TYPE 1
326
327#define PARM_PROMISCUOUS_MODE PromiscuousMode
328#define PARM_NAME_PROMISCUOUS_MODE TEXT("PromiscuousMode")
329#define PARM_DEFAULT_PROMISCUOUS_MODE FALSE
330#define PARM_DEFAULT_PROMISCUOUS_MODE_STR "N"
331
332#define PARM_REJECT_ANY RejectANY
333#define PARM_NAME_REJECT_ANY TEXT("RejectANY")
334#define PARM_DEFAULT_REJECT_ANY FALSE
335#define PARM_DEFAULT_REJECT_ANY_STR "N"
336
337#define PARM_RTS_THRESHOLD RTSThreshold
338#define PARM_NAME_RTS_THRESHOLD TEXT("RTSThreshold")
339#define PARM_MIN_RTS_THRESHOLD 0
340#define PARM_MAX_RTS_THRESHOLD 2347
341#define PARM_DEFAULT_RTS_THRESHOLD 2347
342
343#define PARM_RTS_THRESHOLD1 RTSThreshold1
344#define PARM_NAME_RTS_THRESHOLD1 TEXT("RTSThreshold1")
345#define PARM_RTS_THRESHOLD2 RTSThreshold2
346#define PARM_NAME_RTS_THRESHOLD2 TEXT("RTSThreshold2")
347#define PARM_RTS_THRESHOLD3 RTSThreshold3
348#define PARM_NAME_RTS_THRESHOLD3 TEXT("RTSThreshold3")
349#define PARM_RTS_THRESHOLD4 RTSThreshold4
350#define PARM_NAME_RTS_THRESHOLD4 TEXT("RTSThreshold4")
351#define PARM_RTS_THRESHOLD5 RTSThreshold5
352#define PARM_NAME_RTS_THRESHOLD5 TEXT("RTSThreshold5")
353#define PARM_RTS_THRESHOLD6 RTSThreshold6
354#define PARM_NAME_RTS_THRESHOLD6 TEXT("RTSThreshold6")
355
356#define PARM_SRSC_2GHZ SRSC2GHz
357#define PARM_NAME_SRSC_2GHZ TEXT("SRSC2GHz")
358#define PARM_MIN_SRSC 0x0000
359#define PARM_MAX_SRSC 0x0FFF
360#define PARM_DEFAULT_SRSC_2GHZ 0x0FFF
361
362#define PARM_SRSC_5GHZ SRSC5GHz
363#define PARM_NAME_SRSC_5GHZ TEXT("SRSC5GHz")
364#define PARM_DEFAULT_SRSC_5GHZ 0x0FF0
365
366#define PARM_SYSTEM_SCALE SystemScale
367#define PARM_NAME_SYSTEM_SCALE TEXT("SystemScale")
368#define PARM_MIN_SYSTEM_SCALE 1
369#define PARM_MAX_SYSTEM_SCALE 5
370#define PARM_DEFAULT_SYSTEM_SCALE 1
371
372#define PARM_TX_KEY TxKey
373#define PARM_NAME_TX_KEY TEXT("TxKey")
374#define PARM_MIN_TX_KEY 1
375#define PARM_MAX_TX_KEY 4
376#define PARM_DEFAULT_TX_KEY 1
377
378#define PARM_TX_POW_LEVEL TxPowLevel
379#define PARM_NAME_TX_POW_LEVEL TEXT("TxPowLevel")
380#define PARM_MIN_TX_POW_LEVEL 1
381#define PARM_MAX_TX_POW_LEVEL 6
382#define PARM_DEFAULT_TX_POW_LEVEL 3
383
384#define PARM_TX_RATE TxRateControl
385#define PARM_NAME_TX_RATE TEXT("TxRateControl")
386#define PARM_MIN_TX_RATE 0x0001
387#ifdef WARP
388#define PARM_MAX_TX_RATE 0x0FFF
389#define PARM_DEFAULT_TX_RATE_2GHZ 0x0FFF
390#define PARM_DEFAULT_TX_RATE_5GHZ 0x0FF0
391#else
392#define PARM_MAX_TX_RATE 0x0007
393#define PARM_DEFAULT_TX_RATE_2GHZ 0x0003
394#define PARM_DEFAULT_TX_RATE_5GHZ 0x0000
395#endif
396
397#define PARM_TX_RATE1 TxRateControl1
398#define PARM_NAME_TX_RATE1 TEXT("TxRateControl1")
399#define PARM_TX_RATE2 TxRateControl2
400#define PARM_NAME_TX_RATE2 TEXT("TxRateControl2")
401#define PARM_TX_RATE3 TxRateControl3
402#define PARM_NAME_TX_RATE3 TEXT("TxRateControl3")
403#define PARM_TX_RATE4 TxRateControl4
404#define PARM_NAME_TX_RATE4 TEXT("TxRateControl4")
405#define PARM_TX_RATE5 TxRateControl5
406#define PARM_NAME_TX_RATE5 TEXT("TxRateControl5")
407#define PARM_TX_RATE6 TxRateControl6
408#define PARM_NAME_TX_RATE6 TEXT("TxRateControl6")
409
410#define PARM_VENDORDESCRIPTION VendorDescription
411#define PARM_NAME_VENDORDESCRIPTION TEXT("VendorDescription")
412
413#define PARM_WDS_ADDRESS WDSAddress
414#define PARM_NAME_WDS_ADDRESS TEXT("WDSAddress")
415
416#define PARM_WDS_ADDRESS1 WDSAddress1
417#define PARM_NAME_WDS_ADDRESS1 TEXT("WDSAddress1")
418#define PARM_WDS_ADDRESS2 WDSAddress2
419#define PARM_NAME_WDS_ADDRESS2 TEXT("WDSAddress2")
420#define PARM_WDS_ADDRESS3 WDSAddress3
421#define PARM_NAME_WDS_ADDRESS3 TEXT("WDSAddress3")
422#define PARM_WDS_ADDRESS4 WDSAddress4
423#define PARM_NAME_WDS_ADDRESS4 TEXT("WDSAddress4")
424#define PARM_WDS_ADDRESS5 WDSAddress5
425#define PARM_NAME_WDS_ADDRESS5 TEXT("WDSAddress5")
426#define PARM_WDS_ADDRESS6 WDSAddress6
427#define PARM_NAME_WDS_ADDRESS6 TEXT("WDSAddress6")
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457#define WL_FRIMWARE_PRESENT 1
458#define WL_FRIMWARE_NOT_PRESENT 0
459#define WL_HANDLING_INT 1
460#define WL_NOT_HANDLING_INT 0
461
462
463
464
465
466
467
468
469#define NELEM(arr) (sizeof(arr) / sizeof(arr[0]))
470
471#define WVLAN_VALID_MAC_ADDRESS( x ) \
472((x[0]!=0xFF) && (x[1]!=0xFF) && (x[2]!=0xFF) && (x[3]!=0xFF) && (x[4]!=0xFF) && (x[5]!=0xFF))
473
474
475
476
477
478
479
480#undef FALSE
481#undef TRUE
482
483typedef enum
484{
485 FALSE = 0,
486 TRUE = 1
487}
488bool_t;
489
490
491typedef struct _ScanResult
492{
493
494
495 int scan_complete;
496 int num_aps;
497 SCAN_RS_STRCT APTable [MAX_NAPS];
498}
499ScanResult;
500
501
502typedef struct _LINK_STATUS_STRCT
503{
504 hcf_16 len;
505 hcf_16 typ;
506 hcf_16 linkStatus;
507}
508LINK_STATUS_STRCT;
509
510
511typedef struct _ASSOC_STATUS_STRCT
512{
513 hcf_16 len;
514 hcf_16 typ;
515 hcf_16 assocStatus;
516 hcf_8 staAddr[ETH_ALEN];
517 hcf_8 oldApAddr[ETH_ALEN];
518}
519ASSOC_STATUS_STRCT;
520
521
522typedef struct _SECURITY_STATUS_STRCT
523{
524 hcf_16 len;
525 hcf_16 typ;
526 hcf_16 securityStatus;
527 hcf_8 staAddr[ETH_ALEN];
528 hcf_16 reason;
529}
530SECURITY_STATUS_STRCT;
531
532#define WVLAN_WMP_PDU_TYPE_LT_REQ 0x00
533#define WVLAN_WMP_PDU_TYPE_LT_RSP 0x01
534#define WVLAN_WMP_PDU_TYPE_APL_REQ 0x02
535#define WVLAN_WMP_PDU_TYPE_APL_RSP 0x03
536
537typedef struct wvlan_eth_hdr
538{
539 unsigned char dst[ETH_ALEN];
540 unsigned char src[ETH_ALEN];
541 unsigned short len;
542}
543WVLAN_ETH_HDR, *PWVLAN_ETH_HDR;
544
545typedef struct wvlan_llc_snap
546{
547 unsigned char dsap;
548 unsigned char ssap;
549 unsigned char ctrl;
550 unsigned char oui[3];
551 unsigned char specid[2];
552}
553WVLAN_LLC_SNAP, *PWVLAN_LLC_SNAP;
554
555
556typedef struct wvlan_lt_hdr
557{
558 unsigned char version;
559 unsigned char type;
560 unsigned short id;
561}
562WVLAN_LT_HDR, *PWVLAN_LT_HDR;
563
564
565typedef struct wvlan_wmp_hdr
566{
567 unsigned char version;
568 unsigned char type;
569}
570WVLAN_WMP_HDR, *PWVLAN_WMP_HDR;
571
572
573#define FILLER_SIZE 1554
574#define TEST_PATTERN_SIZE 54
575
576
577typedef struct wvlan_lt_req
578{
579 unsigned char Filler[TEST_PATTERN_SIZE];
580}
581WVLAN_LT_REQ, *PWVLAN_LT_REQ;
582
583
584typedef struct wvlan_lt_rsp
585{
586 char name[32];
587
588 unsigned char signal;
589 unsigned char noise;
590 unsigned char rxFlow;
591 unsigned char dataRate;
592 unsigned short protocol;
593
594 unsigned char station;
595 unsigned char dataRateCap;
596 unsigned char powerMgmt[4];
597 unsigned char robustness[4];
598 unsigned char scaling;
599 unsigned char reserved[5];
600}
601WVLAN_LT_RSP, *PWVLAN_LT_RSP;
602
603
604typedef struct wvlan_rx_wmp_hdr
605{
606 unsigned short status;
607 unsigned short reserved1[2];
608 unsigned char silence;
609 unsigned char signal;
610 unsigned char rate;
611 unsigned char rxFlow;
612 unsigned short reserved2[2];
613 unsigned short frameControl;
614 unsigned short duration;
615 unsigned short address1[3];
616 unsigned short address2[3];
617 unsigned short address3[3];
618 unsigned short sequenceControl;
619 unsigned short address4[3];
620#ifndef HERMES25
621 unsigned short seems_to_be_unused_reserved3[5];
622 unsigned short seems_to_be_unused_reserved4;
623#endif
624 unsigned short HeaderDataLen;
625}
626WVLAN_RX_WMP_HDR, *PWVLAN_RX_WMP_HDR;
627
628
629typedef struct wvlan_linktest_req_pdu
630{
631 WVLAN_ETH_HDR ethHdr;
632 WVLAN_LLC_SNAP llcSnap;
633 WVLAN_LT_HDR ltHdr;
634 WVLAN_LT_REQ ltReq;
635}
636WVLAN_LINKTEST_REQ_PDU, *PWVLAN_LINKTEST_REQ_PDU;
637
638
639typedef struct wvlan_linktest_rsp_pdu
640{
641 WVLAN_RX_WMP_HDR wmpRxHdr;
642 WVLAN_ETH_HDR ethHdr;
643 WVLAN_LLC_SNAP llcSnap;
644 WVLAN_LT_HDR ltHdr;
645 WVLAN_LT_RSP ltRsp;
646}
647WVLAN_LINKTEST_RSP_PDU, *PWVLAN_LINKTEST_RSP_PDU;
648
649
650typedef struct _LINKTEST_RSP_STRCT
651{
652 hcf_16 len;
653 hcf_16 typ;
654 WVLAN_LINKTEST_RSP_PDU ltRsp;
655}
656LINKTEST_RSP_STRCT;
657
658
659typedef struct wvlan_wmp_rsp_pdu
660{
661 WVLAN_RX_WMP_HDR wmpRxHdr;
662 WVLAN_ETH_HDR ethHdr;
663 WVLAN_LLC_SNAP llcSnap;
664 WVLAN_WMP_HDR wmpHdr;
665}
666WVLAN_WMP_RSP_PDU, *PWVLAN_WMP_RSP_PDU;
667
668
669typedef struct _WMP_RSP_STRCT
670{
671 hcf_16 len;
672 hcf_16 typ;
673 WVLAN_WMP_RSP_PDU wmpRsp;
674}
675WMP_RSP_STRCT;
676
677
678typedef struct _PROBE_RESP
679{
680
681 hcf_16 length;
682 hcf_16 infoType;
683 hcf_16 reserved0;
684
685 hcf_8 silence;
686 hcf_8 signal;
687 hcf_8 rxFlow;
688 hcf_8 rate;
689 hcf_16 reserved1[2];
690
691
692 hcf_16 frameControl;
693 hcf_16 durID;
694 hcf_8 address1[6];
695 hcf_8 address2[6];
696 hcf_8 BSSID[6];
697 hcf_16 sequence;
698 hcf_8 address4[6];
699
700#ifndef WARP
701 hcf_8 reserved2[12];
702#endif
703
704 hcf_16 dataLength;
705
706 hcf_8 DA[6];
707 hcf_8 SA[6];
708
709#ifdef WARP
710 hcf_8 channel;
711 hcf_8 band;
712#else
713 hcf_16 lenType;
714#endif
715
716 hcf_8 timeStamp[8];
717 hcf_16 beaconInterval;
718 hcf_16 capability;
719 hcf_8 rawData[200];
720 hcf_16 flags;
721}
722PROBE_RESP, *PPROBE_RESP;
723
724
725typedef struct _ProbeResult
726{
727 int scan_complete;
728 int num_aps;
729 PROBE_RESP ProbeTable[MAX_NAPS];
730}
731ProbeResult;
732
733
734#define CAPABILITY_ESS 0x0001
735#define CAPABILITY_IBSS 0x0002
736#define CAPABILITY_PRIVACY 0x0010
737
738
739#define DS_INFO_ELEM 0x03
740#define GENERIC_INFO_ELEM 0xdd
741#define WPA_MAX_IE_LEN 40
742#define WPA_SELECTOR_LEN 4
743#define WPA_OUI_TYPE { 0x00, 0x50, 0xf2, 1 }
744#define WPA_VERSION 1
745#define WPA_AUTH_KEY_MGMT_UNSPEC_802_1X { 0x00, 0x50, 0xf2, 1 }
746#define WPA_AUTH_KEY_MGMT_PSK_OVER_802_1X { 0x00, 0x50, 0xf2, 2 }
747#define WPA_CIPHER_SUITE_NONE { 0x00, 0x50, 0xf2, 0 }
748#define WPA_CIPHER_SUITE_WEP40 { 0x00, 0x50, 0xf2, 1 }
749#define WPA_CIPHER_SUITE_TKIP { 0x00, 0x50, 0xf2, 2 }
750#define WPA_CIPHER_SUITE_WRAP { 0x00, 0x50, 0xf2, 3 }
751#define WPA_CIPHER_SUITE_CCMP { 0x00, 0x50, 0xf2, 4 }
752#define WPA_CIPHER_SUITE_WEP104 { 0x00, 0x50, 0xf2, 5 }
753
754typedef enum wvlan_drv_mode
755{
756 WVLAN_DRV_MODE_NO_DOWNLOAD,
757
758 WVLAN_DRV_MODE_STA,
759 WVLAN_DRV_MODE_AP,
760 WVLAN_DRV_MODE_MAX
761}
762WVLAN_DRV_MODE, *PWVLAN_DRV_MODE;
763
764
765typedef enum wvlan_port_state
766{
767 WVLAN_PORT_STATE_ENABLED,
768 WVLAN_PORT_STATE_DISABLED,
769 WVLAN_PORT_STATE_CONNECTED
770}
771WVLAN_PORT_STATE, *PWVLAN_PORT_STATE;
772
773
774
775
776
777
778
779
780
781
782typedef enum wvlan_pm_state
783{
784 WVLAN_PM_STATE_DISABLED,
785 WVLAN_PM_STATE_ENHANCED,
786 WVLAN_PM_STATE_STANDARD
787}
788WVLAN_PM_STATE, *PWVLAN_PM_STATE;
789
790
791typedef struct wvlan_frame
792{
793 struct sk_buff *skb;
794 hcf_16 port;
795 hcf_16 len;
796}
797WVLAN_FRAME, *PWVLAN_FRAME;
798
799
800typedef struct wvlan_lframe
801{
802 struct list_head node;
803 WVLAN_FRAME frame;
804}
805WVLAN_LFRAME, *PWVLAN_LFRAME;
806
807
808
809#define DEFAULT_NUM_TX_FRAMES 48
810#define TX_Q_LOW_WATER_MARK (DEFAULT_NUM_TX_FRAMES/3)
811
812#define WVLAN_MAX_TX_QUEUES 1
813
814
815#ifdef USE_WDS
816
817typedef struct wvlan_wds_if
818{
819 struct net_device *dev;
820 int is_registered;
821 int netif_queue_on;
822 struct net_device_stats stats;
823 hcf_16 rtsThreshold;
824 hcf_16 txRateCntl;
825 hcf_8 wdsAddress[ETH_ALEN];
826} WVLAN_WDS_IF, *PWVLAN_WDS_IF;
827
828#endif
829
830
831
832#define NUM_RX_DESC 5
833#define NUM_TX_DESC 5
834
835typedef struct dma_strct
836{
837 DESC_STRCT *tx_packet[NUM_TX_DESC];
838 DESC_STRCT *rx_packet[NUM_RX_DESC];
839 DESC_STRCT *rx_reclaim_desc, *tx_reclaim_desc;
840 int tx_rsc_ind;
841 int rx_rsc_ind;
842 int status;
843} DMA_STRCT;
844
845
846
847
848#define WL_DMA_BUS_ADDR_LE(str, i, mem) \
849 cpu_to_le32(str##_dma_addr[(i)] + ((hcf_8 *)&str[(i)]->mem - (hcf_8 *)str[(i)]))
850
851
852struct wl_private
853{
854
855#ifdef BUS_PCMCIA
856 struct pcmcia_device *link;
857#endif
858
859
860 struct net_device *dev;
861
862 spinlock_t slock;
863 struct tasklet_struct task;
864 struct net_device_stats stats;
865
866
867#ifdef WIRELESS_EXT
868 struct iw_statistics wstats;
869
870
871
872 struct iw_spy_data spy_data;
873 struct iw_public_data wireless_data;
874#endif
875
876
877 IFB_STRCT hcfCtx;
878
879
880 u_long wlags49_type;
881 u_long flags;
882 hcf_16 DebugFlag;
883 int is_registered;
884 int is_handling_int;
885 int firmware_present;
886 CFG_DRV_INFO_STRCT driverInfo;
887 CFG_IDENTITY_STRCT driverIdentity;
888 CFG_FW_IDENTITY_STRCT StationIdentity;
889 CFG_PRI_IDENTITY_STRCT PrimaryIdentity;
890 CFG_PRI_IDENTITY_STRCT NICIdentity;
891
892 ltv_t ltvRecord;
893 u_long txBytes;
894 hcf_16 maxPort;
895
896
897 RID_LOG_STRCT RidList[10];
898 ltv_t updatedRecord;
899 PROBE_RESP ProbeResp;
900 ASSOC_STATUS_STRCT assoc_stat;
901 SECURITY_STATUS_STRCT sec_stat;
902
903 u_char lookAheadBuf[WVLAN_MAX_LOOKAHEAD];
904
905 hcf_8 PortType;
906 hcf_16 Channel;
907 hcf_16 TxRateControl[2];
908 hcf_8 DistanceBetweenAPs;
909 hcf_16 RTSThreshold;
910 hcf_16 PMEnabled;
911 hcf_8 MicrowaveRobustness;
912 hcf_8 CreateIBSS;
913 hcf_8 MulticastReceive;
914 hcf_16 MaxSleepDuration;
915 hcf_8 MACAddress[ETH_ALEN];
916 char NetworkName[HCF_MAX_NAME_LEN+1];
917 char StationName[HCF_MAX_NAME_LEN+1];
918 hcf_8 EnableEncryption;
919 char Key1[MAX_KEY_LEN+1];
920 char Key2[MAX_KEY_LEN+1];
921 char Key3[MAX_KEY_LEN+1];
922 char Key4[MAX_KEY_LEN+1];
923 hcf_8 TransmitKeyID;
924 CFG_DEFAULT_KEYS_STRCT DefaultKeys;
925 u_char mailbox[MB_SIZE];
926 char szEncryption[MAX_ENC_LEN];
927
928 hcf_16 driverEnable;
929 hcf_16 wolasEnable;
930 hcf_16 atimWindow;
931 hcf_16 holdoverDuration;
932 hcf_16 MulticastRate[2];
933
934 hcf_16 authentication;
935 hcf_16 promiscuousMode;
936 WVLAN_DRV_MODE DownloadFirmware;
937
938 char fw_image_filename[MAX_LINE_SIZE+1];
939
940 hcf_16 AuthKeyMgmtSuite;
941
942 hcf_16 loadBalancing;
943 hcf_16 mediumDistribution;
944 hcf_16 txPowLevel;
945
946
947 hcf_16 srsc[2];
948 hcf_16 brsc[2];
949 hcf_16 connectionControl;
950
951 hcf_16 ownBeaconInterval;
952 hcf_16 coexistence;
953
954 WVLAN_FRAME txF;
955 WVLAN_LFRAME txList[DEFAULT_NUM_TX_FRAMES];
956 struct list_head txFree;
957 struct list_head txQ[WVLAN_MAX_TX_QUEUES];
958 int netif_queue_on;
959 int txQ_count;
960 DESC_STRCT desc_rx;
961 DESC_STRCT desc_tx;
962
963 WVLAN_PORT_STATE portState;
964
965 ScanResult scan_results;
966 ProbeResult probe_results;
967 int probe_num_aps;
968
969 int use_dma;
970 DMA_STRCT dma;
971#ifdef USE_RTS
972 int useRTS;
973#endif
974 hcf_8 DTIMPeriod;
975 hcf_16 multicastPMBuffering;
976 hcf_8 RejectAny;
977 hcf_8 ExcludeUnencrypted;
978 hcf_16 intraBSSRelay;
979#ifdef USE_WDS
980 WVLAN_WDS_IF wds_port[NUM_WDS_PORTS];
981#endif
982
983
984
985
986
987 int wext_enc;
988};
989
990#define wl_priv(dev) ((struct wl_private *) netdev_priv(dev))
991
992
993
994
995
996
997
998
999
1000static inline void wl_lock(struct wl_private *lp,
1001 unsigned long *flags)
1002{
1003 spin_lock_irqsave(&lp->slock, *flags);
1004}
1005
1006static inline void wl_unlock(struct wl_private *lp,
1007 unsigned long *flags)
1008{
1009 spin_unlock_irqrestore(&lp->slock, *flags);
1010}
1011
1012
1013
1014
1015
1016extern inline void wl_act_int_on(struct wl_private *lp)
1017{
1018
1019
1020
1021
1022
1023 if(lp->is_handling_int == WL_HANDLING_INT) {
1024 hcf_action( &lp->hcfCtx, HCF_ACT_INT_ON );
1025 }
1026}
1027
1028extern inline void wl_act_int_off(struct wl_private *lp)
1029{
1030
1031
1032
1033
1034
1035 if(lp->is_handling_int == WL_HANDLING_INT) {
1036 hcf_action( &lp->hcfCtx, HCF_ACT_INT_OFF );
1037 }
1038}
1039
1040#endif
1041