xref: /dflybsd-src/sys/dev/netif/wi/if_wavelan_ieee.h (revision dc086719276a707ab86d3f2822c77531c868eb71)
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