15d8e19b2SRui Paulo /*- 25d8e19b2SRui Paulo * Copyright (c) 1997, 1998, 1999 35d8e19b2SRui Paulo * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. 45d8e19b2SRui Paulo * 55d8e19b2SRui Paulo * Redistribution and use in source and binary forms, with or without 65d8e19b2SRui Paulo * modification, are permitted provided that the following conditions 75d8e19b2SRui Paulo * are met: 85d8e19b2SRui Paulo * 1. Redistributions of source code must retain the above copyright 95d8e19b2SRui Paulo * notice, this list of conditions and the following disclaimer. 105d8e19b2SRui Paulo * 2. Redistributions in binary form must reproduce the above copyright 115d8e19b2SRui Paulo * notice, this list of conditions and the following disclaimer in the 125d8e19b2SRui Paulo * documentation and/or other materials provided with the distribution. 135d8e19b2SRui Paulo * 3. All advertising materials mentioning features or use of this software 145d8e19b2SRui Paulo * must display the following acknowledgement: 155d8e19b2SRui Paulo * This product includes software developed by Bill Paul. 165d8e19b2SRui Paulo * 4. Neither the name of the author nor the names of any co-contributors 175d8e19b2SRui Paulo * may be used to endorse or promote products derived from this software 185d8e19b2SRui Paulo * without specific prior written permission. 195d8e19b2SRui Paulo * 205d8e19b2SRui Paulo * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 215d8e19b2SRui Paulo * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 225d8e19b2SRui Paulo * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 235d8e19b2SRui Paulo * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD 245d8e19b2SRui Paulo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 255d8e19b2SRui Paulo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 265d8e19b2SRui Paulo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 275d8e19b2SRui Paulo * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 285d8e19b2SRui Paulo * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 295d8e19b2SRui Paulo * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 305d8e19b2SRui Paulo * THE POSSIBILITY OF SUCH DAMAGE. 315d8e19b2SRui Paulo * 32cbe85c04SImre Vadász * $FreeBSD: head/sys/dev/wi/if_wavelan_ieee.h 298955 2016-05-03 03:41:25Z pfg $ 335d8e19b2SRui Paulo */ 345d8e19b2SRui Paulo 355d8e19b2SRui Paulo #ifndef _IF_WAVELAN_IEEE_H 365d8e19b2SRui Paulo #define _IF_WAVELAN_IEEE_H 375d8e19b2SRui Paulo 385d8e19b2SRui Paulo /* 395d8e19b2SRui Paulo * This header defines a simple command interface to the FreeBSD 405d8e19b2SRui Paulo * WaveLAN/IEEE driver (wi) driver, which is used to set certain 415d8e19b2SRui Paulo * device-specific parameters which can't be easily managed through 425d8e19b2SRui Paulo * ifconfig(8). No, sysctl(2) is not the answer. I said a _simple_ 435d8e19b2SRui Paulo * interface, didn't I. 445d8e19b2SRui Paulo */ 455d8e19b2SRui Paulo 465d8e19b2SRui Paulo #ifndef SIOCSWAVELAN 475d8e19b2SRui Paulo #define SIOCSWAVELAN SIOCSIFGENERIC 485d8e19b2SRui Paulo #endif 495d8e19b2SRui Paulo 505d8e19b2SRui Paulo #ifndef SIOCGWAVELAN 515d8e19b2SRui Paulo #define SIOCGWAVELAN SIOCGIFGENERIC 525d8e19b2SRui Paulo #endif 535d8e19b2SRui Paulo 545d8e19b2SRui Paulo /* 555d8e19b2SRui Paulo * Technically I don't think there's a limit to a record 565d8e19b2SRui Paulo * length. The largest record is the one that contains the CIS 575d8e19b2SRui Paulo * data, which is 240 words long, so 256 should be a safe 585d8e19b2SRui Paulo * value. 595d8e19b2SRui Paulo */ 605d8e19b2SRui Paulo #define WI_MAX_DATALEN 512 615d8e19b2SRui Paulo 62cbe85c04SImre Vadász #if 0 635d8e19b2SRui Paulo struct wi_req { 645d8e19b2SRui Paulo u_int16_t wi_len; 655d8e19b2SRui Paulo u_int16_t wi_type; 665d8e19b2SRui Paulo u_int16_t wi_val[WI_MAX_DATALEN]; 675d8e19b2SRui Paulo }; 68cbe85c04SImre Vadász #endif 695d8e19b2SRui Paulo 705d8e19b2SRui Paulo /* 715d8e19b2SRui Paulo * Private LTV records (interpreted only by the driver). This is 725d8e19b2SRui Paulo * a minor kludge to allow reading the interface statistics from 735d8e19b2SRui Paulo * the driver. 745d8e19b2SRui Paulo */ 755d8e19b2SRui Paulo #define WI_RID_IFACE_STATS 0x0100 765d8e19b2SRui Paulo #define WI_RID_MGMT_XMIT 0x0200 775d8e19b2SRui Paulo #define WI_RID_ZERO_CACHE 0x0300 785d8e19b2SRui Paulo #define WI_RID_READ_CACHE 0x0400 795d8e19b2SRui Paulo #define WI_RID_FWDOWNLOAD 0x0500 805d8e19b2SRui Paulo #define WI_RID_MONITOR_MODE 0x0600 815d8e19b2SRui Paulo #define WI_RID_MIF 0x0700 825d8e19b2SRui Paulo #define WI_RID_SCAN_APS 0x0800 835d8e19b2SRui Paulo #define WI_RID_READ_APS 0x0900 845d8e19b2SRui Paulo 855d8e19b2SRui Paulo struct wi_80211_hdr { 865d8e19b2SRui Paulo u_int16_t frame_ctl; 875d8e19b2SRui Paulo u_int16_t dur_id; 885d8e19b2SRui Paulo u_int8_t addr1[6]; 895d8e19b2SRui Paulo u_int8_t addr2[6]; 905d8e19b2SRui Paulo u_int8_t addr3[6]; 915d8e19b2SRui Paulo u_int16_t seq_ctl; 925d8e19b2SRui Paulo u_int8_t addr4[6]; 935d8e19b2SRui Paulo }; 945d8e19b2SRui Paulo 955d8e19b2SRui Paulo #define WI_FCTL_VERS 0x0002 965d8e19b2SRui Paulo #define WI_FCTL_FTYPE 0x000C 975d8e19b2SRui Paulo #define WI_FCTL_STYPE 0x00F0 985d8e19b2SRui Paulo #define WI_FCTL_TODS 0x0100 995d8e19b2SRui Paulo #define WI_FCTL_FROMDS 0x0200 1005d8e19b2SRui Paulo #define WI_FCTL_MOREFRAGS 0x0400 1015d8e19b2SRui Paulo #define WI_FCTL_RETRY 0x0800 1025d8e19b2SRui Paulo #define WI_FCTL_PM 0x1000 1035d8e19b2SRui Paulo #define WI_FCTL_MOREDATA 0x2000 1045d8e19b2SRui Paulo #define WI_FCTL_WEP 0x4000 1055d8e19b2SRui Paulo #define WI_FCTL_ORDER 0x8000 1065d8e19b2SRui Paulo 1075d8e19b2SRui Paulo #define WI_FTYPE_MGMT 0x0000 1085d8e19b2SRui Paulo #define WI_FTYPE_CTL 0x0004 1095d8e19b2SRui Paulo #define WI_FTYPE_DATA 0x0008 1105d8e19b2SRui Paulo 1115d8e19b2SRui Paulo #define WI_STYPE_MGMT_ASREQ 0x0000 /* association request */ 1125d8e19b2SRui Paulo #define WI_STYPE_MGMT_ASRESP 0x0010 /* association response */ 1135d8e19b2SRui Paulo #define WI_STYPE_MGMT_REASREQ 0x0020 /* reassociation request */ 1145d8e19b2SRui Paulo #define WI_STYPE_MGMT_REASRESP 0x0030 /* reassociation response */ 1155d8e19b2SRui Paulo #define WI_STYPE_MGMT_PROBEREQ 0x0040 /* probe request */ 1165d8e19b2SRui Paulo #define WI_STYPE_MGMT_PROBERESP 0x0050 /* probe response */ 1175d8e19b2SRui Paulo #define WI_STYPE_MGMT_BEACON 0x0080 /* beacon */ 1185d8e19b2SRui Paulo #define WI_STYPE_MGMT_ATIM 0x0090 /* announcement traffic ind msg */ 1195d8e19b2SRui Paulo #define WI_STYPE_MGMT_DISAS 0x00A0 /* disassociation */ 1205d8e19b2SRui Paulo #define WI_STYPE_MGMT_AUTH 0x00B0 /* authentication */ 1215d8e19b2SRui Paulo #define WI_STYPE_MGMT_DEAUTH 0x00C0 /* deauthentication */ 1225d8e19b2SRui Paulo 1235d8e19b2SRui Paulo #define WI_STYPE_CTL_PSPOLL 0x00A0 1245d8e19b2SRui Paulo #define WI_STYPE_CTL_RTS 0x00B0 1255d8e19b2SRui Paulo #define WI_STYPE_CTL_CTS 0x00C0 1265d8e19b2SRui Paulo #define WI_STYPE_CTL_ACK 0x00D0 1275d8e19b2SRui Paulo #define WI_STYPE_CTL_CFEND 0x00E0 1285d8e19b2SRui Paulo #define WI_STYPE_CTL_CFENDACK 0x00F0 1295d8e19b2SRui Paulo 1305d8e19b2SRui Paulo struct wi_mgmt_hdr { 1315d8e19b2SRui Paulo u_int16_t frame_ctl; 1325d8e19b2SRui Paulo u_int16_t duration; 1335d8e19b2SRui Paulo u_int8_t dst_addr[6]; 1345d8e19b2SRui Paulo u_int8_t src_addr[6]; 1355d8e19b2SRui Paulo u_int8_t bssid[6]; 1365d8e19b2SRui Paulo u_int16_t seq_ctl; 1375d8e19b2SRui Paulo }; 1385d8e19b2SRui Paulo 1395d8e19b2SRui Paulo /* 1405d8e19b2SRui Paulo * Lucent/wavelan IEEE signal strength cache 1415d8e19b2SRui Paulo * 1425d8e19b2SRui Paulo * driver keeps cache of last 1435d8e19b2SRui Paulo * MAXWICACHE packets to arrive including signal strength info. 1445d8e19b2SRui Paulo * daemons may read this via ioctl 1455d8e19b2SRui Paulo * 1465d8e19b2SRui Paulo * Each entry in the wi_sigcache has a unique macsrc. 1475d8e19b2SRui Paulo */ 1485d8e19b2SRui Paulo struct wi_sigcache { 1495d8e19b2SRui Paulo char macsrc[6]; /* unique MAC address for entry */ 1505d8e19b2SRui Paulo int ipsrc; /* ip address associated with packet */ 1515d8e19b2SRui Paulo int signal; /* signal strength of the packet */ 1525d8e19b2SRui Paulo int noise; /* noise value */ 1535d8e19b2SRui Paulo int quality; /* quality of the packet */ 1545d8e19b2SRui Paulo }; 1555d8e19b2SRui Paulo 1565d8e19b2SRui Paulo /* 1575d8e19b2SRui Paulo * Firmware downloading API. We support downloading into RAM and into 1585d8e19b2SRui Paulo * flash. We copy the entire .hex file for both the primary and secondary 1595d8e19b2SRui Paulo * firmware into the kernel, which is minorly gross, but matches the 1605d8e19b2SRui Paulo * format of the compiled in firmware. 1615d8e19b2SRui Paulo */ 1625d8e19b2SRui Paulo struct wi_fwdownload { 1635d8e19b2SRui Paulo int type; /* What type of download. */ 1645d8e19b2SRui Paulo #define WI_FW_RAM 1 1655d8e19b2SRui Paulo #define WI_FW_FLASH 2 1665d8e19b2SRui Paulo size_t pri_len; /* Primary firmware length */ 1675d8e19b2SRui Paulo size_t sec_len; /* Secondary firmware length */ 1685d8e19b2SRui Paulo caddr_t pri_data; /* Pointer (user) to primary data */ 1695d8e19b2SRui Paulo caddr_t sec_data; /* Pointer (user) to secondary data */ 1705d8e19b2SRui Paulo }; 1715d8e19b2SRui Paulo 1725d8e19b2SRui Paulo struct wi_counters { 1735d8e19b2SRui Paulo u_int32_t wi_tx_unicast_frames; 1745d8e19b2SRui Paulo u_int32_t wi_tx_multicast_frames; 1755d8e19b2SRui Paulo u_int32_t wi_tx_fragments; 1765d8e19b2SRui Paulo u_int32_t wi_tx_unicast_octets; 1775d8e19b2SRui Paulo u_int32_t wi_tx_multicast_octets; 1785d8e19b2SRui Paulo u_int32_t wi_tx_deferred_xmits; 1795d8e19b2SRui Paulo u_int32_t wi_tx_single_retries; 1805d8e19b2SRui Paulo u_int32_t wi_tx_multi_retries; 1815d8e19b2SRui Paulo u_int32_t wi_tx_retry_limit; 1825d8e19b2SRui Paulo u_int32_t wi_tx_discards; 1835d8e19b2SRui Paulo u_int32_t wi_rx_unicast_frames; 1845d8e19b2SRui Paulo u_int32_t wi_rx_multicast_frames; 1855d8e19b2SRui Paulo u_int32_t wi_rx_fragments; 1865d8e19b2SRui Paulo u_int32_t wi_rx_unicast_octets; 1875d8e19b2SRui Paulo u_int32_t wi_rx_multicast_octets; 1885d8e19b2SRui Paulo u_int32_t wi_rx_fcs_errors; 1895d8e19b2SRui Paulo u_int32_t wi_rx_discards_nobuf; 1905d8e19b2SRui Paulo u_int32_t wi_tx_discards_wrong_sa; 1915d8e19b2SRui Paulo u_int32_t wi_rx_WEP_cant_decrypt; 1925d8e19b2SRui Paulo u_int32_t wi_rx_msg_in_msg_frags; 1935d8e19b2SRui Paulo u_int32_t wi_rx_msg_in_bad_msg_frags; 1945d8e19b2SRui Paulo }; 1955d8e19b2SRui Paulo 1965d8e19b2SRui Paulo /* 1975d8e19b2SRui Paulo * Network parameters, static configuration entities. 1985d8e19b2SRui Paulo */ 1995d8e19b2SRui Paulo #define WI_RID_PORTTYPE 0xFC00 /* Connection control characteristics */ 2005d8e19b2SRui Paulo #define WI_RID_MAC_NODE 0xFC01 /* MAC address of this station */ 2015d8e19b2SRui Paulo #define WI_RID_DESIRED_SSID 0xFC02 /* Service Set ID for connection */ 2025d8e19b2SRui Paulo #define WI_RID_OWN_CHNL 0xFC03 /* Comm channel for BSS creation */ 2035d8e19b2SRui Paulo #define WI_RID_OWN_SSID 0xFC04 /* IBSS creation ID */ 2045d8e19b2SRui Paulo #define WI_RID_OWN_ATIM_WIN 0xFC05 /* ATIM window time for IBSS creation */ 2055d8e19b2SRui Paulo #define WI_RID_SYSTEM_SCALE 0xFC06 /* scale that specifies AP density */ 2065d8e19b2SRui Paulo #define WI_RID_MAX_DATALEN 0xFC07 /* Max len of MAC frame body data */ 2075d8e19b2SRui Paulo #define WI_RID_MAC_WDS 0xFC08 /* MAC addr of corresponding WDS node */ 2085d8e19b2SRui Paulo #define WI_RID_PM_ENABLED 0xFC09 /* ESS power management enable */ 2095d8e19b2SRui Paulo #define WI_RID_PM_EPS 0xFC0A /* PM EPS/PS mode */ 2105d8e19b2SRui Paulo #define WI_RID_MCAST_RX 0xFC0B /* ESS PM mcast reception */ 2115d8e19b2SRui Paulo #define WI_RID_MAX_SLEEP 0xFC0C /* max sleep time for ESS PM */ 2125d8e19b2SRui Paulo #define WI_RID_HOLDOVER 0xFC0D /* holdover time for ESS PM */ 2135d8e19b2SRui Paulo #define WI_RID_NODENAME 0xFC0E /* ID name of this node for diag */ 2145d8e19b2SRui Paulo #define WI_RID_DTIM_PERIOD 0xFC10 /* beacon interval between DTIMs */ 2155d8e19b2SRui Paulo #define WI_RID_WDS_ADDR1 0xFC11 /* port 1 MAC of WDS link node */ 2165d8e19b2SRui Paulo #define WI_RID_WDS_ADDR2 0xFC12 /* port 1 MAC of WDS link node */ 2175d8e19b2SRui Paulo #define WI_RID_WDS_ADDR3 0xFC13 /* port 1 MAC of WDS link node */ 2185d8e19b2SRui Paulo #define WI_RID_WDS_ADDR4 0xFC14 /* port 1 MAC of WDS link node */ 2195d8e19b2SRui Paulo #define WI_RID_WDS_ADDR5 0xFC15 /* port 1 MAC of WDS link node */ 2205d8e19b2SRui Paulo #define WI_RID_WDS_ADDR6 0xFC16 /* port 1 MAC of WDS link node */ 2215d8e19b2SRui Paulo #define WI_RID_MCAST_PM_BUF 0xFC17 /* PM buffering of mcast */ 2225d8e19b2SRui Paulo #define WI_RID_ENCRYPTION 0xFC20 /* enable/disable WEP */ 2235d8e19b2SRui Paulo #define WI_RID_AUTHTYPE 0xFC21 /* specify authentication type */ 2245d8e19b2SRui Paulo #define WI_RID_P2_TX_CRYPT_KEY 0xFC23 2255d8e19b2SRui Paulo #define WI_RID_P2_CRYPT_KEY0 0xFC24 2265d8e19b2SRui Paulo #define WI_RID_P2_CRYPT_KEY1 0xFC25 2275d8e19b2SRui Paulo #define WI_RID_MICROWAVE_OVEN 0xFC25 2285d8e19b2SRui Paulo #define WI_RID_P2_CRYPT_KEY2 0xFC26 2295d8e19b2SRui Paulo #define WI_RID_P2_CRYPT_KEY3 0xFC27 2305d8e19b2SRui Paulo #define WI_RID_P2_ENCRYPTION 0xFC28 2315d8e19b2SRui Paulo #define WI_RID_ALT_RETRY_CNT 0xFC32 2325d8e19b2SRui Paulo #define PRIVACY_INVOKED 0x01 2335d8e19b2SRui Paulo #define EXCLUDE_UNENCRYPTED 0x02 2345d8e19b2SRui Paulo #define HOST_ENCRYPT 0x10 2355d8e19b2SRui Paulo #define IV_EVERY_FRAME 0x00 /* IV = Initialization Vector */ 2365d8e19b2SRui Paulo #define IV_EVERY10_FRAME 0x20 /* every 10 frame IV reuse */ 2375d8e19b2SRui Paulo #define IV_EVERY50_FRAME 0x40 /* every 50 frame IV reuse */ 2385d8e19b2SRui Paulo #define IV_EVERY100_FRAME 0x60 /* every 100 frame IV reuse */ 2395d8e19b2SRui Paulo #define HOST_DECRYPT 0x80 2405d8e19b2SRui Paulo #define WI_RID_WEP_MAPTABLE 0xFC29 2415d8e19b2SRui Paulo #define WI_RID_CNFAUTHMODE 0xFC2A 2425d8e19b2SRui Paulo #define WI_RID_ROAMING_MODE 0xFC2D 2435d8e19b2SRui Paulo #define WI_RID_OWN_BEACON_INT 0xFC33 /* beacon xmit time for BSS creation */ 2445d8e19b2SRui Paulo #define WI_RID_ENH_SECURITY 0xFC43 /* enhanced security (AP mode) */ 2455d8e19b2SRui Paulo #define WI_RID_CNF_DBM_ADJUST 0xFC46 2465d8e19b2SRui Paulo #define WI_RID_DBM_ADJUST 0xFC46 /* RSSI - WI_RID_DBM_ADJUST ~ dBm */ 2475d8e19b2SRui Paulo #define WI_RID_WPA_DATA 0xFC48 /* WPA IE */ 2485d8e19b2SRui Paulo #define WI_RID_BASIC_RATE 0xFCB3 2495d8e19b2SRui Paulo #define WI_RID_SUPPORT_RATE 0xFCB4 2505d8e19b2SRui Paulo #define WI_RID_WPA_HANDLING 0xFCBB /* WPA handling procedures */ 2515d8e19b2SRui Paulo 2525d8e19b2SRui Paulo /* 2535d8e19b2SRui Paulo * Network parameters, dynamic configuration entities 2545d8e19b2SRui Paulo */ 2555d8e19b2SRui Paulo #define WI_RID_MCAST_LIST 0xFC80 /* list of multicast addrs */ 2565d8e19b2SRui Paulo #define WI_RID_CREATE_IBSS 0xFC81 /* create IBSS */ 2575d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH 0xFC82 /* frag len, unicast msg xmit */ 2585d8e19b2SRui Paulo #define WI_RID_RTS_THRESH 0xFC83 /* frame len for RTS/CTS handshake */ 2595d8e19b2SRui Paulo #define WI_RID_TX_RATE 0xFC84 /* data rate for message xmit 2605d8e19b2SRui Paulo * 0 == Fixed 1mbps 2615d8e19b2SRui Paulo * 1 == Fixed 2mbps 2625d8e19b2SRui Paulo * 2 == auto fallback 2635d8e19b2SRui Paulo */ 2645d8e19b2SRui Paulo #define WI_RID_PROMISC 0xFC85 /* enable promisc mode */ 2655d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH0 0xFC90 2665d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH1 0xFC91 2675d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH2 0xFC92 2685d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH3 0xFC93 2695d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH4 0xFC94 2705d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH5 0xFC95 2715d8e19b2SRui Paulo #define WI_RID_FRAG_THRESH6 0xFC96 2725d8e19b2SRui Paulo #define WI_RID_RTS_THRESH0 0xFC97 2735d8e19b2SRui Paulo #define WI_RID_RTS_THRESH1 0xFC98 2745d8e19b2SRui Paulo #define WI_RID_RTS_THRESH2 0xFC99 2755d8e19b2SRui Paulo #define WI_RID_RTS_THRESH3 0xFC9A 2765d8e19b2SRui Paulo #define WI_RID_RTS_THRESH4 0xFC9B 2775d8e19b2SRui Paulo #define WI_RID_RTS_THRESH5 0xFC9C 2785d8e19b2SRui Paulo #define WI_RID_RTS_THRESH6 0xFC9D 2795d8e19b2SRui Paulo #define WI_RID_TX_RATE0 0xFC9E 2805d8e19b2SRui Paulo #define WI_RID_TX_RATE1 0xFC9F 2815d8e19b2SRui Paulo #define WI_RID_TX_RATE2 0xFCA0 2825d8e19b2SRui Paulo #define WI_RID_TX_RATE3 0xFCA1 2835d8e19b2SRui Paulo #define WI_RID_TX_RATE4 0xFCA2 2845d8e19b2SRui Paulo #define WI_RID_TX_RATE5 0xFCA3 2855d8e19b2SRui Paulo #define WI_RID_TX_RATE6 0xFCA4 2865d8e19b2SRui Paulo #define WI_RID_DEFLT_CRYPT_KEYS 0xFCB0 2875d8e19b2SRui Paulo #define WI_RID_TX_CRYPT_KEY 0xFCB1 2885d8e19b2SRui Paulo #define WI_RID_TICK_TIME 0xFCE0 2895d8e19b2SRui Paulo 2905d8e19b2SRui Paulo struct wi_key { 2915d8e19b2SRui Paulo u_int16_t wi_keylen; 2925d8e19b2SRui Paulo u_int8_t wi_keydat[14]; 2935d8e19b2SRui Paulo }; 2945d8e19b2SRui Paulo 2955d8e19b2SRui Paulo #define WI_NLTV_KEYS 4 2965d8e19b2SRui Paulo struct wi_ltv_keys { 2975d8e19b2SRui Paulo u_int16_t wi_len; 2985d8e19b2SRui Paulo u_int16_t wi_type; 2995d8e19b2SRui Paulo struct wi_key wi_keys[WI_NLTV_KEYS]; 3005d8e19b2SRui Paulo }; 3015d8e19b2SRui Paulo 3025d8e19b2SRui Paulo /* 3035d8e19b2SRui Paulo * NIC information 3045d8e19b2SRui Paulo */ 3055d8e19b2SRui Paulo #define WI_RID_DNLD_BUF 0xFD01 3065d8e19b2SRui Paulo #define WI_RID_MEMSZ 0xFD02 /* memory size info (XXX Lucent) */ 3075d8e19b2SRui Paulo /* Looks like on lucnet pri firm too */ 3085d8e19b2SRui Paulo #define WI_RID_PRI_IDENTITY 0xFD02 /* primary funcs firmware ident (PRISM2) */ 3095d8e19b2SRui Paulo #define WI_RID_PRI_SUP_RANGE 0xFD03 /* primary supplier compatibility */ 3105d8e19b2SRui Paulo #define WI_RID_CIF_ACT_RANGE 0xFD04 /* controller sup. compatibility */ 3115d8e19b2SRui Paulo #define WI_RID_SERIALNO 0xFD0A /* card serial number */ 3125d8e19b2SRui Paulo #define WI_RID_CARD_ID 0xFD0B /* card identification */ 3135d8e19b2SRui Paulo #define WI_RID_MFI_SUP_RANGE 0xFD0C /* modem supplier compatibility */ 3145d8e19b2SRui Paulo #define WI_RID_CFI_SUP_RANGE 0xFD0D /* controller sup. compatibility */ 3155d8e19b2SRui Paulo #define WI_RID_CHANNEL_LIST 0xFD10 /* allowd comm. frequencies. */ 3165d8e19b2SRui Paulo #define WI_RID_REG_DOMAINS 0xFD11 /* list of intendted regulatory doms */ 3175d8e19b2SRui Paulo #define WI_RID_TEMP_TYPE 0xFD12 /* hw temp range code */ 3185d8e19b2SRui Paulo #define WI_RID_CIS 0xFD13 /* PC card info struct */ 3195d8e19b2SRui Paulo #define WI_RID_STA_IDENTITY 0xFD20 /* station funcs firmware ident */ 3205d8e19b2SRui Paulo #define WI_RID_STA_SUP_RANGE 0xFD21 /* station supplier compat */ 3215d8e19b2SRui Paulo #define WI_RID_MFI_ACT_RANGE 0xFD22 3225d8e19b2SRui Paulo #define WI_RID_SYMBOL_IDENTITY 0xFD24 3235d8e19b2SRui Paulo #define WI_RID_CFI_ACT_RANGE 0xFD33 3245d8e19b2SRui Paulo #define WI_RID_COMMQUAL 0xFD43 3255d8e19b2SRui Paulo #define WI_RID_SCALETHRESH 0xFD46 3265d8e19b2SRui Paulo #define WI_RID_PCF 0xFD87 3275d8e19b2SRui Paulo 3285d8e19b2SRui Paulo /* 3295d8e19b2SRui Paulo * MAC information 3305d8e19b2SRui Paulo */ 3315d8e19b2SRui Paulo #define WI_RID_PORT_STAT 0xFD40 /* actual MAC port con control stat */ 3325d8e19b2SRui Paulo #define WI_RID_CURRENT_SSID 0xFD41 /* ID of actually connected SS */ 3335d8e19b2SRui Paulo #define WI_RID_CURRENT_BSSID 0xFD42 /* ID of actually connected BSS */ 3345d8e19b2SRui Paulo #define WI_RID_COMMS_QUALITY 0xFD43 /* quality of BSS connection */ 3355d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE 0xFD44 /* current TX rate */ 3365d8e19b2SRui Paulo #define WI_RID_CUR_BEACON_INT 0xFD45 /* current beacon interval */ 3375d8e19b2SRui Paulo #define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */ 3385d8e19b2SRui Paulo #define WI_RID_PROT_RESP_TIME 0xFD47 /* time to wait for resp to req msg */ 3395d8e19b2SRui Paulo #define WI_RID_SHORT_RTR_LIM 0xFD48 /* max tx attempts for short frames */ 3405d8e19b2SRui Paulo #define WI_RID_LONG_RTS_LIM 0xFD49 /* max tx attempts for long frames */ 3415d8e19b2SRui Paulo #define WI_RID_MAX_TX_LIFE 0xFD4A /* max tx frame handling duration */ 3425d8e19b2SRui Paulo #define WI_RID_MAX_RX_LIFE 0xFD4B /* max rx frame handling duration */ 3435d8e19b2SRui Paulo #define WI_RID_CF_POLL 0xFD4C /* contention free pollable ind */ 3445d8e19b2SRui Paulo #define WI_RID_AUTH_ALGS 0xFD4D /* auth algorithms available */ 3455d8e19b2SRui Paulo #define WI_RID_AUTH_TYPE 0xFD4E /* availanle auth types */ 3465d8e19b2SRui Paulo #define WI_RID_WEP_AVAIL 0xFD4F /* WEP privacy option available */ 3475d8e19b2SRui Paulo #define WI_RID_DBM_COMMS_QUAL 0xFD51 /* CommQuality normalized to dBm */ 3485d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE1 0xFD80 3495d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE2 0xFD81 3505d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE3 0xFD82 3515d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE4 0xFD83 3525d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE5 0xFD84 3535d8e19b2SRui Paulo #define WI_RID_CUR_TX_RATE6 0xFD85 3545d8e19b2SRui Paulo #define WI_RID_OWN_MAC 0xFD86 /* unique local MAC addr */ 3555d8e19b2SRui Paulo #define WI_RID_PCI_INFO 0xFD87 /* point coordination func cap */ 3565d8e19b2SRui Paulo 3575d8e19b2SRui Paulo /* 3585d8e19b2SRui Paulo * Scan Information 3595d8e19b2SRui Paulo */ 3605d8e19b2SRui Paulo #define WI_RID_BCAST_SCAN_REQ 0xFCAB /* Broadcast Scan request (Symbol) */ 3615d8e19b2SRui Paulo #define BSCAN_5SEC 0x01 3625d8e19b2SRui Paulo #define BSCAN_ONETIME 0x02 3635d8e19b2SRui Paulo #define BSCAN_PASSIVE 0x40 3645d8e19b2SRui Paulo #define BSCAN_BCAST 0x80 3655d8e19b2SRui Paulo #define WI_RID_SCAN_REQ 0xFCE1 /* Scan request (STA only) */ 3665d8e19b2SRui Paulo #define WI_RID_JOIN_REQ 0xFCE2 /* Join request (STA only) */ 3675d8e19b2SRui Paulo #define WI_RID_AUTH_STATION 0xFCE3 /* Authenticates Station (AP) */ 3685d8e19b2SRui Paulo #define WI_RID_CHANNEL_REQ 0xFCE4 /* Channel Information Request (AP) */ 3695d8e19b2SRui Paulo #define WI_RID_SCAN_RESULTS 0xFD88 /* Scan Results Table */ 3705d8e19b2SRui Paulo 3715d8e19b2SRui Paulo struct wi_apinfo { 3725d8e19b2SRui Paulo int scanreason; /* ScanReason */ 3735d8e19b2SRui Paulo char bssid[6]; /* BSSID (mac address) */ 3745d8e19b2SRui Paulo int channel; /* Channel */ 3755d8e19b2SRui Paulo int signal; /* Signal level */ 3765d8e19b2SRui Paulo int noise; /* Average Noise Level*/ 3775d8e19b2SRui Paulo int quality; /* Quality */ 3785d8e19b2SRui Paulo int namelen; /* Length of SSID string */ 3795d8e19b2SRui Paulo char name[32]; /* SSID string */ 3805d8e19b2SRui Paulo int capinfo; /* Capability info. */ 3815d8e19b2SRui Paulo int interval; /* BSS Beacon Interval */ 3825d8e19b2SRui Paulo int rate; /* Data Rate */ 3835d8e19b2SRui Paulo }; 3845d8e19b2SRui Paulo 3855d8e19b2SRui Paulo /* 3865d8e19b2SRui Paulo * Modem information 3875d8e19b2SRui Paulo */ 3885d8e19b2SRui Paulo #define WI_RID_PHY_TYPE 0xFDC0 /* phys layer type indication */ 3895d8e19b2SRui Paulo #define WI_RID_CURRENT_CHAN 0xFDC1 /* current frequency */ 3905d8e19b2SRui Paulo #define WI_RID_PWR_STATE 0xFDC2 /* pwr consumption status */ 3915d8e19b2SRui Paulo #define WI_RID_CCA_MODE 0xFDC3 /* clear chan assess mode indication */ 3925d8e19b2SRui Paulo #define WI_RID_CCA_TIME 0xFDC4 /* clear chan assess time */ 3935d8e19b2SRui Paulo #define WI_RID_MAC_PROC_DELAY 0xFDC5 /* MAC processing delay time */ 3945d8e19b2SRui Paulo #define WI_RID_DATA_RATES 0xFDC6 /* supported data rates */ 3955d8e19b2SRui Paulo 3965d8e19b2SRui Paulo /* 3975d8e19b2SRui Paulo * bsd-airtools v0.2 - source-mods v0.2 [common.h] 3985d8e19b2SRui Paulo * by h1kari - (c) Dachb0den Labs 2001 3995d8e19b2SRui Paulo */ 4005d8e19b2SRui Paulo 4015d8e19b2SRui Paulo /* 4025d8e19b2SRui Paulo * Copyright (c) 2001 Dachb0den Labs. 4035d8e19b2SRui Paulo * David Hulton <h1kari@dachb0den.com>. All rights reserved. 4045d8e19b2SRui Paulo * 4055d8e19b2SRui Paulo * Redistribution and use in source and binary forms, with or without 4065d8e19b2SRui Paulo * modification, are permitted provided that the following conditions 4075d8e19b2SRui Paulo * are met: 4085d8e19b2SRui Paulo * 1. Redistributions of source code must retain the above copyright 4095d8e19b2SRui Paulo * notice, this list of conditions and the following disclaimer. 4105d8e19b2SRui Paulo * 2. Redistributions in binary form must reproduce the above copyright 4115d8e19b2SRui Paulo * notice, this list of conditions and the following disclaimer in the 4125d8e19b2SRui Paulo * documentation and/or other materials provided with the distribution. 4135d8e19b2SRui Paulo * 3. All advertising materials mentioning features or use of this software 4145d8e19b2SRui Paulo * must display the following acknowledgement: 4155d8e19b2SRui Paulo * This product includes software developed by David Hulton. 4165d8e19b2SRui Paulo * 4. Neither the name of the author nor the names of any co-contributors 4175d8e19b2SRui Paulo * may be used to endorse or promote products derived from this software 4185d8e19b2SRui Paulo * without specific prior written permission. 4195d8e19b2SRui Paulo * 4205d8e19b2SRui Paulo * THIS SOFTWARE IS PROVIDED BY David Hulton AND CONTRIBUTORS ``AS IS'' AND 4215d8e19b2SRui Paulo * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 4225d8e19b2SRui Paulo * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 4235d8e19b2SRui Paulo * ARE DISCLAIMED. IN NO EVENT SHALL David Hulton OR THE VOICES IN HIS HEAD 4245d8e19b2SRui Paulo * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 4255d8e19b2SRui Paulo * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 4265d8e19b2SRui Paulo * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 4275d8e19b2SRui Paulo * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 4285d8e19b2SRui Paulo * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 4295d8e19b2SRui Paulo * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF 4305d8e19b2SRui Paulo * THE POSSIBILITY OF SUCH DAMAGE. 4315d8e19b2SRui Paulo */ 4325d8e19b2SRui Paulo 4335d8e19b2SRui Paulo /* 434cbe85c04SImre Vadász * standard hermes receive frame used by wavelan/prism2 cards 4355d8e19b2SRui Paulo */ 4365d8e19b2SRui Paulo struct wi_rx_frame { 4375d8e19b2SRui Paulo /* 4385d8e19b2SRui Paulo * hermes prefix header. supplies information on the current status of 4395d8e19b2SRui Paulo * the network and various other statistics gathered from the 4405d8e19b2SRui Paulo * management/control frames as used internally. 4415d8e19b2SRui Paulo */ 4425d8e19b2SRui Paulo u_int16_t wi_status; 4435d8e19b2SRui Paulo u_int16_t wi_ts0; 4445d8e19b2SRui Paulo u_int16_t wi_ts1; 4455d8e19b2SRui Paulo u_int8_t wi_silence; 4465d8e19b2SRui Paulo u_int8_t wi_signal; 4475d8e19b2SRui Paulo u_int8_t wi_rate; 4485d8e19b2SRui Paulo u_int8_t wi_rx_flow; 4495d8e19b2SRui Paulo u_int16_t wi_rsvd0; 4505d8e19b2SRui Paulo u_int16_t wi_rsvd1; 4515d8e19b2SRui Paulo /* 4525d8e19b2SRui Paulo * standard 80211 frame header. all packets have to use this header as 4535d8e19b2SRui Paulo * per the AN9900 from intersil, even management/control. for 4545d8e19b2SRui Paulo * management packets, they just threw the header into the data field, 4555d8e19b2SRui Paulo * but for control packets the headers are lost in translation and 4565d8e19b2SRui Paulo * therefore not all control packet info can be displayed. 4575d8e19b2SRui Paulo */ 4585d8e19b2SRui Paulo u_int16_t wi_frame_ctl; 4595d8e19b2SRui Paulo u_int16_t wi_id; 4605d8e19b2SRui Paulo u_int8_t wi_addr1[6]; 4615d8e19b2SRui Paulo u_int8_t wi_addr2[6]; 4625d8e19b2SRui Paulo u_int8_t wi_addr3[6]; 4635d8e19b2SRui Paulo u_int16_t wi_seq_ctl; 4645d8e19b2SRui Paulo u_int8_t wi_addr4[6]; 4655d8e19b2SRui Paulo u_int16_t wi_dat_len; 4665d8e19b2SRui Paulo /* 4675d8e19b2SRui Paulo * another wierdity with the drivers. they append a 802.3 header which 4685d8e19b2SRui Paulo * is somewhat redundant, since all the same data is provided in the 4695d8e19b2SRui Paulo * 802.11 header. 4705d8e19b2SRui Paulo */ 4715d8e19b2SRui Paulo u_int8_t wi_dst_addr[6]; 4725d8e19b2SRui Paulo u_int8_t wi_src_addr[6]; 4735d8e19b2SRui Paulo u_int16_t wi_len; 4745d8e19b2SRui Paulo }; 4755d8e19b2SRui Paulo #define WI_DATA_HDRLEN 0x3C 4765d8e19b2SRui Paulo #define WI_MGMT_HDRLEN 0x3C 4775d8e19b2SRui Paulo #define WI_CTL_HDRLEN 0x3C 4785d8e19b2SRui Paulo 4795d8e19b2SRui Paulo 4805d8e19b2SRui Paulo /* 4815d8e19b2SRui Paulo * all data packets have a snap (sub-network access protocol) header that 4825d8e19b2SRui Paulo * isn't entirely definied, but added for ethernet compatibility. 4835d8e19b2SRui Paulo */ 4845d8e19b2SRui Paulo struct wi_snap_frame { 4855d8e19b2SRui Paulo u_int16_t wi_dat[3]; 4865d8e19b2SRui Paulo u_int16_t wi_type; 4875d8e19b2SRui Paulo }; 4885d8e19b2SRui Paulo 4895d8e19b2SRui Paulo 4905d8e19b2SRui Paulo /* 4915d8e19b2SRui Paulo * management frame headers 4925d8e19b2SRui Paulo * note: all management frames consist of a static header and variable length 4935d8e19b2SRui Paulo * fields. 4945d8e19b2SRui Paulo */ 4955d8e19b2SRui Paulo 4965d8e19b2SRui Paulo /* 4975d8e19b2SRui Paulo * variable length field structure 4985d8e19b2SRui Paulo */ 4995d8e19b2SRui Paulo struct wi_mgmt_var_hdr { 5005d8e19b2SRui Paulo u_int8_t wi_code; 5015d8e19b2SRui Paulo u_int8_t wi_len; 5025d8e19b2SRui Paulo u_int8_t wi_data[256]; 5035d8e19b2SRui Paulo }; 5045d8e19b2SRui Paulo 5055d8e19b2SRui Paulo /* 5065d8e19b2SRui Paulo * management beacon frame prefix 5075d8e19b2SRui Paulo */ 5085d8e19b2SRui Paulo struct wi_mgmt_beacon_hdr { 5095d8e19b2SRui Paulo u_int32_t wi_ts0; 5105d8e19b2SRui Paulo u_int32_t wi_ts1; 5115d8e19b2SRui Paulo u_int16_t wi_interval; 5125d8e19b2SRui Paulo u_int16_t wi_capinfo; 5135d8e19b2SRui Paulo }; 5145d8e19b2SRui Paulo 5155d8e19b2SRui Paulo /* 5165d8e19b2SRui Paulo * ibss announcement traffic indication message (atim) frame 5175d8e19b2SRui Paulo * note: no parameters 5185d8e19b2SRui Paulo */ 5195d8e19b2SRui Paulo 5205d8e19b2SRui Paulo /* 5215d8e19b2SRui Paulo * management disassociation frame 5225d8e19b2SRui Paulo */ 5235d8e19b2SRui Paulo struct wi_mgmt_disas_hdr { 5245d8e19b2SRui Paulo u_int16_t wi_reason; 5255d8e19b2SRui Paulo }; 5265d8e19b2SRui Paulo 5275d8e19b2SRui Paulo /* 5285d8e19b2SRui Paulo * management association request frame prefix 5295d8e19b2SRui Paulo */ 5305d8e19b2SRui Paulo struct wi_mgmt_asreq_hdr { 5315d8e19b2SRui Paulo u_int16_t wi_capinfo; 5325d8e19b2SRui Paulo u_int16_t wi_interval; 5335d8e19b2SRui Paulo }; 5345d8e19b2SRui Paulo 5355d8e19b2SRui Paulo /* 5365d8e19b2SRui Paulo * management association response frame prefix 5375d8e19b2SRui Paulo */ 5385d8e19b2SRui Paulo struct wi_mgmt_asresp_hdr { 5395d8e19b2SRui Paulo u_int16_t wi_capinfo; 5405d8e19b2SRui Paulo u_int16_t wi_status; 5415d8e19b2SRui Paulo u_int16_t wi_aid; 5425d8e19b2SRui Paulo }; 5435d8e19b2SRui Paulo 5445d8e19b2SRui Paulo /* 5455d8e19b2SRui Paulo * management reassociation request frame prefix 5465d8e19b2SRui Paulo */ 5475d8e19b2SRui Paulo struct wi_mgmt_reasreq_hdr { 5485d8e19b2SRui Paulo u_int16_t wi_capinfo; 5495d8e19b2SRui Paulo u_int16_t wi_interval; 5505d8e19b2SRui Paulo u_int8_t wi_currap[6]; 5515d8e19b2SRui Paulo }; 5525d8e19b2SRui Paulo 5535d8e19b2SRui Paulo /* 5545d8e19b2SRui Paulo * management reassociation response frame prefix 5555d8e19b2SRui Paulo */ 5565d8e19b2SRui Paulo struct wi_mgmt_reasresp_hdr { 5575d8e19b2SRui Paulo u_int16_t wi_capinfo; 5585d8e19b2SRui Paulo u_int16_t wi_status; 5595d8e19b2SRui Paulo u_int16_t wi_aid; 5605d8e19b2SRui Paulo }; 5615d8e19b2SRui Paulo 5625d8e19b2SRui Paulo /* 5635d8e19b2SRui Paulo * management probe request frame prefix 5645d8e19b2SRui Paulo * note: no static parameters, only variable length 5655d8e19b2SRui Paulo */ 5665d8e19b2SRui Paulo 5675d8e19b2SRui Paulo /* 5685d8e19b2SRui Paulo * management probe response frame prefix 5695d8e19b2SRui Paulo */ 5705d8e19b2SRui Paulo struct wi_mgmt_proberesp_hdr { 5715d8e19b2SRui Paulo u_int32_t wi_ts0; 5725d8e19b2SRui Paulo u_int32_t wi_ts1; 5735d8e19b2SRui Paulo u_int16_t wi_interval; 5745d8e19b2SRui Paulo u_int16_t wi_capinfo; 5755d8e19b2SRui Paulo }; 5765d8e19b2SRui Paulo 5775d8e19b2SRui Paulo /* 5785d8e19b2SRui Paulo * management authentication frame prefix 5795d8e19b2SRui Paulo */ 5805d8e19b2SRui Paulo struct wi_mgmt_auth_hdr { 5815d8e19b2SRui Paulo u_int16_t wi_algo; 5825d8e19b2SRui Paulo u_int16_t wi_seq; 5835d8e19b2SRui Paulo u_int16_t wi_status; 5845d8e19b2SRui Paulo }; 5855d8e19b2SRui Paulo 5865d8e19b2SRui Paulo /* 5875d8e19b2SRui Paulo * management deauthentication frame 5885d8e19b2SRui Paulo */ 5895d8e19b2SRui Paulo struct wi_mgmt_deauth_hdr { 5905d8e19b2SRui Paulo u_int16_t wi_reason; 5915d8e19b2SRui Paulo }; 5925d8e19b2SRui Paulo 5935d8e19b2SRui Paulo 5945d8e19b2SRui Paulo /* 5955d8e19b2SRui Paulo * rid configuration register definitions 5965d8e19b2SRui Paulo */ 5975d8e19b2SRui Paulo #define WI_RID_SCAN_REQ 0xFCE1 /* scan request information */ 5985d8e19b2SRui Paulo #define WI_RID_SCAN_RES 0xFD88 /* scan result information */ 5995d8e19b2SRui Paulo 6005d8e19b2SRui Paulo #define WI_RID_PROCFRAME 0x3137 /* Return full frame information */ 6015d8e19b2SRui Paulo #define WI_RID_PRISM2 0x3138 /* tell if we're a prism2 card or not */ 6025d8e19b2SRui Paulo 6035d8e19b2SRui Paulo 6045d8e19b2SRui Paulo /* 6055d8e19b2SRui Paulo * 802.11 definitions 6065d8e19b2SRui Paulo */ 6075d8e19b2SRui Paulo #define WI_STAT_BADCRC 0x0001 6085d8e19b2SRui Paulo #define WI_STAT_UNDECRYPTABLE 0x0002 6095d8e19b2SRui Paulo #define WI_STAT_ERRSTAT 0x0003 6105d8e19b2SRui Paulo #define WI_STAT_MAC_PORT 0x0700 6115d8e19b2SRui Paulo #define WI_STAT_1042 0x2000 6125d8e19b2SRui Paulo #define WI_STAT_TUNNEL 0x4000 6135d8e19b2SRui Paulo #define WI_STAT_WMP_MSG 0x6000 6145d8e19b2SRui Paulo #define WI_RXSTAT_MSG_TYPE 0xE000 6155d8e19b2SRui Paulo 6165d8e19b2SRui Paulo #define WI_FCTL_OPT_MASK 0xFF00 6175d8e19b2SRui Paulo #define WI_AID_SET 0xC000 6185d8e19b2SRui Paulo #define WI_AID_MASK 0x3FFF 6195d8e19b2SRui Paulo #define WI_SCTL_FRAGNUM_MASK 0x000F 6205d8e19b2SRui Paulo #define WI_SCTL_SEQNUM_MASK 0xFFF0 6215d8e19b2SRui Paulo 6225d8e19b2SRui Paulo #define WI_STAT_UNSPEC_FAIL 1 6235d8e19b2SRui Paulo #define WI_STAT_CAPINFO_FAIL 10 6245d8e19b2SRui Paulo #define WI_STAT_REAS_DENY 11 6255d8e19b2SRui Paulo #define WI_STAT_ASSOC_DENY 12 6265d8e19b2SRui Paulo #define WI_STAT_ALGO_FAIL 13 6275d8e19b2SRui Paulo #define WI_STAT_SEQ_FAIL 14 6285d8e19b2SRui Paulo #define WI_STAT_CHAL_FAIL 15 6295d8e19b2SRui Paulo #define WI_STAT_TOUT_FAIL 16 6305d8e19b2SRui Paulo #define WI_STAT_OVERL_DENY 17 6315d8e19b2SRui Paulo #define WI_STAT_RATE_DENY 18 6325d8e19b2SRui Paulo 6335d8e19b2SRui Paulo #define WI_FTYPE_MGMT 0x0000 6345d8e19b2SRui Paulo #define WI_FTYPE_CTL 0x0004 6355d8e19b2SRui Paulo #define WI_FTYPE_DATA 0x0008 6365d8e19b2SRui Paulo 6375d8e19b2SRui Paulo #define WI_FCTL_VERS 0x0002 6385d8e19b2SRui Paulo #define WI_FCTL_FTYPE 0x000C 6395d8e19b2SRui Paulo #define WI_FCTL_STYPE 0x00F0 6405d8e19b2SRui Paulo #define WI_FCTL_TODS 0x0100 6415d8e19b2SRui Paulo #define WI_FCTL_FROMDS 0x0200 6425d8e19b2SRui Paulo #define WI_FCTL_MOREFRAGS 0x0400 6435d8e19b2SRui Paulo #define WI_FCTL_RETRY 0x0800 6445d8e19b2SRui Paulo #define WI_FCTL_PM 0x1000 6455d8e19b2SRui Paulo #define WI_FCTL_MOREDATA 0x2000 6465d8e19b2SRui Paulo #define WI_FCTL_WEP 0x4000 6475d8e19b2SRui Paulo #define WI_FCTL_ORDER 0x8000 6485d8e19b2SRui Paulo 6495d8e19b2SRui Paulo #define WI_FCS_LEN 0x4 /* checksum length */ 6505d8e19b2SRui Paulo 6515d8e19b2SRui Paulo 6525d8e19b2SRui Paulo /* 6535d8e19b2SRui Paulo * management definitions 6545d8e19b2SRui Paulo */ 6555d8e19b2SRui Paulo #define WI_STYPE_MGMT_ASREQ 0x0000 6565d8e19b2SRui Paulo #define WI_STYPE_MGMT_ASRESP 0x0010 6575d8e19b2SRui Paulo #define WI_STYPE_MGMT_REASREQ 0x0020 6585d8e19b2SRui Paulo #define WI_STYPE_MGMT_REASRESP 0x0030 6595d8e19b2SRui Paulo #define WI_STYPE_MGMT_PROBEREQ 0x0040 6605d8e19b2SRui Paulo #define WI_STYPE_MGMT_PROBERESP 0x0050 6615d8e19b2SRui Paulo #define WI_STYPE_MGMT_BEACON 0x0080 6625d8e19b2SRui Paulo #define WI_STYPE_MGMT_ATIM 0x0090 6635d8e19b2SRui Paulo #define WI_STYPE_MGMT_DISAS 0x00A0 6645d8e19b2SRui Paulo #define WI_STYPE_MGMT_AUTH 0x00B0 6655d8e19b2SRui Paulo #define WI_STYPE_MGMT_DEAUTH 0x00C0 6665d8e19b2SRui Paulo 6675d8e19b2SRui Paulo #define WI_CAPINFO_ESS 0x01 6685d8e19b2SRui Paulo #define WI_CAPINFO_IBSS 0x02 6695d8e19b2SRui Paulo #define WI_CAPINFO_CFPOLL 0x04 6705d8e19b2SRui Paulo #define WI_CAPINFO_CFPOLLREQ 0x08 6715d8e19b2SRui Paulo #define WI_CAPINFO_PRIV 0x10 6725d8e19b2SRui Paulo 6735d8e19b2SRui Paulo #define WI_REASON_UNSPEC 1 6745d8e19b2SRui Paulo #define WI_REASON_AUTH_INVALID 2 6755d8e19b2SRui Paulo #define WI_REASON_DEAUTH_LEAVE 3 6765d8e19b2SRui Paulo #define WI_REASON_DISAS_INACT 4 6775d8e19b2SRui Paulo #define WI_REASON_DISAS_OVERL 5 6785d8e19b2SRui Paulo #define WI_REASON_CLASS2 6 6795d8e19b2SRui Paulo #define WI_REASON_CLASS3 7 6805d8e19b2SRui Paulo #define WI_REASON_DISAS_LEAVE 8 6815d8e19b2SRui Paulo #define WI_REASON_NOAUTH 9 6825d8e19b2SRui Paulo 6835d8e19b2SRui Paulo #define WI_VAR_SSID 0 6845d8e19b2SRui Paulo #define WI_VAR_SRATES 1 6855d8e19b2SRui Paulo #define WI_VAR_FH 2 6865d8e19b2SRui Paulo #define WI_VAR_DS 3 6875d8e19b2SRui Paulo #define WI_VAR_CF 4 6885d8e19b2SRui Paulo #define WI_VAR_TIM 5 6895d8e19b2SRui Paulo #define WI_VAR_IBSS 6 6905d8e19b2SRui Paulo #define WI_VAR_CHAL 16 6915d8e19b2SRui Paulo 6925d8e19b2SRui Paulo #define WI_VAR_SRATES_MASK 0x7F 6935d8e19b2SRui Paulo 6945d8e19b2SRui Paulo 6955d8e19b2SRui Paulo /* 6965d8e19b2SRui Paulo * control definitions 6975d8e19b2SRui Paulo */ 6985d8e19b2SRui Paulo #define WI_STYPE_CTL_PSPOLL 0x00A0 6995d8e19b2SRui Paulo #define WI_STYPE_CTL_RTS 0x00B0 7005d8e19b2SRui Paulo #define WI_STYPE_CTL_CTS 0x00C0 7015d8e19b2SRui Paulo #define WI_STYPE_CTL_ACK 0x00D0 7025d8e19b2SRui Paulo #define WI_STYPE_CTL_CFEND 0x00E0 7035d8e19b2SRui Paulo #define WI_STYPE_CTL_CFENDCFACK 0x00F0 7045d8e19b2SRui Paulo 7055d8e19b2SRui Paulo 7065d8e19b2SRui Paulo /* 7075d8e19b2SRui Paulo * ap scanning structures 7085d8e19b2SRui Paulo */ 7095d8e19b2SRui Paulo struct wi_scan_res { 7105d8e19b2SRui Paulo u_int16_t wi_chan; 7115d8e19b2SRui Paulo u_int16_t wi_noise; 7125d8e19b2SRui Paulo u_int16_t wi_signal; 7135d8e19b2SRui Paulo u_int8_t wi_bssid[6]; 7145d8e19b2SRui Paulo u_int16_t wi_interval; 7155d8e19b2SRui Paulo u_int16_t wi_capinfo; 7165d8e19b2SRui Paulo u_int16_t wi_ssid_len; 7175d8e19b2SRui Paulo u_int8_t wi_ssid[32]; 7185d8e19b2SRui Paulo u_int8_t wi_srates[10]; 7195d8e19b2SRui Paulo u_int8_t wi_rate; 7205d8e19b2SRui Paulo u_int8_t wi_rsvd; 7215d8e19b2SRui Paulo }; 7225d8e19b2SRui Paulo #define WI_WAVELAN_RES_SIZE 50 7235d8e19b2SRui Paulo 7245d8e19b2SRui Paulo struct wi_scan_p2_hdr { 7255d8e19b2SRui Paulo u_int16_t wi_rsvd; 7265d8e19b2SRui Paulo u_int16_t wi_reason; 7275d8e19b2SRui Paulo }; 7285d8e19b2SRui Paulo #define WI_PRISM2_RES_SIZE 62 7295d8e19b2SRui Paulo 7305d8e19b2SRui Paulo 731*dc086719SSascha Wildner #if 0 /* unimplemented */ 7325d8e19b2SRui Paulo /* 7335d8e19b2SRui Paulo * prism2 debug mode definitions 7345d8e19b2SRui Paulo */ 7355d8e19b2SRui Paulo #define SIOCSPRISM2DEBUG _IOW('i', 137, struct ifreq) 7365d8e19b2SRui Paulo #define SIOCGPRISM2DEBUG _IOWR('i', 138, struct ifreq) 737*dc086719SSascha Wildner #endif 7385d8e19b2SRui Paulo 7395d8e19b2SRui Paulo #define WI_DEBUG_RESET 0x00 7405d8e19b2SRui Paulo #define WI_DEBUG_INIT 0x01 7415d8e19b2SRui Paulo #define WI_DEBUG_SLEEP 0x02 7425d8e19b2SRui Paulo #define WI_DEBUG_WAKE 0x03 7435d8e19b2SRui Paulo #define WI_DEBUG_CHAN 0x08 7445d8e19b2SRui Paulo #define WI_DEBUG_DELAYSUPP 0x09 7455d8e19b2SRui Paulo #define WI_DEBUG_TXSUPP 0x0A 7465d8e19b2SRui Paulo #define WI_DEBUG_MONITOR 0x0B 7475d8e19b2SRui Paulo #define WI_DEBUG_LEDTEST 0x0C 7485d8e19b2SRui Paulo #define WI_DEBUG_CONTTX 0x0E 7495d8e19b2SRui Paulo #define WI_DEBUG_STOPTEST 0x0F 7505d8e19b2SRui Paulo #define WI_DEBUG_CONTRX 0x10 7515d8e19b2SRui Paulo #define WI_DEBUG_SIGSTATE 0x11 7525d8e19b2SRui Paulo #define WI_DEBUG_CALENABLE 0x13 7535d8e19b2SRui Paulo #define WI_DEBUG_CONFBITS 0x15 7545d8e19b2SRui Paulo 7555d8e19b2SRui Paulo #endif 756