summaryrefslogtreecommitdiff
path: root/drivers/staging/brcm80211/include/proto/802.11.h
blob: 374125d770b93854b9743db361701b96205bf295 (plain)
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
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
/*
 * Copyright (c) 2010 Broadcom Corporation
 *
 * Permission to use, copy, modify, and/or distribute this software for any
 * purpose with or without fee is hereby granted, provided that the above
 * copyright notice and this permission notice appear in all copies.
 *
 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
 * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
 * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 */

#ifndef _802_11_H_
#define _802_11_H_

#include <linux/if_ether.h>

#define DOT11_A3_HDR_LEN		24
#define DOT11_A4_HDR_LEN		30
#define DOT11_MAC_HDR_LEN		DOT11_A3_HDR_LEN
#define DOT11_ICV_AES_LEN		8
#define DOT11_QOS_LEN			2

#define DOT11_IV_MAX_LEN		8

#define DOT11_DEFAULT_RTS_LEN		2347

#define DOT11_MIN_FRAG_LEN		256
#define DOT11_MAX_FRAG_LEN		2346
#define DOT11_DEFAULT_FRAG_LEN		2346

#define DOT11_MIN_BEACON_PERIOD		1
#define DOT11_MAX_BEACON_PERIOD		0xFFFF

#define DOT11_MIN_DTIM_PERIOD		1
#define DOT11_MAX_DTIM_PERIOD		0xFF

#define DOT11_OUI_LEN			3

#define	DOT11_RTS_LEN		16
#define	DOT11_CTS_LEN		10
#define	DOT11_ACK_LEN		10

#define DOT11_BA_BITMAP_LEN		128
#define DOT11_BA_LEN		4

#define WME_OUI			"\x00\x50\xf2"
#define WME_VER			1
#define WME_TYPE		2
#define WME_SUBTYPE_PARAM_IE	1

#define AC_BE			0
#define AC_BK			1
#define AC_VI			2
#define AC_VO			3
#define AC_COUNT		4

typedef u8 ac_bitmap_t;

#define AC_BITMAP_ALL		0xf
#define AC_BITMAP_TST(ab, ac)	(((ab) & (1 << (ac))) != 0)

struct edcf_acparam {
	u8 ACI;
	u8 ECW;
	u16 TXOP;
} __attribute__((packed));
typedef struct edcf_acparam edcf_acparam_t;

struct wme_param_ie {
	u8 oui[3];
	u8 type;
	u8 subtype;
	u8 version;
	u8 qosinfo;
	u8 rsvd;
	edcf_acparam_t acparam[AC_COUNT];
} __attribute__((packed));
typedef struct wme_param_ie wme_param_ie_t;
#define WME_PARAM_IE_LEN            24

#define EDCF_AIFSN_MIN               1
#define EDCF_AIFSN_MAX               15
#define EDCF_AIFSN_MASK              0x0f
#define EDCF_ACM_MASK                0x10
#define EDCF_ACI_MASK                0x60
#define EDCF_ACI_SHIFT               5

#define EDCF_ECW2CW(exp)             ((1 << (exp)) - 1)
#define EDCF_ECWMIN_MASK             0x0f
#define EDCF_ECWMAX_MASK             0xf0
#define EDCF_ECWMAX_SHIFT            4

#define EDCF_TXOP2USEC(txop)         ((txop) << 5)

#define EDCF_AC_BE_ACI_STA           0x03
#define EDCF_AC_BE_ECW_STA           0xA4
#define EDCF_AC_BE_TXOP_STA          0x0000
#define EDCF_AC_BK_ACI_STA           0x27
#define EDCF_AC_BK_ECW_STA           0xA4
#define EDCF_AC_BK_TXOP_STA          0x0000
#define EDCF_AC_VI_ACI_STA           0x42
#define EDCF_AC_VI_ECW_STA           0x43
#define EDCF_AC_VI_TXOP_STA          0x005e
#define EDCF_AC_VO_ACI_STA           0x62
#define EDCF_AC_VO_ECW_STA           0x32
#define EDCF_AC_VO_TXOP_STA          0x002f

#define EDCF_AC_VO_TXOP_AP           0x002f

#define SEQNUM_SHIFT		4
#define SEQNUM_MAX		0x1000
#define FRAGNUM_MASK		0xF

#define DOT11_MNG_RSN_ID			48
#define DOT11_MNG_WPA_ID			221
#define DOT11_MNG_VS_ID				221

#define DOT11_BSSTYPE_INFRASTRUCTURE		0
#define DOT11_BSSTYPE_ANY			2
#define DOT11_SCANTYPE_ACTIVE			0

#define PREN_PREAMBLE		24
#define PREN_MM_EXT		12
#define PREN_PREAMBLE_EXT	4

#define RIFS_11N_TIME		2

#define APHY_SLOT_TIME		9
#define APHY_SIFS_TIME		16
#define APHY_PREAMBLE_TIME	16
#define APHY_SIGNAL_TIME	4
#define APHY_SYMBOL_TIME	4
#define APHY_SERVICE_NBITS	16
#define APHY_TAIL_NBITS		6
#define	APHY_CWMIN		15

#define BPHY_SLOT_TIME		20
#define BPHY_SIFS_TIME		10
#define BPHY_PLCP_TIME		192
#define BPHY_PLCP_SHORT_TIME	96

#define DOT11_OFDM_SIGNAL_EXTENSION	6

#define PHY_CWMAX		1023

#define	DOT11_MAXNUMFRAGS	16

typedef struct d11cnt {
	u32 txfrag;
	u32 txmulti;
	u32 txfail;
	u32 txretry;
	u32 txretrie;
	u32 rxdup;
	u32 txrts;
	u32 txnocts;
	u32 txnoack;
	u32 rxfrag;
	u32 rxmulti;
	u32 rxcrc;
	u32 txfrmsnt;
	u32 rxundec;
} d11cnt_t;

#define MCSSET_LEN	16

#define HT_CAP_IE_LEN		26

#define HT_CAP_RX_STBC_NO		0x0
#define HT_CAP_RX_STBC_ONE_STREAM	0x1

#define AMPDU_MAX_MPDU_DENSITY	IEEE80211_HT_MPDU_DENSITY_16

#define AMPDU_DELIMITER_LEN	4

#define DOT11N_TXBURST		0x0008

#define WPA_VERSION		1
#define WPA_OUI			"\x00\x50\xF2"

#define WFA_OUI			"\x00\x50\xF2"
#define WFA_OUI_LEN	3

#define WFA_OUI_TYPE_WPA	1

#define RSN_AKM_NONE		0
#define RSN_AKM_UNSPECIFIED	1
#define RSN_AKM_PSK		2

#define DOT11_MAX_DEFAULT_KEYS	4
#define DOT11_WPA_KEY_RSC_LEN   8

#define BRCM_OUI		"\x00\x10\x18"

#endif				/* _802_11_H_ */