| 1 | /*	$NetBSD: ieee80211.h,v 1.2 2014/11/19 19:33:30 christos Exp $	*/ | 
| 2 |  | 
| 3 | /*- | 
| 4 |  * Copyright (c) 2001 Atsushi Onoe | 
| 5 |  * Copyright (c) 2002-2005 Sam Leffler, Errno Consulting | 
| 6 |  * All rights reserved. | 
| 7 |  * | 
| 8 |  * Redistribution and use in source and binary forms, with or without | 
| 9 |  * modification, are permitted provided that the following conditions | 
| 10 |  * are met: | 
| 11 |  * 1. Redistributions of source code must retain the above copyright | 
| 12 |  *    notice, this list of conditions and the following disclaimer. | 
| 13 |  * 2. Redistributions in binary form must reproduce the above copyright | 
| 14 |  *    notice, this list of conditions and the following disclaimer in the | 
| 15 |  *    documentation and/or other materials provided with the distribution. | 
| 16 |  * 3. The name of the author may not be used to endorse or promote products | 
| 17 |  *    derived from this software without specific prior written permission. | 
| 18 |  * | 
| 19 |  * Alternatively, this software may be distributed under the terms of the | 
| 20 |  * GNU General Public License ("GPL") version 2 as published by the Free | 
| 21 |  * Software Foundation. | 
| 22 |  * | 
| 23 |  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR | 
| 24 |  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES | 
| 25 |  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. | 
| 26 |  * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, | 
| 27 |  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT | 
| 28 |  * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | 
| 29 |  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY | 
| 30 |  * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT | 
| 31 |  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF | 
| 32 |  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
| 33 |  * | 
| 34 |  * $FreeBSD: src/sys/net80211/ieee80211.h,v 1.10 2005/07/22 16:55:27 sam Exp $ | 
| 35 |  */ | 
| 36 | #ifndef _NET80211_IEEE80211_H_ | 
| 37 | #define _NET80211_IEEE80211_H_ | 
| 38 |  | 
| 39 | /* | 
| 40 |  * 802.11 protocol definitions. | 
| 41 |  */ | 
| 42 |  | 
| 43 | #define	IEEE80211_FC0_VERSION_MASK		0x03 | 
| 44 | #define	IEEE80211_FC0_VERSION_SHIFT		0 | 
| 45 | #define	IEEE80211_FC0_VERSION_0			0x00 | 
| 46 | #define	IEEE80211_FC0_TYPE_MASK			0x0c | 
| 47 | #define	IEEE80211_FC0_TYPE_SHIFT		2 | 
| 48 | #define	IEEE80211_FC0_TYPE_MGT			0x00 | 
| 49 | #define	IEEE80211_FC0_TYPE_CTL			0x04 | 
| 50 | #define	IEEE80211_FC0_TYPE_DATA			0x08 | 
| 51 |  | 
| 52 | #define	IEEE80211_FC0_SUBTYPE_MASK		0xf0 | 
| 53 | #define	IEEE80211_FC0_SUBTYPE_SHIFT		4 | 
| 54 | /* for TYPE_MGT */ | 
| 55 | #define	IEEE80211_FC0_SUBTYPE_ASSOC_REQ		0x00 | 
| 56 | #define	IEEE80211_FC0_SUBTYPE_ASSOC_RESP	0x10 | 
| 57 | #define	IEEE80211_FC0_SUBTYPE_REASSOC_REQ	0x20 | 
| 58 | #define	IEEE80211_FC0_SUBTYPE_REASSOC_RESP	0x30 | 
| 59 | #define	IEEE80211_FC0_SUBTYPE_PROBE_REQ		0x40 | 
| 60 | #define	IEEE80211_FC0_SUBTYPE_PROBE_RESP	0x50 | 
| 61 | #define	IEEE80211_FC0_SUBTYPE_BEACON		0x80 | 
| 62 | #define	IEEE80211_FC0_SUBTYPE_ATIM		0x90 | 
| 63 | #define	IEEE80211_FC0_SUBTYPE_DISASSOC		0xa0 | 
| 64 | #define	IEEE80211_FC0_SUBTYPE_AUTH		0xb0 | 
| 65 | #define	IEEE80211_FC0_SUBTYPE_DEAUTH		0xc0 | 
| 66 | /* for TYPE_CTL */ | 
| 67 | #define	IEEE80211_FC0_SUBTYPE_PS_POLL		0xa0 | 
| 68 | #define	IEEE80211_FC0_SUBTYPE_RTS		0xb0 | 
| 69 | #define	IEEE80211_FC0_SUBTYPE_CTS		0xc0 | 
| 70 | #define	IEEE80211_FC0_SUBTYPE_ACK		0xd0 | 
| 71 | #define	IEEE80211_FC0_SUBTYPE_CF_END		0xe0 | 
| 72 | #define	IEEE80211_FC0_SUBTYPE_CF_END_ACK	0xf0 | 
| 73 | /* for TYPE_DATA (bit combination) */ | 
| 74 | #define	IEEE80211_FC0_SUBTYPE_DATA		0x00 | 
| 75 | #define	IEEE80211_FC0_SUBTYPE_CF_ACK		0x10 | 
| 76 | #define	IEEE80211_FC0_SUBTYPE_CF_POLL		0x20 | 
| 77 | #define	IEEE80211_FC0_SUBTYPE_CF_ACPL		0x30 | 
| 78 | #define	IEEE80211_FC0_SUBTYPE_NODATA		0x40 | 
| 79 | #define	IEEE80211_FC0_SUBTYPE_NODATA_CF_ACK	0x50 | 
| 80 | #define	IEEE80211_FC0_SUBTYPE_NODATA_CF_POLL	0x60 | 
| 81 | #define	IEEE80211_FC0_SUBTYPE_NODATA_CF_ACPL	0x70 | 
| 82 | #define	IEEE80211_FC0_SUBTYPE_QOS		0x80 | 
| 83 | #define	IEEE80211_FC0_SUBTYPE_QOS_NULL		0xc0 | 
| 84 |  | 
| 85 | #define	IEEE80211_FC1_DIR_MASK			0x03 | 
| 86 | #define	IEEE80211_FC1_DIR_NODS			0x00	/* STA->STA */ | 
| 87 | #define	IEEE80211_FC1_DIR_TODS			0x01	/* STA->AP  */ | 
| 88 | #define	IEEE80211_FC1_DIR_FROMDS		0x02	/* AP ->STA */ | 
| 89 | #define	IEEE80211_FC1_DIR_DSTODS		0x03	/* AP ->AP  */ | 
| 90 |  | 
| 91 | #define	IEEE80211_FC1_MORE_FRAG			0x04 | 
| 92 | #define	IEEE80211_FC1_RETRY			0x08 | 
| 93 | #define	IEEE80211_FC1_PWR_MGT			0x10 | 
| 94 | #define	IEEE80211_FC1_MORE_DATA			0x20 | 
| 95 | #define	IEEE80211_FC1_WEP			0x40 | 
| 96 | #define	IEEE80211_FC1_ORDER			0x80 | 
| 97 |  | 
| 98 | #define	IEEE80211_SEQ_FRAG_MASK			0x000f | 
| 99 | #define	IEEE80211_SEQ_FRAG_SHIFT		0 | 
| 100 | #define	IEEE80211_SEQ_SEQ_MASK			0xfff0 | 
| 101 | #define	IEEE80211_SEQ_SEQ_SHIFT			4 | 
| 102 |  | 
| 103 | #define	IEEE80211_NWID_LEN			32 | 
| 104 |  | 
| 105 | #define	IEEE80211_QOS_TXOP			0x00ff | 
| 106 | /* bit 8 is reserved */ | 
| 107 | #define	IEEE80211_QOS_ACKPOLICY			0x60 | 
| 108 | #define	IEEE80211_QOS_ACKPOLICY_S		5 | 
| 109 | #define	IEEE80211_QOS_ESOP			0x10 | 
| 110 | #define	IEEE80211_QOS_ESOP_S			4 | 
| 111 | #define	IEEE80211_QOS_TID			0x0f | 
| 112 |  | 
| 113 | #define IEEE80211_MGT_SUBTYPE_NAMES {			\ | 
| 114 | 	"assoc-req",		"assoc-resp",		\ | 
| 115 | 	"reassoc-req",		"reassoc-resp",		\ | 
| 116 | 	"probe-req",		"probe-resp",		\ | 
| 117 | 	"reserved#6",		"reserved#7",		\ | 
| 118 | 	"beacon",		"atim",			\ | 
| 119 | 	"disassoc",		"auth",			\ | 
| 120 | 	"deauth",		"reserved#13",		\ | 
| 121 | 	"reserved#14",		"reserved#15"		\ | 
| 122 | } | 
| 123 |  | 
| 124 | #define IEEE80211_CTL_SUBTYPE_NAMES {			\ | 
| 125 | 	"reserved#0",		"reserved#1",		\ | 
| 126 | 	"reserved#2",		"reserved#3",		\ | 
| 127 | 	"reserved#3",		"reserved#5",		\ | 
| 128 | 	"reserved#6",		"reserved#7",		\ | 
| 129 | 	"reserved#8",		"reserved#9",		\ | 
| 130 | 	"ps-poll",		"rts",			\ | 
| 131 | 	"cts",			"ack",			\ | 
| 132 | 	"cf-end",		"cf-end-ack"		\ | 
| 133 | } | 
| 134 |  | 
| 135 | #define IEEE80211_DATA_SUBTYPE_NAMES {			\ | 
| 136 | 	"data",			"data-cf-ack",		\ | 
| 137 | 	"data-cf-poll",		"data-cf-ack-poll",	\ | 
| 138 | 	"null",			"cf-ack",		\ | 
| 139 | 	"cf-poll",		"cf-ack-poll",		\ | 
| 140 | 	"qos-data",		"qos-data-cf-ack",	\ | 
| 141 | 	"qos-data-cf-poll",	"qos-data-cf-ack-poll",	\ | 
| 142 | 	"qos",			"reserved#13",		\ | 
| 143 | 	"qos-cf-poll",		"qos-cf-ack-poll"	\ | 
| 144 | } | 
| 145 |  | 
| 146 | #define IEEE80211_TYPE_NAMES	{ "mgt", "ctl", "data", "reserved#4" } | 
| 147 |  | 
| 148 | #endif /* _NET80211_IEEE80211_H_ */ | 
| 149 |  |