]> 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 r99060,
[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_CNF_DBM_ADJUST   0xFC46
223 #define WI_RID_BASIC_RATE       0xFCB3
224 #define WI_RID_SUPPORT_RATE     0xFCB4
225
226 /*
227  * Network parameters, dynamic configuration entities
228  */
229 #define WI_RID_MCAST_LIST       0xFC80 /* list of multicast addrs */
230 #define WI_RID_CREATE_IBSS      0xFC81 /* create IBSS */
231 #define WI_RID_FRAG_THRESH      0xFC82 /* frag len, unicast msg xmit */
232 #define WI_RID_RTS_THRESH       0xFC83 /* frame len for RTS/CTS handshake */
233 #define WI_RID_TX_RATE          0xFC84 /* data rate for message xmit
234                                         * 0 == Fixed 1mbps
235                                         * 1 == Fixed 2mbps
236                                         * 2 == auto fallback
237                                         */
238 #define WI_RID_PROMISC          0xFC85 /* enable promisc mode */
239 #define WI_RID_FRAG_THRESH0     0xFC90
240 #define WI_RID_FRAG_THRESH1     0xFC91
241 #define WI_RID_FRAG_THRESH2     0xFC92
242 #define WI_RID_FRAG_THRESH3     0xFC93
243 #define WI_RID_FRAG_THRESH4     0xFC94
244 #define WI_RID_FRAG_THRESH5     0xFC95
245 #define WI_RID_FRAG_THRESH6     0xFC96
246 #define WI_RID_RTS_THRESH0      0xFC97
247 #define WI_RID_RTS_THRESH1      0xFC98
248 #define WI_RID_RTS_THRESH2      0xFC99
249 #define WI_RID_RTS_THRESH3      0xFC9A
250 #define WI_RID_RTS_THRESH4      0xFC9B
251 #define WI_RID_RTS_THRESH5      0xFC9C
252 #define WI_RID_RTS_THRESH6      0xFC9D
253 #define WI_RID_TX_RATE0         0xFC9E
254 #define WI_RID_TX_RATE1         0xFC9F
255 #define WI_RID_TX_RATE2         0xFCA0
256 #define WI_RID_TX_RATE3         0xFCA1
257 #define WI_RID_TX_RATE4         0xFCA2
258 #define WI_RID_TX_RATE5         0xFCA3
259 #define WI_RID_TX_RATE6         0xFCA4
260 #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0
261 #define WI_RID_TX_CRYPT_KEY     0xFCB1
262 #define WI_RID_TICK_TIME        0xFCE0
263
264 #ifndef _KERNEL
265 struct wi_key {
266         u_int16_t               wi_keylen;
267         u_int8_t                wi_keydat[14];
268 };
269
270 struct wi_ltv_keys {
271         u_int16_t               wi_len;
272         u_int16_t               wi_type;
273         struct wi_key           wi_keys[4];
274 };
275 #endif
276
277 /*
278  * NIC information
279  */
280 #define WI_RID_DNLD_BUF         0xFD01
281 #define WI_RID_MEMSZ            0xFD02 /* memory size info (XXX Lucent) */
282 #define WI_RID_PRI_IDENTITY     0xFD02 /* primary funcs firmware ident (PRISM2) */
283 #define WI_RID_PRI_SUP_RANGE    0xFD03 /* primary supplier compatibility */
284 #define WI_RID_CIF_ACT_RANGE    0xFD04 /* controller sup. compatibility */
285 #define WI_RID_SERIALNO         0xFD0A /* card serial number */
286 #define WI_RID_CARD_ID          0xFD0B /* card identification */
287 #define WI_RID_MFI_SUP_RANGE    0xFD0C /* modem supplier compatibility */
288 #define WI_RID_CFI_SUP_RANGE    0xFD0D /* controller sup. compatibility */
289 #define WI_RID_CHANNEL_LIST     0xFD10 /* allowd comm. frequencies. */
290 #define WI_RID_REG_DOMAINS      0xFD11 /* list of intendted regulatory doms */
291 #define WI_RID_TEMP_TYPE        0xFD12 /* hw temp range code */
292 #define WI_RID_CIS              0xFD13 /* PC card info struct */
293 #define WI_RID_STA_IDENTITY     0xFD20 /* station funcs firmware ident */
294 #define WI_RID_STA_SUP_RANGE    0xFD21 /* station supplier compat */
295 #define WI_RID_MFI_ACT_RANGE    0xFD22
296 #define WI_RID_SYMBOL_IDENTITY  0xFD24
297 #define WI_RID_CFI_ACT_RANGE    0xFD33
298 #define WI_RID_COMMQUAL         0xFD43
299 #define WI_RID_SCALETHRESH      0xFD46
300 #define WI_RID_PCF              0xFD87
301
302 /*
303  * MAC information
304  */
305 #define WI_RID_PORT_STAT        0xFD40 /* actual MAC port con control stat */
306 #define WI_RID_CURRENT_SSID     0xFD41 /* ID of actually connected SS */
307 #define WI_RID_CURRENT_BSSID    0xFD42 /* ID of actually connected BSS */
308 #define WI_RID_COMMS_QUALITY    0xFD43 /* quality of BSS connection */
309 #define WI_RID_CUR_TX_RATE      0xFD44 /* current TX rate */
310 #define WI_RID_OWN_BEACON_INT   0xFD45 /* beacon xmit time for BSS creation */
311 #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */
312 #define WI_RID_PROT_RESP_TIME   0xFD47 /* time to wait for resp to req msg */
313 #define WI_RID_SHORT_RTR_LIM    0xFD48 /* max tx attempts for short frames */
314 #define WI_RID_LONG_RTS_LIM     0xFD49 /* max tx attempts for long frames */
315 #define WI_RID_MAX_TX_LIFE      0xFD4A /* max tx frame handling duration */
316 #define WI_RID_MAX_RX_LIFE      0xFD4B /* max rx frame handling duration */
317 #define WI_RID_CF_POLL          0xFD4C /* contention free pollable ind */
318 #define WI_RID_AUTH_ALGS        0xFD4D /* auth algorithms available */
319 #define WI_RID_AUTH_TYPE        0xFD4E /* availanle auth types */
320 #define WI_RID_WEP_AVAIL        0xFD4F /* WEP privacy option available */
321 #define WI_RID_CUR_TX_RATE1     0xFD80
322 #define WI_RID_CUR_TX_RATE2     0xFD81
323 #define WI_RID_CUR_TX_RATE3     0xFD82
324 #define WI_RID_CUR_TX_RATE4     0xFD83
325 #define WI_RID_CUR_TX_RATE5     0xFD84
326 #define WI_RID_CUR_TX_RATE6     0xFD85
327 #define WI_RID_OWN_MAC          0xFD86 /* unique local MAC addr */
328 #define WI_RID_PCI_INFO         0xFD87 /* point coordination func cap */
329
330 /*
331  * Modem information
332  */
333 #define WI_RID_PHY_TYPE         0xFDC0 /* phys layer type indication */
334 #define WI_RID_CURRENT_CHAN     0xFDC1 /* current frequency */
335 #define WI_RID_PWR_STATE        0xFDC2 /* pwr consumption status */
336 #define WI_RID_CCA_MODE         0xFDC3 /* clear chan assess mode indication */
337 #define WI_RID_CCA_TIME         0xFDC4 /* clear chan assess time */
338 #define WI_RID_MAC_PROC_DELAY   0xFDC5 /* MAC processing delay time */
339 #define WI_RID_DATA_RATES       0xFDC6 /* supported data rates */
340
341 /*
342  * bsd-airtools v0.2 - source-mods v0.2 [common.h]
343  * by h1kari - (c) Dachb0den Labs 2001
344  */
345
346 /*
347  * Copyright (c) 2001 Dachb0den Labs.
348  *      David Hulton <h1kari@dachb0den.com>.  All rights reserved.
349  *
350  * Redistribution and use in source and binary forms, with or without
351  * modification, are permitted provided that the following conditions
352  * are met:
353  * 1. Redistributions of source code must retain the above copyright
354  *    notice, this list of conditions and the following disclaimer.
355  * 2. Redistributions in binary form must reproduce the above copyright
356  *    notice, this list of conditions and the following disclaimer in the
357  *    documentation and/or other materials provided with the distribution.
358  * 3. All advertising materials mentioning features or use of this software
359  *    must display the following acknowledgement:
360  *      This product includes software developed by David Hulton.
361  * 4. Neither the name of the author nor the names of any co-contributors
362  *    may be used to endorse or promote products derived from this software
363  *    without specific prior written permission.
364  *
365  * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND
366  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
367  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
368  * ARE DISCLAIMED.  IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD
369  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
370  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
371  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
372  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
373  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
374  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
375  * THE POSSIBILITY OF SUCH DAMAGE.
376  */
377
378 /*
379  * standard hermes recieve frame used by wavelan/prism2 cards
380  */
381 struct wi_rx_frame {
382         /*
383          * hermes prefix header. supplies information on the current status of
384          * the network and various other statistics gathered from the
385          * management/control frames as used internally.
386          */
387         u_int16_t       wi_status;
388         u_int16_t       wi_ts0;
389         u_int16_t       wi_ts1;
390         u_int8_t        wi_silence;
391         u_int8_t        wi_signal;
392         u_int8_t        wi_rate;
393         u_int8_t        wi_rx_flow;
394         u_int16_t       wi_rsvd0;
395         u_int16_t       wi_rsvd1;
396         /*
397          * standard 80211 frame header. all packets have to use this header as
398          * per the AN9900 from intersil, even management/control. for
399          * management packets, they just threw the header into the data field,
400          * but for control packets the headers are lost in translation and
401          * therefore not all control packet info can be displayed.
402          */
403         u_int16_t       wi_frame_ctl;
404         u_int16_t       wi_id;
405         u_int8_t        wi_addr1[6];
406         u_int8_t        wi_addr2[6];
407         u_int8_t        wi_addr3[6];
408         u_int16_t       wi_seq_ctl;
409         u_int8_t        wi_addr4[6];
410         u_int16_t       wi_dat_len;
411         /*
412          * another wierdity with the drivers. they append a 802.3 header which
413          * is somewhat redundant, since all the same data is provided in the
414          * 802.11 header.
415          */
416         u_int8_t        wi_dst_addr[6];
417         u_int8_t        wi_src_addr[6];
418         u_int16_t       wi_len;
419 };
420 #define WI_DATA_HDRLEN          WI_802_11_OFFSET
421 #define WI_MGMT_HDRLEN          WI_802_11_OFFSET_RAW
422 #define WI_CTL_HDRLEN           WI_802_11_OFFSET_RAW
423
424
425 /*
426  * all data packets have a snap (sub-network access protocol) header that
427  * isn't entirely definied, but added for ethernet compatibility.
428  */
429 struct wi_snap_frame {
430         u_int16_t       wi_dat[3];
431         u_int16_t       wi_type;
432 };
433
434
435 /*
436  * management frame headers
437  * note: all management frames consist of a static header and variable length
438  * fields.
439  */
440
441 /*
442  * variable length field structure
443  */
444 struct wi_mgmt_var_hdr {
445         u_int8_t        wi_code;
446         u_int8_t        wi_len;
447         u_int8_t        wi_data[256];
448 };
449
450 /*
451  * management beacon frame prefix
452  */
453 struct wi_mgmt_beacon_hdr {
454         u_int32_t       wi_ts0;
455         u_int32_t       wi_ts1;
456         u_int16_t       wi_interval;
457         u_int16_t       wi_capinfo;
458 };
459
460 /*
461  * ibss announcement traffic indication message (atim) frame
462  * note: no parameters
463  */
464
465 /*
466  * management disassociation frame
467  */
468 struct wi_mgmt_disas_hdr {
469         u_int16_t       wi_reason;
470 };
471
472 /*
473  * management association request frame prefix
474  */
475 struct wi_mgmt_asreq_hdr {
476         u_int16_t       wi_capinfo;
477         u_int16_t       wi_interval;
478 };
479
480 /*
481  * management association response frame prefix
482  */
483 struct wi_mgmt_asresp_hdr {
484         u_int16_t       wi_capinfo;
485         u_int16_t       wi_status;
486         u_int16_t       wi_aid;
487 };
488
489 /*
490  * management reassociation request frame prefix
491  */
492 struct wi_mgmt_reasreq_hdr {
493         u_int16_t       wi_capinfo;
494         u_int16_t       wi_interval;
495         u_int8_t        wi_currap[6];
496 };
497
498 /*
499  * management reassociation response frame prefix
500  */
501 struct wi_mgmt_reasresp_hdr {
502         u_int16_t       wi_capinfo;
503         u_int16_t       wi_status;
504         u_int16_t       wi_aid;
505 };
506
507 /*
508  * management probe request frame prefix
509  * note: no static parameters, only variable length
510  */
511
512 /*
513  * management probe response frame prefix
514  */
515 struct wi_mgmt_proberesp_hdr {
516         u_int32_t       wi_ts0;
517         u_int32_t       wi_ts1;
518         u_int16_t       wi_interval;
519         u_int16_t       wi_capinfo;
520 };
521
522 /*
523  * management authentication frame prefix
524  */
525 struct wi_mgmt_auth_hdr {
526         u_int16_t       wi_algo;
527         u_int16_t       wi_seq;
528         u_int16_t       wi_status;
529 };
530
531 /*
532  * management deauthentication frame
533  */
534 struct wi_mgmt_deauth_hdr {
535         u_int16_t       wi_reason;
536 };
537
538
539 /*
540  * rid configuration register definitions
541  */
542 #define WI_RID_SCAN_REQ         0xFCE1 /* scan request information */
543 #define WI_RID_SCAN_RES         0xFD88 /* scan result information */
544
545 #define WI_RID_PROCFRAME        0x3137 /* Return full frame information */
546 #define WI_RID_PRISM2           0x3138 /* tell if we're a prism2 card or not */
547
548
549 /*
550  * 802.11 definitions
551  */
552 #define WI_STAT_BADCRC          0x0001
553 #define WI_STAT_UNDECRYPTABLE   0x0002
554 #define WI_STAT_ERRSTAT         0x0003
555 #define WI_STAT_MAC_PORT        0x0700
556 #define WI_STAT_1042            0x2000
557 #define WI_STAT_TUNNEL          0x4000
558 #define WI_STAT_WMP_MSG         0x6000
559 #define WI_RXSTAT_MSG_TYPE      0xE000
560
561 #define WI_FCTL_OPT_MASK        0xFF00
562 #define WI_AID_SET              0xC000
563 #define WI_AID_MASK             0x3FFF
564 #define WI_SCTL_FRAGNUM_MASK    0x000F
565 #define WI_SCTL_SEQNUM_MASK     0xFFF0
566
567 #define WI_STAT_UNSPEC_FAIL     1
568 #define WI_STAT_CAPINFO_FAIL    10
569 #define WI_STAT_REAS_DENY       11
570 #define WI_STAT_ASSOC_DENY      12
571 #define WI_STAT_ALGO_FAIL       13
572 #define WI_STAT_SEQ_FAIL        14
573 #define WI_STAT_CHAL_FAIL       15
574 #define WI_STAT_TOUT_FAIL       16
575 #define WI_STAT_OVERL_DENY      17
576 #define WI_STAT_RATE_DENY       18
577
578 #define WI_FTYPE_MGMT           0x0000
579 #define WI_FTYPE_CTL            0x0004
580 #define WI_FTYPE_DATA           0x0008
581
582 #define WI_FCTL_VERS            0x0002
583 #define WI_FCTL_FTYPE           0x000C
584 #define WI_FCTL_STYPE           0x00F0
585 #define WI_FCTL_TODS            0x0100
586 #define WI_FCTL_FROMDS          0x0200
587 #define WI_FCTL_MOREFRAGS       0x0400
588 #define WI_FCTL_RETRY           0x0800
589 #define WI_FCTL_PM              0x1000
590 #define WI_FCTL_MOREDATA        0x2000
591 #define WI_FCTL_WEP             0x4000
592 #define WI_FCTL_ORDER           0x8000
593
594 #define WI_FCS_LEN              0x4 /* checksum length */
595
596
597 /*
598  * management definitions
599  */
600 #define WI_STYPE_MGMT_ASREQ     0x0000
601 #define WI_STYPE_MGMT_ASRESP    0x0010
602 #define WI_STYPE_MGMT_REASREQ   0x0020
603 #define WI_STYPE_MGMT_REASRESP  0x0030
604 #define WI_STYPE_MGMT_PROBEREQ  0x0040
605 #define WI_STYPE_MGMT_PROBERESP 0x0050
606 #define WI_STYPE_MGMT_BEACON    0x0080
607 #define WI_STYPE_MGMT_ATIM      0x0090
608 #define WI_STYPE_MGMT_DISAS     0x00A0
609 #define WI_STYPE_MGMT_AUTH      0x00B0
610 #define WI_STYPE_MGMT_DEAUTH    0x00C0
611
612 #define WI_CAPINFO_ESS          0x01
613 #define WI_CAPINFO_IBSS         0x02
614 #define WI_CAPINFO_CFPOLL       0x04
615 #define WI_CAPINFO_CFPOLLREQ    0x08
616 #define WI_CAPINFO_PRIV         0x10
617
618 #define WI_REASON_UNSPEC        1
619 #define WI_REASON_AUTH_INVALID  2
620 #define WI_REASON_DEAUTH_LEAVE  3
621 #define WI_REASON_DISAS_INACT   4
622 #define WI_REASON_DISAS_OVERL   5
623 #define WI_REASON_CLASS2        6
624 #define WI_REASON_CLASS3        7
625 #define WI_REASON_DISAS_LEAVE   8
626 #define WI_REASON_NOAUTH        9
627
628 #define WI_VAR_SSID             0
629 #define WI_VAR_SRATES           1
630 #define WI_VAR_FH               2
631 #define WI_VAR_DS               3
632 #define WI_VAR_CF               4
633 #define WI_VAR_TIM              5
634 #define WI_VAR_IBSS             6
635 #define WI_VAR_CHAL             16
636
637 #define WI_VAR_SRATES_MASK      0x7F
638
639
640 /*
641  * control definitions
642  */
643 #define WI_STYPE_CTL_PSPOLL     0x00A0
644 #define WI_STYPE_CTL_RTS        0x00B0
645 #define WI_STYPE_CTL_CTS        0x00C0
646 #define WI_STYPE_CTL_ACK        0x00D0
647 #define WI_STYPE_CTL_CFEND      0x00E0
648 #define WI_STYPE_CTL_CFENDCFACK 0x00F0
649
650
651 /*
652  * ap scanning structures
653  */
654 struct wi_scan_res {
655         u_int16_t       wi_chan;
656         u_int16_t       wi_noise;
657         u_int16_t       wi_signal;
658         u_int8_t        wi_bssid[6];
659         u_int16_t       wi_interval;
660         u_int16_t       wi_capinfo;
661         u_int16_t       wi_ssid_len;
662         u_int8_t        wi_ssid[32];
663         u_int8_t        wi_srates[10];
664         u_int8_t        wi_rate;
665         u_int8_t        wi_rsvd;
666 };
667 #define WI_WAVELAN_RES_SIZE     50
668
669 struct wi_scan_p2_hdr {
670         u_int16_t       wi_rsvd;
671         u_int16_t       wi_reason;
672 };
673 #define WI_PRISM2_RES_SIZE      62
674
675
676 /*
677  * prism2 debug mode definitions
678  */
679 #define SIOCSPRISM2DEBUG        _IOW('i', 137, struct ifreq)
680 #define SIOCGPRISM2DEBUG        _IOWR('i', 138, struct ifreq)
681
682 #define WI_CMD_DEBUG            0x0038 /* prism2 debug */
683
684 #define WI_DEBUG_RESET          0x00
685 #define WI_DEBUG_INIT           0x01
686 #define WI_DEBUG_SLEEP          0x02
687 #define WI_DEBUG_WAKE           0x03
688 #define WI_DEBUG_CHAN           0x08
689 #define WI_DEBUG_DELAYSUPP      0x09
690 #define WI_DEBUG_TXSUPP         0x0A
691 #define WI_DEBUG_MONITOR        0x0B
692 #define WI_DEBUG_LEDTEST        0x0C
693 #define WI_DEBUG_CONTTX         0x0E
694 #define WI_DEBUG_STOPTEST       0x0F
695 #define WI_DEBUG_CONTRX         0x10
696 #define WI_DEBUG_SIGSTATE       0x11
697 #define WI_DEBUG_CALENABLE      0x13
698 #define WI_DEBUG_CONFBITS       0x15
699
700 #endif