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.3 2004/01/08 18:48:07 asmodai 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 weirdity 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 702