~ubuntu-branches/ubuntu/gutsy/wpasupplicant/gutsy

« back to all changes in this revision

Viewing changes to src/drivers/driver_ralink.h

  • Committer: Bazaar Package Importer
  • Author(s): Reinhard Tartler, Alexander Sack
  • Date: 2007-08-26 16:06:57 UTC
  • mfrom: (1.1.9 upstream)
  • Revision ID: james.westby@ubuntu.com-20070826160657-2m8pxoweuxe8f93t
Tags: 0.6.0+0.5.8-0ubuntu1
* New upstream release
* remove patch 11_erroneous_manpage_ref, applied upstream
* remove patch 25_wpas_dbus_unregister_iface_fix, applied upstream

[ Alexander Sack ]
* bumping upstream version to replace development version 0.6.0 with
  this package from stable release branch.
* attempt to fix wierd timeout and high latency issues by going
  back to stable upstream version (0.5.9) (LP: #140763,
  LP: #141233).

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
/*
2
 
 * WPA Supplicant - driver_ralink exported functions
3
 
 * Copyright (c) 2003-2005, Jouni Malinen <j@w1.fi>
4
 
 * Copyright (c) 2007, Snowpin Lee <snowpin_lee@ralinktech.com.tw>
5
 
 *
6
 
 * This program is free software; you can redistribute it and/or modify
7
 
 * it under the terms of the GNU General Public License version 2 as
8
 
 * published by the Free Software Foundation.
9
 
 *
10
 
 * Alternatively, this software may be distributed under the terms of BSD
11
 
 * license.
12
 
 *
13
 
 * See README and COPYING for more details.
14
 
 */
15
 
 
16
 
// Ralink defined OIDs
17
 
#if WIRELESS_EXT <= 11
18
 
#ifndef SIOCDEVPRIVATE
19
 
#define SIOCDEVPRIVATE                              0x8BE0
20
 
#endif
21
 
#define SIOCIWFIRSTPRIV                                                         SIOCDEVPRIVATE
22
 
#endif
23
 
 
24
 
#define RT_PRIV_IOCTL                                                           (SIOCIWFIRSTPRIV + 0x0E)  
25
 
#define RTPRIV_IOCTL_SET                                                        (SIOCIWFIRSTPRIV + 0x02)
26
 
 
27
 
// IEEE 802.11 OIDs  &  Ralink defined OIDs  ******
28
 
 
29
 
// (RaConfig Set/QueryInform) ==>
30
 
#define OID_GET_SET_TOGGLE                                                      0x8000
31
 
 
32
 
#define OID_802_11_ADD_WEP                          0x0112
33
 
#define OID_802_11_REMOVE_WEP                       0x0113
34
 
#define OID_802_11_DISASSOCIATE                     0x0114
35
 
#define OID_802_11_PRIVACY_FILTER                   0x0118
36
 
#define OID_802_11_ASSOCIATION_INFORMATION          0x011E
37
 
#define OID_802_11_BSSID_LIST_SCAN                  0x0508
38
 
#define OID_802_11_SSID                             0x0509
39
 
#define OID_802_11_BSSID                            0x050A
40
 
#define OID_802_11_WEP_STATUS                       0x0510
41
 
#define OID_802_11_AUTHENTICATION_MODE              0x0511
42
 
#define OID_802_11_INFRASTRUCTURE_MODE              0x0512
43
 
#define OID_802_11_TX_POWER_LEVEL                   0x0517
44
 
#define OID_802_11_REMOVE_KEY                       0x0519
45
 
#define OID_802_11_ADD_KEY                          0x0520
46
 
#define OID_802_11_DEAUTHENTICATION                 0x0526
47
 
#define OID_802_11_DROP_UNENCRYPTED                 0x0527
48
 
#define OID_802_11_BSSID_LIST                       0x0609
49
 
#define OID_802_3_CURRENT_ADDRESS                   0x060A
50
 
#define OID_SET_COUNTERMEASURES                     0x0616
51
 
#define OID_802_11_SET_IEEE8021X                    0x0617      // For IEEE8021x mode 
52
 
#define OID_802_11_SET_IEEE8021X_REQUIRE_KEY        0x0618  // For DynamicWEP in IEEE802.1x mode
53
 
#define OID_802_11_PMKID                            0x0620
54
 
#define RT_OID_WPA_SUPPLICANT_SUPPORT               0x0621  // for trigger driver enable/disable wpa_supplicant support 
55
 
#define RT_OID_WE_VERSION_COMPILED                  0x0622
56
 
#define RT_OID_NEW_DRIVER                           0x0623
57
 
 
58
 
#define PACKED  __attribute__ ((packed))
59
 
 
60
 
//wpa_supplicant event flags
61
 
#define RT_ASSOC_EVENT_FLAG                         0x0101
62
 
#define RT_DISASSOC_EVENT_FLAG                      0x0102
63
 
#define RT_REQIE_EVENT_FLAG                         0x0103
64
 
#define RT_RESPIE_EVENT_FLAG                        0x0104
65
 
#define RT_ASSOCINFO_EVENT_FLAG                     0x0105
66
 
#define RT_PMKIDCAND_FLAG                           0x0106
67
 
#define RT_INTERFACE_DOWN                           0x0107
68
 
#define RT_REPORT_AP_INFO                           0x0108
69
 
 
70
 
//
71
 
// IEEE 802.11 Structures and definitions
72
 
//
73
 
// new types for Media Specific Indications
74
 
 
75
 
#ifndef ULONG
76
 
#define CHAR            char
77
 
#define INT             int
78
 
#define SHORT           int
79
 
#define UINT            u32
80
 
#undef  ULONG           
81
 
//#define ULONG           u32
82
 
#define ULONG           unsigned long /* 32-bit in 32-bit CPU or 64-bit in 64-bit CPU */
83
 
#define USHORT          unsigned short
84
 
#define UCHAR           unsigned char
85
 
 
86
 
#define uint32          u32
87
 
#define uint8           u8
88
 
 
89
 
 
90
 
#define BOOLEAN         u8
91
 
//#define LARGE_INTEGER s64
92
 
#define VOID            void
93
 
#define LONG            long
94
 
#define LONGLONG        s64
95
 
#define ULONGLONG       u64
96
 
typedef VOID            *PVOID;
97
 
typedef CHAR            *PCHAR;
98
 
typedef UCHAR           *PUCHAR;
99
 
typedef USHORT          *PUSHORT;
100
 
typedef LONG            *PLONG;
101
 
typedef ULONG           *PULONG;
102
 
 
103
 
typedef union _LARGE_INTEGER {
104
 
    struct {
105
 
        ULONG LowPart;
106
 
        LONG HighPart;
107
 
    }vv;
108
 
    struct {
109
 
        ULONG LowPart;
110
 
        LONG HighPart;
111
 
    } u;
112
 
    s64 QuadPart;
113
 
} LARGE_INTEGER;
114
 
 
115
 
#endif
116
 
 
117
 
#define NDIS_802_11_LENGTH_SSID         32
118
 
#define NDIS_802_11_LENGTH_RATES        8
119
 
#define NDIS_802_11_LENGTH_RATES_EX     16
120
 
#define MAX_LEN_OF_SSID                 32
121
 
#define MAC_ADDR_LEN                    6
122
 
 
123
 
typedef UCHAR   NDIS_802_11_MAC_ADDRESS[6];
124
 
 
125
 
// mask for authentication/integrity fields
126
 
#define NDIS_802_11_AUTH_REQUEST_AUTH_FIELDS        0x0f
127
 
 
128
 
#define NDIS_802_11_AUTH_REQUEST_REAUTH             0x01
129
 
#define NDIS_802_11_AUTH_REQUEST_KEYUPDATE          0x02
130
 
#define NDIS_802_11_AUTH_REQUEST_PAIRWISE_ERROR     0x06
131
 
#define NDIS_802_11_AUTH_REQUEST_GROUP_ERROR        0x0E
132
 
 
133
 
// Added new types for OFDM 5G and 2.4G
134
 
typedef enum _NDIS_802_11_NETWORK_TYPE
135
 
{
136
 
    Ndis802_11FH, 
137
 
    Ndis802_11DS, 
138
 
    Ndis802_11OFDM5,
139
 
    Ndis802_11OFDM24,
140
 
    Ndis802_11Automode,
141
 
    Ndis802_11NetworkTypeMax    // not a real type, defined as an upper bound
142
 
} NDIS_802_11_NETWORK_TYPE, *PNDIS_802_11_NETWORK_TYPE;
143
 
 
144
 
//
145
 
// Received Signal Strength Indication
146
 
//
147
 
typedef LONG    NDIS_802_11_RSSI;           // in dBm
148
 
 
149
 
typedef struct _NDIS_802_11_CONFIGURATION_FH
150
 
{
151
 
   ULONG           Length;            // Length of structure
152
 
   ULONG           HopPattern;        // As defined by 802.11, MSB set 
153
 
   ULONG           HopSet;            // to one if non-802.11
154
 
   ULONG           DwellTime;         // units are Kusec
155
 
} NDIS_802_11_CONFIGURATION_FH, *PNDIS_802_11_CONFIGURATION_FH;
156
 
 
157
 
typedef struct _NDIS_802_11_CONFIGURATION
158
 
{
159
 
   ULONG                           Length;             // Length of structure
160
 
   ULONG                           BeaconPeriod;       // units are Kusec
161
 
   ULONG                           ATIMWindow;         // units are Kusec
162
 
   ULONG                           DSConfig;           // Frequency, units are kHz
163
 
   NDIS_802_11_CONFIGURATION_FH    FHConfig;
164
 
} NDIS_802_11_CONFIGURATION, *PNDIS_802_11_CONFIGURATION;
165
 
 
166
 
typedef  ULONG  NDIS_802_11_KEY_INDEX;
167
 
typedef ULONGLONG   NDIS_802_11_KEY_RSC;
168
 
 
169
 
// Key mapping keys require a BSSID
170
 
typedef struct _NDIS_802_11_KEY
171
 
{
172
 
    UINT           Length;             // Length of this structure
173
 
    UINT           KeyIndex;           
174
 
    UINT           KeyLength;          // length of key in bytes
175
 
    NDIS_802_11_MAC_ADDRESS BSSID;
176
 
    NDIS_802_11_KEY_RSC KeyRSC;
177
 
    UCHAR           KeyMaterial[1];     // variable length depending on above field
178
 
} NDIS_802_11_KEY, *PNDIS_802_11_KEY;
179
 
 
180
 
typedef struct _NDIS_802_11_REMOVE_KEY
181
 
{
182
 
    UINT                   Length;        // Length of this structure
183
 
    UINT                   KeyIndex;           
184
 
    NDIS_802_11_MAC_ADDRESS BSSID;      
185
 
} NDIS_802_11_REMOVE_KEY, *PNDIS_802_11_REMOVE_KEY;
186
 
 
187
 
typedef struct PACKED _NDIS_802_11_WEP
188
 
{
189
 
   UINT     Length;        // Length of this structure
190
 
   UINT           KeyIndex;           // 0 is the per-client key, 1-N are the
191
 
                                        // global keys
192
 
   UINT     KeyLength;     // length of key in bytes
193
 
   UCHAR     KeyMaterial[1];// variable length depending on above field
194
 
} NDIS_802_11_WEP, *PNDIS_802_11_WEP;
195
 
 
196
 
 
197
 
typedef enum _NDIS_802_11_NETWORK_INFRASTRUCTURE
198
 
{
199
 
   Ndis802_11IBSS,
200
 
   Ndis802_11Infrastructure,
201
 
   Ndis802_11AutoUnknown,
202
 
   Ndis802_11InfrastructureMax     // Not a real value, defined as upper bound
203
 
} NDIS_802_11_NETWORK_INFRASTRUCTURE, *PNDIS_802_11_NETWORK_INFRASTRUCTURE;
204
 
 
205
 
// PMKID Structures
206
 
typedef UCHAR   NDIS_802_11_PMKID_VALUE[16];
207
 
 
208
 
typedef struct _BSSID_INFO
209
 
{
210
 
        NDIS_802_11_MAC_ADDRESS BSSID;
211
 
        NDIS_802_11_PMKID_VALUE PMKID;
212
 
} BSSID_INFO, *PBSSID_INFO;
213
 
 
214
 
typedef struct _NDIS_802_11_PMKID
215
 
{
216
 
        ULONG Length;
217
 
        ULONG BSSIDInfoCount;
218
 
        BSSID_INFO BSSIDInfo[1];
219
 
} NDIS_802_11_PMKID, *PNDIS_802_11_PMKID;
220
 
 
221
 
//Added new types for PMKID Candidate lists.
222
 
typedef struct _PMKID_CANDIDATE {
223
 
        NDIS_802_11_MAC_ADDRESS BSSID;
224
 
        ULONG Flags;
225
 
} PMKID_CANDIDATE, *PPMKID_CANDIDATE;
226
 
 
227
 
typedef struct _NDIS_802_11_PMKID_CANDIDATE_LIST
228
 
{
229
 
        ULONG Version;       // Version of the structure
230
 
        ULONG NumCandidates; // No. of pmkid candidates
231
 
        PMKID_CANDIDATE CandidateList[1];
232
 
} NDIS_802_11_PMKID_CANDIDATE_LIST, *PNDIS_802_11_PMKID_CANDIDATE_LIST;
233
 
 
234
 
//Flags for PMKID Candidate list structure
235
 
#define NDIS_802_11_PMKID_CANDIDATE_PREAUTH_ENABLED     0x01
236
 
 
237
 
// Add new authentication modes
238
 
typedef enum _NDIS_802_11_AUTHENTICATION_MODE
239
 
{
240
 
   Ndis802_11AuthModeOpen,
241
 
   Ndis802_11AuthModeShared,
242
 
   Ndis802_11AuthModeAutoSwitch,
243
 
   Ndis802_11AuthModeWPA,
244
 
   Ndis802_11AuthModeWPAPSK,
245
 
   Ndis802_11AuthModeWPANone,
246
 
   Ndis802_11AuthModeWPA2,
247
 
   Ndis802_11AuthModeWPA2PSK,    
248
 
   Ndis802_11AuthModeMax           // Not a real mode, defined as upper bound
249
 
} NDIS_802_11_AUTHENTICATION_MODE, *PNDIS_802_11_AUTHENTICATION_MODE;
250
 
 
251
 
typedef UCHAR  NDIS_802_11_RATES[NDIS_802_11_LENGTH_RATES];        // Set of 8 data rates
252
 
typedef UCHAR  NDIS_802_11_RATES_EX[NDIS_802_11_LENGTH_RATES_EX];  // Set of 16 data rates
253
 
 
254
 
typedef struct PACKED _NDIS_802_11_SSID 
255
 
{
256
 
    INT   SsidLength;         // length of SSID field below, in bytes;
257
 
                                // this can be zero.
258
 
    UCHAR   Ssid[NDIS_802_11_LENGTH_SSID];           // SSID information field
259
 
} NDIS_802_11_SSID, *PNDIS_802_11_SSID;
260
 
 
261
 
 
262
 
typedef struct PACKED _NDIS_WLAN_BSSID
263
 
{
264
 
   ULONG                               Length;     // Length of this structure
265
 
   NDIS_802_11_MAC_ADDRESS             MacAddress; // BSSID
266
 
   UCHAR                               Reserved[2];
267
 
   NDIS_802_11_SSID                    Ssid;       // SSID
268
 
   ULONG                               Privacy;    // WEP encryption requirement
269
 
    NDIS_802_11_RSSI                    Rssi;               // receive signal
270
 
                                                            // strength in dBm
271
 
   NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
272
 
   NDIS_802_11_CONFIGURATION           Configuration;
273
 
   NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
274
 
   NDIS_802_11_RATES                   SupportedRates;
275
 
} NDIS_WLAN_BSSID, *PNDIS_WLAN_BSSID;
276
 
 
277
 
typedef struct PACKED _NDIS_802_11_BSSID_LIST
278
 
{
279
 
   UINT             NumberOfItems;      // in list below, at least 1
280
 
   NDIS_WLAN_BSSID Bssid[1];
281
 
} NDIS_802_11_BSSID_LIST, *PNDIS_802_11_BSSID_LIST;
282
 
 
283
 
// Added Capabilities, IELength and IEs for each BSSID
284
 
typedef struct PACKED _NDIS_WLAN_BSSID_EX
285
 
{
286
 
    ULONG                               Length;             // Length of this structure
287
 
    NDIS_802_11_MAC_ADDRESS             MacAddress;         // BSSID
288
 
    UCHAR                               Reserved[2];
289
 
    NDIS_802_11_SSID                    Ssid;               // SSID
290
 
    UINT                                Privacy;            // WEP encryption requirement
291
 
    NDIS_802_11_RSSI                    Rssi;               // receive signal
292
 
                                                            // strength in dBm
293
 
    NDIS_802_11_NETWORK_TYPE            NetworkTypeInUse;
294
 
    NDIS_802_11_CONFIGURATION           Configuration;
295
 
    NDIS_802_11_NETWORK_INFRASTRUCTURE  InfrastructureMode;
296
 
    NDIS_802_11_RATES_EX                SupportedRates;
297
 
    ULONG                               IELength;
298
 
    UCHAR                               IEs[1];
299
 
} NDIS_WLAN_BSSID_EX, *PNDIS_WLAN_BSSID_EX;
300
 
 
301
 
typedef struct PACKED _NDIS_802_11_BSSID_LIST_EX
302
 
{
303
 
    UINT                   NumberOfItems;      // in list below, at least 1
304
 
    NDIS_WLAN_BSSID_EX      Bssid[1];
305
 
} NDIS_802_11_BSSID_LIST_EX, *PNDIS_802_11_BSSID_LIST_EX;
306
 
 
307
 
typedef struct PACKED _NDIS_802_11_FIXED_IEs 
308
 
{
309
 
    UCHAR Timestamp[8];
310
 
    USHORT BeaconInterval;
311
 
    USHORT Capabilities;
312
 
} NDIS_802_11_FIXED_IEs, *PNDIS_802_11_FIXED_IEs;
313
 
 
314
 
// Added new encryption types
315
 
// Also aliased typedef to new name
316
 
typedef enum _NDIS_802_11_WEP_STATUS
317
 
{
318
 
   Ndis802_11WEPEnabled,
319
 
   Ndis802_11Encryption1Enabled = Ndis802_11WEPEnabled,
320
 
   Ndis802_11WEPDisabled,
321
 
   Ndis802_11EncryptionDisabled = Ndis802_11WEPDisabled,
322
 
   Ndis802_11WEPKeyAbsent,
323
 
   Ndis802_11Encryption1KeyAbsent = Ndis802_11WEPKeyAbsent,
324
 
   Ndis802_11WEPNotSupported,
325
 
   Ndis802_11EncryptionNotSupported = Ndis802_11WEPNotSupported,
326
 
   Ndis802_11Encryption2Enabled,
327
 
   Ndis802_11Encryption2KeyAbsent,
328
 
   Ndis802_11Encryption3Enabled,
329
 
   Ndis802_11Encryption3KeyAbsent
330
 
} NDIS_802_11_WEP_STATUS, *PNDIS_802_11_WEP_STATUS,
331
 
  NDIS_802_11_ENCRYPTION_STATUS, *PNDIS_802_11_ENCRYPTION_STATUS;
332
 
 
333
 
typedef enum _NDIS_802_11_RELOAD_DEFAULTS
334
 
{
335
 
   Ndis802_11ReloadWEPKeys
336
 
} NDIS_802_11_RELOAD_DEFAULTS, *PNDIS_802_11_RELOAD_DEFAULTS;
337
 
 
338
 
#define NDIS_802_11_AI_REQFI_CAPABILITIES      1
339
 
#define NDIS_802_11_AI_REQFI_LISTENINTERVAL    2
340
 
#define NDIS_802_11_AI_REQFI_CURRENTAPADDRESS  4
341
 
 
342
 
#define NDIS_802_11_AI_RESFI_CAPABILITIES      1
343
 
#define NDIS_802_11_AI_RESFI_STATUSCODE        2
344
 
#define NDIS_802_11_AI_RESFI_ASSOCIATIONID     4
345
 
 
346
 
typedef struct _NDIS_802_11_AI_REQFI
347
 
{
348
 
    USHORT Capabilities;
349
 
    USHORT ListenInterval;
350
 
    NDIS_802_11_MAC_ADDRESS  CurrentAPAddress;
351
 
} NDIS_802_11_AI_REQFI, *PNDIS_802_11_AI_REQFI;
352
 
 
353
 
typedef struct _NDIS_802_11_AI_RESFI
354
 
{
355
 
    USHORT Capabilities;
356
 
    USHORT StatusCode;
357
 
    USHORT AssociationId;
358
 
} NDIS_802_11_AI_RESFI, *PNDIS_802_11_AI_RESFI;
359
 
 
360
 
typedef struct _NDIS_802_11_ASSOCIATION_INFORMATION
361
 
{
362
 
    ULONG                   Length;
363
 
    USHORT                  AvailableRequestFixedIEs;
364
 
    NDIS_802_11_AI_REQFI    RequestFixedIEs;
365
 
    ULONG                   RequestIELength;
366
 
    ULONG                   OffsetRequestIEs;
367
 
    USHORT                  AvailableResponseFixedIEs;
368
 
    NDIS_802_11_AI_RESFI    ResponseFixedIEs;
369
 
    ULONG                   ResponseIELength;
370
 
    ULONG                   OffsetResponseIEs;
371
 
} NDIS_802_11_ASSOCIATION_INFORMATION, *PNDIS_802_11_ASSOCIATION_INFORMATION;
372
 
 
373
 
struct ndis_pmkid_entry {
374
 
        struct ndis_pmkid_entry *next;
375
 
        u8 bssid[ETH_ALEN];
376
 
        u8 pmkid[16];
377
 
};
378
 
 
379
 
typedef struct _MLME_DEAUTH_REQ_STRUCT {
380
 
    UCHAR        Addr[MAC_ADDR_LEN];
381
 
    USHORT       Reason;
382
 
} MLME_DEAUTH_REQ_STRUCT, *PMLME_DEAUTH_REQ_STRUCT;