]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/wi/if_wavelan_ieee.h
This commit was generated by cvs2svn to compensate for changes in r98679,
[FreeBSD/FreeBSD.git] / sys / dev / wi / if_wavelan_ieee.h
1 /*
2  * Copyright (c) 1997, 1998, 1999
3  *      Bill Paul <wpaul@ctr.columbia.edu>.  All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. All advertising materials mentioning features or use of this software
14  *    must display the following acknowledgement:
15  *      This product includes software developed by Bill Paul.
16  * 4. Neither the name of the author nor the names of any co-contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND
21  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
23  * ARE DISCLAIMED.  IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD
24  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
25  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
26  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
27  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
28  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
29  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
30  * THE POSSIBILITY OF SUCH DAMAGE.
31  *
32  * $FreeBSD$
33  */
34
35 #ifndef _IF_WAVELAN_IEEE_H
36 #define _IF_WAVELAN_IEEE_H
37
38 /*
39  * This header defines a simple command interface to the FreeBSD
40  * WaveLAN/IEEE driver (wi) driver, which is used to set certain
41  * device-specific parameters which can't be easily managed through
42  * ifconfig(8). No, sysctl(2) is not the answer. I said a _simple_
43  * interface, didn't I.
44  */
45
46 #ifndef SIOCSWAVELAN
47 #define SIOCSWAVELAN    SIOCSIFGENERIC
48 #endif
49
50 #ifndef SIOCGWAVELAN
51 #define SIOCGWAVELAN    SIOCGIFGENERIC
52 #endif
53 #define WI_RID_MONITOR_MODE     0x0500
54
55 /*
56  * Technically I don't think there's a limit to a record
57  * length. The largest record is the one that contains the CIS
58  * data, which is 240 words long, so 256 should be a safe
59  * value.
60  */
61 #define WI_MAX_DATALEN  512
62
63 struct wi_req {
64         u_int16_t       wi_len;
65         u_int16_t       wi_type;
66         u_int16_t       wi_val[WI_MAX_DATALEN];
67 };
68
69 /*
70  * Private LTV records (interpreted only by the driver). This is
71  * a minor kludge to allow reading the interface statistics from
72  * the driver.
73  */
74 #define WI_RID_IFACE_STATS      0x0100
75 #define WI_RID_MGMT_XMIT        0x0200
76 #define WI_RID_ZERO_CACHE       0x0300
77 #define WI_RID_READ_CACHE       0x0400
78
79 struct wi_80211_hdr {
80         u_int16_t               frame_ctl;
81         u_int16_t               dur_id;
82         u_int8_t                addr1[6];
83         u_int8_t                addr2[6];
84         u_int8_t                addr3[6];
85         u_int16_t               seq_ctl;
86         u_int8_t                addr4[6];
87 };
88
89 #define WI_FCTL_VERS            0x0002
90 #define WI_FCTL_FTYPE           0x000C
91 #define WI_FCTL_STYPE           0x00F0
92 #define WI_FCTL_TODS            0x0100
93 #define WI_FCTL_FROMDS          0x0200
94 #define WI_FCTL_MOREFRAGS       0x0400
95 #define WI_FCTL_RETRY           0x0800
96 #define WI_FCTL_PM              0x1000
97 #define WI_FCTL_MOREDATA        0x2000
98 #define WI_FCTL_WEP             0x4000
99 #define WI_FCTL_ORDER           0x8000
100
101 #define WI_FTYPE_MGMT           0x0000
102 #define WI_FTYPE_CTL            0x0004
103 #define WI_FTYPE_DATA           0x0008
104
105 #define WI_STYPE_MGMT_ASREQ     0x0000  /* association request */
106 #define WI_STYPE_MGMT_ASRESP    0x0010  /* association response */
107 #define WI_STYPE_MGMT_REASREQ   0x0020  /* reassociation request */
108 #define WI_STYPE_MGMT_REASRESP  0x0030  /* reassociation response */
109 #define WI_STYPE_MGMT_PROBEREQ  0x0040  /* probe request */
110 #define WI_STYPE_MGMT_PROBERESP 0x0050  /* probe response */
111 #define WI_STYPE_MGMT_BEACON    0x0080  /* beacon */
112 #define WI_STYPE_MGMT_ATIM      0x0090  /* announcement traffic ind msg */
113 #define WI_STYPE_MGMT_DISAS     0x00A0  /* disassociation */
114 #define WI_STYPE_MGMT_AUTH      0x00B0  /* authentication */
115 #define WI_STYPE_MGMT_DEAUTH    0x00C0  /* deauthentication */
116
117 #define WI_STYPE_CTL_PSPOLL     0x00A0
118 #define WI_STYPE_CTL_RTS        0x00B0
119 #define WI_STYPE_CTL_CTS        0x00C0
120 #define WI_STYPE_CTL_ACK        0x00D0
121 #define WI_STYPE_CTL_CFEND      0x00E0
122 #define WI_STYPE_CTL_CFENDACK   0x00F0
123
124 struct wi_mgmt_hdr {
125         u_int16_t               frame_ctl;
126         u_int16_t               duration;
127         u_int8_t                dst_addr[6];
128         u_int8_t                src_addr[6];
129         u_int8_t                bssid[6];
130         u_int16_t               seq_ctl;
131 };
132
133 /* 
134  * Lucent/wavelan IEEE signal strength cache
135  *
136  * driver keeps cache of last
137  * MAXWICACHE packets to arrive including signal strength info.
138  * daemons may read this via ioctl
139  *
140  * Each entry in the wi_sigcache has a unique macsrc.
141  */
142 struct wi_sigcache {
143         char    macsrc[6];      /* unique MAC address for entry */
144         int     ipsrc;          /* ip address associated with packet */
145         int     signal;         /* signal strength of the packet */
146         int     noise;          /* noise value */
147         int     quality;        /* quality of the packet */
148 };
149
150 #ifndef _KERNEL
151 struct wi_counters {
152         u_int32_t               wi_tx_unicast_frames;
153         u_int32_t               wi_tx_multicast_frames;
154         u_int32_t               wi_tx_fragments;
155         u_int32_t               wi_tx_unicast_octets;
156         u_int32_t               wi_tx_multicast_octets;
157         u_int32_t               wi_tx_deferred_xmits;
158         u_int32_t               wi_tx_single_retries;
159         u_int32_t               wi_tx_multi_retries;
160         u_int32_t               wi_tx_retry_limit;
161         u_int32_t               wi_tx_discards;
162         u_int32_t               wi_rx_unicast_frames;
163         u_int32_t               wi_rx_multicast_frames;
164         u_int32_t               wi_rx_fragments;
165         u_int32_t               wi_rx_unicast_octets;
166         u_int32_t               wi_rx_multicast_octets;
167         u_int32_t               wi_rx_fcs_errors;
168         u_int32_t               wi_rx_discards_nobuf;
169         u_int32_t               wi_tx_discards_wrong_sa;
170         u_int32_t               wi_rx_WEP_cant_decrypt;
171         u_int32_t               wi_rx_msg_in_msg_frags;
172         u_int32_t               wi_rx_msg_in_bad_msg_frags;
173 };
174 #endif
175
176 /*
177  * Network parameters, static configuration entities.
178  */
179 #define WI_RID_PORTTYPE         0xFC00 /* Connection control characteristics */
180 #define WI_RID_MAC_NODE         0xFC01 /* MAC address of this station */
181 #define WI_RID_DESIRED_SSID     0xFC02 /* Service Set ID for connection */
182 #define WI_RID_OWN_CHNL         0xFC03 /* Comm channel for BSS creation */
183 #define WI_RID_OWN_SSID         0xFC04 /* IBSS creation ID */
184 #define WI_RID_OWN_ATIM_WIN     0xFC05 /* ATIM window time for IBSS creation */
185 #define WI_RID_SYSTEM_SCALE     0xFC06 /* scale that specifies AP density */
186 #define WI_RID_MAX_DATALEN      0xFC07 /* Max len of MAC frame body data */
187 #define WI_RID_MAC_WDS          0xFC08 /* MAC addr of corresponding WDS node */
188 #define WI_RID_PM_ENABLED       0xFC09 /* ESS power management enable */
189 #define WI_RID_PM_EPS           0xFC0A /* PM EPS/PS mode */
190 #define WI_RID_MCAST_RX         0xFC0B /* ESS PM mcast reception */
191 #define WI_RID_MAX_SLEEP        0xFC0C /* max sleep time for ESS PM */
192 #define WI_RID_HOLDOVER         0xFC0D /* holdover time for ESS PM */
193 #define WI_RID_NODENAME         0xFC0E /* ID name of this node for diag */
194 #define WI_RID_DTIM_PERIOD      0xFC10 /* beacon interval between DTIMs */
195 #define WI_RID_WDS_ADDR1        0xFC11 /* port 1 MAC of WDS link node */
196 #define WI_RID_WDS_ADDR2        0xFC12 /* port 1 MAC of WDS link node */
197 #define WI_RID_WDS_ADDR3        0xFC13 /* port 1 MAC of WDS link node */
198 #define WI_RID_WDS_ADDR4        0xFC14 /* port 1 MAC of WDS link node */
199 #define WI_RID_WDS_ADDR5        0xFC15 /* port 1 MAC of WDS link node */
200 #define WI_RID_WDS_ADDR6        0xFC16 /* port 1 MAC of WDS link node */
201 #define WI_RID_MCAST_PM_BUF     0xFC17 /* PM buffering of mcast */
202 #define WI_RID_ENCRYPTION       0xFC20 /* enable/disable WEP */
203 #define WI_RID_AUTHTYPE         0xFC21 /* specify authentication type */
204 #define WI_RID_P2_TX_CRYPT_KEY  0xFC23
205 #define WI_RID_P2_CRYPT_KEY0    0xFC24
206 #define WI_RID_P2_CRYPT_KEY1    0xFC25
207 #define WI_RID_MICROWAVE_OVEN   0xFC25
208 #define WI_RID_P2_CRYPT_KEY2    0xFC26
209 #define WI_RID_P2_CRYPT_KEY3    0xFC27
210 #define WI_RID_P2_ENCRYPTION    0xFC28
211 #define  PRIVACY_INVOKED        0x01
212 #define  EXCLUDE_UNENCRYPTED    0x02
213 #define  HOST_ENCRYPT           0x10
214 #define  IV_EVERY_FRAME         0x00    /* IV = Initialization Vector */
215 #define  IV_EVERY10_FRAME       0x20    /* every 10 frame IV reuse */
216 #define  IV_EVERY50_FRAME       0x40    /* every 50 frame IV reuse */
217 #define  IV_EVERY100_FRAME      0x60    /* every 100 frame IV reuse */
218 #define  HOST_DECRYPT           0x80
219 #define WI_RID_WEP_MAPTABLE     0xFC29
220 #define WI_RID_CNFAUTHMODE      0xFC2A
221 #define WI_RID_ROAMING_MODE     0xFC2D
222 #define WI_RID_BASIC_RATE       0xFCB3
223 #define WI_RID_SUPPORT_RATE     0xFCB4
224
225 /*
226  * Network parameters, dynamic configuration entities
227  */
228 #define WI_RID_MCAST_LIST       0xFC80 /* list of multicast addrs */
229 #define WI_RID_CREATE_IBSS      0xFC81 /* create IBSS */
230 #define WI_RID_FRAG_THRESH      0xFC82 /* frag len, unicast msg xmit */
231 #define WI_RID_RTS_THRESH       0xFC83 /* frame len for RTS/CTS handshake */
232 #define WI_RID_TX_RATE          0xFC84 /* data rate for message xmit
233                                         * 0 == Fixed 1mbps
234                                         * 1 == Fixed 2mbps
235                                         * 2 == auto fallback
236                                         */
237 #define WI_RID_PROMISC          0xFC85 /* enable promisc mode */
238 #define WI_RID_FRAG_THRESH0     0xFC90
239 #define WI_RID_FRAG_THRESH1     0xFC91
240 #define WI_RID_FRAG_THRESH2     0xFC92
241 #define WI_RID_FRAG_THRESH3     0xFC93
242 #define WI_RID_FRAG_THRESH4     0xFC94
243 #define WI_RID_FRAG_THRESH5     0xFC95
244 #define WI_RID_FRAG_THRESH6     0xFC96
245 #define WI_RID_RTS_THRESH0      0xFC97
246 #define WI_RID_RTS_THRESH1      0xFC98
247 #define WI_RID_RTS_THRESH2      0xFC99
248 #define WI_RID_RTS_THRESH3      0xFC9A
249 #define WI_RID_RTS_THRESH4      0xFC9B
250 #define WI_RID_RTS_THRESH5      0xFC9C
251 #define WI_RID_RTS_THRESH6      0xFC9D
252 #define WI_RID_TX_RATE0         0xFC9E
253 #define WI_RID_TX_RATE1         0xFC9F
254 #define WI_RID_TX_RATE2         0xFCA0
255 #define WI_RID_TX_RATE3         0xFCA1
256 #define WI_RID_TX_RATE4         0xFCA2
257 #define WI_RID_TX_RATE5         0xFCA3
258 #define WI_RID_TX_RATE6         0xFCA4
259 #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0
260 #define WI_RID_TX_CRYPT_KEY     0xFCB1
261 #define WI_RID_TICK_TIME        0xFCE0
262
263 #ifndef _KERNEL
264 struct wi_key {
265         u_int16_t               wi_keylen;
266         u_int8_t                wi_keydat[14];
267 };
268
269 struct wi_ltv_keys {
270         u_int16_t               wi_len;
271         u_int16_t               wi_type;
272         struct wi_key           wi_keys[4];
273 };
274 #endif
275
276 /*
277  * NIC information
278  */
279 #define WI_RID_DNLD_BUF         0xFD01
280 #define WI_RID_MEMSZ            0xFD02 /* memory size info (XXX Lucent) */
281 #define WI_RID_PRI_IDENTITY     0xFD02 /* primary funcs firmware ident (PRISM2) */
282 #define WI_RID_PRI_SUP_RANGE    0xFD03 /* primary supplier compatibility */
283 #define WI_RID_CIF_ACT_RANGE    0xFD04 /* controller sup. compatibility */
284 #define WI_RID_SERIALNO         0xFD0A /* card serial number */
285 #define WI_RID_CARD_ID          0xFD0B /* card identification */
286 #define WI_RID_MFI_SUP_RANGE    0xFD0C /* modem supplier compatibility */
287 #define WI_RID_CFI_SUP_RANGE    0xFD0D /* controller sup. compatibility */
288 #define WI_RID_CHANNEL_LIST     0xFD10 /* allowd comm. frequencies. */
289 #define WI_RID_REG_DOMAINS      0xFD11 /* list of intendted regulatory doms */
290 #define WI_RID_TEMP_TYPE        0xFD12 /* hw temp range code */
291 #define WI_RID_CIS              0xFD13 /* PC card info struct */
292 #define WI_RID_STA_IDENTITY     0xFD20 /* station funcs firmware ident */
293 #define WI_RID_STA_SUP_RANGE    0xFD21 /* station supplier compat */
294 #define WI_RID_MFI_ACT_RANGE    0xFD22
295 #define WI_RID_SYMBOL_IDENTITY  0xFD24
296 #define WI_RID_CFI_ACT_RANGE    0xFD33
297 #define WI_RID_COMMQUAL         0xFD43
298 #define WI_RID_SCALETHRESH      0xFD46
299 #define WI_RID_PCF              0xFD87
300
301 /*
302  * MAC information
303  */
304 #define WI_RID_PORT_STAT        0xFD40 /* actual MAC port con control stat */
305 #define WI_RID_CURRENT_SSID     0xFD41 /* ID of actually connected SS */
306 #define WI_RID_CURRENT_BSSID    0xFD42 /* ID of actually connected BSS */
307 #define WI_RID_COMMS_QUALITY    0xFD43 /* quality of BSS connection */
308 #define WI_RID_CUR_TX_RATE      0xFD44 /* current TX rate */
309 #define WI_RID_OWN_BEACON_INT   0xFD45 /* beacon xmit time for BSS creation */
310 #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */
311 #define WI_RID_PROT_RESP_TIME   0xFD47 /* time to wait for resp to req msg */
312 #define WI_RID_SHORT_RTR_LIM    0xFD48 /* max tx attempts for short frames */
313 #define WI_RID_LONG_RTS_LIM     0xFD49 /* max tx attempts for long frames */
314 #define WI_RID_MAX_TX_LIFE      0xFD4A /* max tx frame handling duration */
315 #define WI_RID_MAX_RX_LIFE      0xFD4B /* max rx frame handling duration */
316 #define WI_RID_CF_POLL          0xFD4C /* contention free pollable ind */
317 #define WI_RID_AUTH_ALGS        0xFD4D /* auth algorithms available */
318 #define WI_RID_AUTH_TYPE        0xFD4E /* availanle auth types */
319 #define WI_RID_WEP_AVAIL        0xFD4F /* WEP privacy option available */
320 #define WI_RID_CUR_TX_RATE1     0xFD80
321 #define WI_RID_CUR_TX_RATE2     0xFD81
322 #define WI_RID_CUR_TX_RATE3     0xFD82
323 #define WI_RID_CUR_TX_RATE4     0xFD83
324 #define WI_RID_CUR_TX_RATE5     0xFD84
325 #define WI_RID_CUR_TX_RATE6     0xFD85
326 #define WI_RID_OWN_MAC          0xFD86 /* unique local MAC addr */
327 #define WI_RID_PCI_INFO         0xFD87 /* point coordination func cap */
328
329 /*
330  * Modem information
331  */
332 #define WI_RID_PHY_TYPE         0xFDC0 /* phys layer type indication */
333 #define WI_RID_CURRENT_CHAN     0xFDC1 /* current frequency */
334 #define WI_RID_PWR_STATE        0xFDC2 /* pwr consumption status */
335 #define WI_RID_CCA_MODE         0xFDC3 /* clear chan assess mode indication */
336 #define WI_RID_CCA_TIME         0xFDC4 /* clear chan assess time */
337 #define WI_RID_MAC_PROC_DELAY   0xFDC5 /* MAC processing delay time */
338 #define WI_RID_DATA_RATES       0xFDC6 /* supported data rates */
339
340 /*
341  * bsd-airtools v0.2 - source-mods v0.2 [common.h]
342  * by h1kari - (c) Dachb0den Labs 2001
343  */
344
345 /*
346  * Copyright (c) 2001 Dachb0den Labs.
347  *      David Hulton <h1kari@dachb0den.com>.  All rights reserved.
348  *
349  * Redistribution and use in source and binary forms, with or without
350  * modification, are permitted provided that the following conditions
351  * are met:
352  * 1. Redistributions of source code must retain the above copyright
353  *    notice, this list of conditions and the following disclaimer.
354  * 2. Redistributions in binary form must reproduce the above copyright
355  *    notice, this list of conditions and the following disclaimer in the
356  *    documentation and/or other materials provided with the distribution.
357  * 3. All advertising materials mentioning features or use of this software
358  *    must display the following acknowledgement:
359  *      This product includes software developed by David Hulton.
360  * 4. Neither the name of the author nor the names of any co-contributors
361  *    may be used to endorse or promote products derived from this software
362  *    without specific prior written permission.
363  *
364  * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND
365  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
366  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
367  * ARE DISCLAIMED.  IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD
368  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
369  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
370  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
371  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
372  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
373  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
374  * THE POSSIBILITY OF SUCH DAMAGE.
375  */
376
377 /*
378  * standard hermes recieve frame used by wavelan/prism2 cards
379  */
380 struct wi_rx_frame {
381         /*
382          * hermes prefix header. supplies information on the current status of
383          * the network and various other statistics gathered from the
384          * management/control frames as used internally.
385          */
386         u_int16_t       wi_status;
387         u_int16_t       wi_ts0;
388         u_int16_t       wi_ts1;
389         u_int8_t        wi_silence;
390         u_int8_t        wi_signal;
391         u_int8_t        wi_rate;
392         u_int8_t        wi_rx_flow;
393         u_int16_t       wi_rsvd0;
394         u_int16_t       wi_rsvd1;
395         /*
396          * standard 80211 frame header. all packets have to use this header as
397          * per the AN9900 from intersil, even management/control. for
398          * management packets, they just threw the header into the data field,
399          * but for control packets the headers are lost in translation and
400          * therefore not all control packet info can be displayed.
401          */
402         u_int16_t       wi_frame_ctl;
403         u_int16_t       wi_id;
404         u_int8_t        wi_addr1[6];
405         u_int8_t        wi_addr2[6];
406         u_int8_t        wi_addr3[6];
407         u_int16_t       wi_seq_ctl;
408         u_int8_t        wi_addr4[6];
409         u_int16_t       wi_dat_len;
410         /*
411          * another wierdity with the drivers. they append a 802.3 header which
412          * is somewhat redundant, since all the same data is provided in the
413          * 802.11 header.
414          */
415         u_int8_t        wi_dst_addr[6];
416         u_int8_t        wi_src_addr[6];
417         u_int16_t       wi_len;
418 };
419 #define WI_DATA_HDRLEN          WI_802_11_OFFSET
420 #define WI_MGMT_HDRLEN          WI_802_11_OFFSET_RAW
421 #define WI_CTL_HDRLEN           WI_802_11_OFFSET_RAW
422
423
424 /*
425  * all data packets have a snap (sub-network access protocol) header that
426  * isn't entirely definied, but added for ethernet compatibility.
427  */
428 struct wi_snap_frame {
429         u_int16_t       wi_dat[3];
430         u_int16_t       wi_type;
431 };
432
433
434 /*
435  * management frame headers
436  * note: all management frames consist of a static header and variable length
437  * fields.
438  */
439
440 /*
441  * variable length field structure
442  */
443 struct wi_mgmt_var_hdr {
444         u_int8_t        wi_code;
445         u_int8_t        wi_len;
446         u_int8_t        wi_data[256];
447 };
448
449 /*
450  * management beacon frame prefix
451  */
452 struct wi_mgmt_beacon_hdr {
453         u_int32_t       wi_ts0;
454         u_int32_t       wi_ts1;
455         u_int16_t       wi_interval;
456         u_int16_t       wi_capinfo;
457 };
458
459 /*
460  * ibss announcement traffic indication message (atim) frame
461  * note: no parameters
462  */
463
464 /*
465  * management disassociation frame
466  */
467 struct wi_mgmt_disas_hdr {
468         u_int16_t       wi_reason;
469 };
470
471 /*
472  * management association request frame prefix
473  */
474 struct wi_mgmt_asreq_hdr {
475         u_int16_t       wi_capinfo;
476         u_int16_t       wi_interval;
477 };
478
479 /*
480  * management association response frame prefix
481  */
482 struct wi_mgmt_asresp_hdr {
483         u_int16_t       wi_capinfo;
484         u_int16_t       wi_status;
485         u_int16_t       wi_aid;
486 };
487
488 /*
489  * management reassociation request frame prefix
490  */
491 struct wi_mgmt_reasreq_hdr {
492         u_int16_t       wi_capinfo;
493         u_int16_t       wi_interval;
494         u_int8_t        wi_currap[6];
495 };
496
497 /*
498  * management reassociation response frame prefix
499  */
500 struct wi_mgmt_reasresp_hdr {
501         u_int16_t       wi_capinfo;
502         u_int16_t       wi_status;
503         u_int16_t       wi_aid;
504 };
505
506 /*
507  * management probe request frame prefix
508  * note: no static parameters, only variable length
509  */
510
511 /*
512  * management probe response frame prefix
513  */
514 struct wi_mgmt_proberesp_hdr {
515         u_int32_t       wi_ts0;
516         u_int32_t       wi_ts1;
517         u_int16_t       wi_interval;
518         u_int16_t       wi_capinfo;
519 };
520
521 /*
522  * management authentication frame prefix
523  */
524 struct wi_mgmt_auth_hdr {
525         u_int16_t       wi_algo;
526         u_int16_t       wi_seq;
527         u_int16_t       wi_status;
528 };
529
530 /*
531  * management deauthentication frame
532  */
533 struct wi_mgmt_deauth_hdr {
534         u_int16_t       wi_reason;
535 };
536
537
538 /*
539  * rid configuration register definitions
540  */
541 #define WI_RID_SCAN_REQ         0xFCE1 /* scan request information */
542 #define WI_RID_SCAN_RES         0xFD88 /* scan result information */
543
544 #define WI_RID_PROCFRAME        0x3137 /* Return full frame information */
545 #define WI_RID_PRISM2           0x3138 /* tell if we're a prism2 card or not */
546
547
548 /*
549  * 802.11 definitions
550  */
551 #define WI_STAT_BADCRC          0x0001
552 #define WI_STAT_UNDECRYPTABLE   0x0002
553 #define WI_STAT_ERRSTAT         0x0003
554 #define WI_STAT_MAC_PORT        0x0700
555 #define WI_STAT_1042            0x2000
556 #define WI_STAT_TUNNEL          0x4000
557 #define WI_STAT_WMP_MSG         0x6000
558 #define WI_RXSTAT_MSG_TYPE      0xE000
559
560 #define WI_FCTL_OPT_MASK        0xFF00
561 #define WI_AID_SET              0xC000
562 #define WI_AID_MASK             0x3FFF
563 #define WI_SCTL_FRAGNUM_MASK    0x000F
564 #define WI_SCTL_SEQNUM_MASK     0xFFF0
565
566 #define WI_STAT_UNSPEC_FAIL     1
567 #define WI_STAT_CAPINFO_FAIL    10
568 #define WI_STAT_REAS_DENY       11
569 #define WI_STAT_ASSOC_DENY      12
570 #define WI_STAT_ALGO_FAIL       13
571 #define WI_STAT_SEQ_FAIL        14
572 #define WI_STAT_CHAL_FAIL       15
573 #define WI_STAT_TOUT_FAIL       16
574 #define WI_STAT_OVERL_DENY      17
575 #define WI_STAT_RATE_DENY       18
576
577 #define WI_FTYPE_MGMT           0x0000
578 #define WI_FTYPE_CTL            0x0004
579 #define WI_FTYPE_DATA           0x0008
580
581 #define WI_FCTL_VERS            0x0002
582 #define WI_FCTL_FTYPE           0x000C
583 #define WI_FCTL_STYPE           0x00F0
584 #define WI_FCTL_TODS            0x0100
585 #define WI_FCTL_FROMDS          0x0200
586 #define WI_FCTL_MOREFRAGS       0x0400
587 #define WI_FCTL_RETRY           0x0800
588 #define WI_FCTL_PM              0x1000
589 #define WI_FCTL_MOREDATA        0x2000
590 #define WI_FCTL_WEP             0x4000
591 #define WI_FCTL_ORDER           0x8000
592
593 #define WI_FCS_LEN              0x4 /* checksum length */
594
595
596 /*
597  * management definitions
598  */
599 #define WI_STYPE_MGMT_ASREQ     0x0000
600 #define WI_STYPE_MGMT_ASRESP    0x0010
601 #define WI_STYPE_MGMT_REASREQ   0x0020
602 #define WI_STYPE_MGMT_REASRESP  0x0030
603 #define WI_STYPE_MGMT_PROBEREQ  0x0040
604 #define WI_STYPE_MGMT_PROBERESP 0x0050
605 #define WI_STYPE_MGMT_BEACON    0x0080
606 #define WI_STYPE_MGMT_ATIM      0x0090
607 #define WI_STYPE_MGMT_DISAS     0x00A0
608 #define WI_STYPE_MGMT_AUTH      0x00B0
609 #define WI_STYPE_MGMT_DEAUTH    0x00C0
610
611 #define WI_CAPINFO_ESS          0x01
612 #define WI_CAPINFO_IBSS         0x02
613 #define WI_CAPINFO_CFPOLL       0x04
614 #define WI_CAPINFO_CFPOLLREQ    0x08
615 #define WI_CAPINFO_PRIV         0x10
616
617 #define WI_REASON_UNSPEC        1
618 #define WI_REASON_AUTH_INVALID  2
619 #define WI_REASON_DEAUTH_LEAVE  3
620 #define WI_REASON_DISAS_INACT   4
621 #define WI_REASON_DISAS_OVERL   5
622 #define WI_REASON_CLASS2        6
623 #define WI_REASON_CLASS3        7
624 #define WI_REASON_DISAS_LEAVE   8
625 #define WI_REASON_NOAUTH        9
626
627 #define WI_VAR_SSID             0
628 #define WI_VAR_SRATES           1
629 #define WI_VAR_FH               2
630 #define WI_VAR_DS               3
631 #define WI_VAR_CF               4
632 #define WI_VAR_TIM              5
633 #define WI_VAR_IBSS             6
634 #define WI_VAR_CHAL             16
635
636 #define WI_VAR_SRATES_MASK      0x7F
637
638
639 /*
640  * control definitions
641  */
642 #define WI_STYPE_CTL_PSPOLL     0x00A0
643 #define WI_STYPE_CTL_RTS        0x00B0
644 #define WI_STYPE_CTL_CTS        0x00C0
645 #define WI_STYPE_CTL_ACK        0x00D0
646 #define WI_STYPE_CTL_CFEND      0x00E0
647 #define WI_STYPE_CTL_CFENDCFACK 0x00F0
648
649
650 /*
651  * ap scanning structures
652  */
653 struct wi_scan_res {
654         u_int16_t       wi_chan;
655         u_int16_t       wi_noise;
656         u_int16_t       wi_signal;
657         u_int8_t        wi_bssid[6];
658         u_int16_t       wi_interval;
659         u_int16_t       wi_capinfo;
660         u_int16_t       wi_ssid_len;
661         u_int8_t        wi_ssid[32];
662         u_int8_t        wi_srates[10];
663         u_int8_t        wi_rate;
664         u_int8_t        wi_rsvd;
665 };
666 #define WI_WAVELAN_RES_SIZE     50
667
668 struct wi_scan_p2_hdr {
669         u_int16_t       wi_rsvd;
670         u_int16_t       wi_reason;
671 };
672 #define WI_PRISM2_RES_SIZE      62
673
674
675 /*
676  * prism2 debug mode definitions
677  */
678 #define SIOCSPRISM2DEBUG        _IOW('i', 137, struct ifreq)
679 #define SIOCGPRISM2DEBUG        _IOWR('i', 138, struct ifreq)
680
681 #define WI_CMD_DEBUG            0x0038 /* prism2 debug */
682
683 #define WI_DEBUG_RESET          0x00
684 #define WI_DEBUG_INIT           0x01
685 #define WI_DEBUG_SLEEP          0x02
686 #define WI_DEBUG_WAKE           0x03
687 #define WI_DEBUG_CHAN           0x08
688 #define WI_DEBUG_DELAYSUPP      0x09
689 #define WI_DEBUG_TXSUPP         0x0A
690 #define WI_DEBUG_MONITOR        0x0B
691 #define WI_DEBUG_LEDTEST        0x0C
692 #define WI_DEBUG_CONTTX         0x0E
693 #define WI_DEBUG_STOPTEST       0x0F
694 #define WI_DEBUG_CONTRX         0x10
695 #define WI_DEBUG_SIGSTATE       0x11
696 #define WI_DEBUG_CALENABLE      0x13
697 #define WI_DEBUG_CONFBITS       0x15
698
699 #endif