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