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