1 /*
2 * Copyright (c) 2020 HiSilicon (Shanghai) Technologies CO., LIMITED.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 * Description: Header files shared by wlan_types.h and wlan_types_rom.h.
15 * Author:
16 */
17
18 #ifndef __WLAN_TYPES_HCM_H__
19 #define __WLAN_TYPES_HCM_H__
20
21 #include "oal_types_device_rom.h"
22 #include "wlan_types_base_rom.h"
23 #ifdef __cplusplus
24 #if __cplusplus
25 extern "C" {
26 #endif
27 #endif
28
29 /*****************************************************************************
30 基本宏定义
31 *****************************************************************************/
32 #define WLAN_2G_SUB_BAND_NUM 14
33
34 /* 空间流定义 */
35 #define WLAN_SINGLE_NSS 0
36 #define WLAN_DOUBLE_NSS 1
37 #define WLAN_TRIPLE_NSS 2
38 #define WLAN_FOUR_NSS 3
39 #define WLAN_NSS_LIMIT 2
40
41 #define WLAN_USER_HT_NSS_LIMIT 4
42 #define WLAN_USER_VHT_NSS_LIMIT 8
43 /* 芯片最大空间流数目 */
44 #if defined(_PRE_WLAN_FEATURE_NSS_MODE)
45 #if defined (_PRE_WLAN_SUPPORT_SINGLE_NSS) && (_PRE_WLAN_FEATURE_NSS_MODE == _PRE_WLAN_SUPPORT_SINGLE_NSS)
46 #define WLAN_MAX_NSS_NUM (WLAN_SINGLE_NSS)
47 #elif defined (_PRE_WLAN_SUPPORT_DOUBLE_NSS) && (_PRE_WLAN_FEATURE_NSS_MODE == _PRE_WLAN_SUPPORT_DOUBLE_NSS)
48 #define WLAN_MAX_NSS_NUM (WLAN_DOUBLE_NSS)
49 #else
50 #define WLAN_MAX_NSS_NUM (WLAN_SINGLE_NSS)
51 #endif
52 #endif
53
54 #define WLAN_NSS_MAX_NUM_LIMIT (WLAN_MAX_NSS_NUM + 1) /* 最大空间流数目,考虑数组大小需要+1 */
55
56
57 #define MAC_BYTE_ALIGN_VALUE 4 /* 4字节对齐 */
58
59 #define WLAN_MAC_ADDR_LEN 6 /* MAC地址长度宏 */
60 #define WLAN_MAX_FRAME_HEADER_LEN 36 /* 最大的MAC帧头长度,数据帧36,管理帧为28 */
61 #define WLAN_MIN_FRAME_HEADER_LEN 10 /* ack与cts的帧头长度为10 */
62 #define WLAN_MAX_FRAME_LEN 1600 /* 维测用,防止越界 */
63 #define WLAN_MGMT_FRAME_HEADER_LEN 24 /* 管理帧的MAC帧头长度,数据帧36,管理帧为28 */
64 #define WLAN_IWPRIV_MAX_BUFF_LEN 100 /* iwpriv上传的字符串最大长度 */
65 /* SSID最大长度, +1为\0预留空间 */
66 #define WLAN_SSID_MAX_LEN (32 + 1)
67
68 /* 80211MAC帧头FC字段宏定义 */
69 #define WLAN_PROTOCOL_VERSION 0x00 /* 协议版本 */
70 #define WLAN_FC0_TYPE_MGT 0x00 /* 管理帧 */
71 #define WLAN_FC0_TYPE_CTL 0x04 /* 控制帧 */
72 #define WLAN_FC0_TYPE_DATA 0x08 /* 数据帧 */
73
74 /* 管理帧subtype */
75 #define WLAN_FC0_SUBTYPE_ASSOC_REQ 0x00
76 #define WLAN_FC0_SUBTYPE_ASSOC_RSP 0x10
77 #define WLAN_FC0_SUBTYPE_REASSOC_REQ 0x20
78 #define WLAN_FC0_SUBTYPE_REASSOC_RSP 0x30
79 #define WLAN_FC0_SUBTYPE_PROBE_REQ 0x40
80 #define WLAN_FC0_SUBTYPE_PROBE_RSP 0x50
81 #define WLAN_FC0_SUBTYPE_BEACON 0x80
82 #define WLAN_FC0_SUBTYPE_ATIM 0x90
83 #define WLAN_FC0_SUBTYPE_DISASSOC 0xa0
84 #define WLAN_FC0_SUBTYPE_AUTH 0xb0
85 #define WLAN_FC0_SUBTYPE_DEAUTH 0xc0
86 #define WLAN_FC0_SUBTYPE_ACTION 0xd0
87 #define WLAN_FC0_SUBTYPE_ACTION_NO_ACK 0xe0
88
89 /* 控制帧subtype */
90 #define WLAN_FC0_SUBTYPE_NDPA 0x50
91 #define WLAN_FC0_SUBTYPE_CONTROL_WRAPPER 0x70 /* For TxBF RC */
92 #define WLAN_FC0_SUBTYPE_BAR 0x80
93 #define WLAN_FC0_SUBTYPE_BA 0x90
94
95 #define WLAN_FC0_SUBTYPE_PS_POLL 0xa0
96 #define WLAN_FC0_SUBTYPE_RTS 0xb0
97 #define WLAN_FC0_SUBTYPE_CTS 0xc0
98 #define WLAN_FC0_SUBTYPE_ACK 0xd0
99 #define WLAN_FC0_SUBTYPE_CF_END 0xe0
100 #define WLAN_FC0_SUBTYPE_CF_END_ACK 0xf0
101
102 /* 数据帧subtype */
103 #define WLAN_FC0_SUBTYPE_DATA 0x00
104 #define WLAN_FC0_SUBTYPE_CF_ACK 0x10
105 #define WLAN_FC0_SUBTYPE_CF_POLL 0x20
106 #define WLAN_FC0_SUBTYPE_CF_ACPL 0x30
107 #define WLAN_FC0_SUBTYPE_NODATA 0x40
108 #define WLAN_FC0_SUBTYPE_CFACK 0x50
109 #define WLAN_FC0_SUBTYPE_CFPOLL 0x60
110 #define WLAN_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70
111 #define WLAN_FC0_SUBTYPE_QOS 0x80
112 #define WLAN_FC0_SUBTYPE_QOS_NULL 0xc0
113
114 #define WLAN_FC1_DIR_MASK 0x03
115 #define WLAN_FC1_DIR_NODS 0x00 /* STA->STA */
116 #define WLAN_FC1_DIR_TODS 0x01 /* STA->AP */
117 #define WLAN_FC1_DIR_FROMDS 0x02 /* AP ->STA */
118 #define WLAN_FC1_DIR_DSTODS 0x03 /* AP ->AP */
119
120 #define WLAN_FC1_MORE_FRAG 0x04
121 #define WLAN_FC1_RETRY 0x08
122 #define WLAN_FC1_PWR_MGT 0x10
123 #define WLAN_FC1_MORE_DATA 0x20
124 #define WLAN_FC1_WEP 0x40
125 #define WLAN_FC1_ORDER 0x80
126
127 #define WLAN_HDR_DUR_OFFSET 2 /* duartion相对于mac头的字节偏移 */
128 #define WLAN_HDR_ADDR1_OFFSET 4 /* addr1相对于mac头的字节偏移 */
129 #define WLAN_HDR_ADDR2_OFFSET 10 /* addr1相对于mac头的字节偏移 */
130 #define WLAN_HDR_ADDR3_OFFSET 16 /* addr1相对于mac头的字节偏移 */
131 #define WLAN_HDR_FRAG_OFFSET 22 /* 分片序号相对于mac的字节偏移 */
132
133 #define WLAN_REASON_CODE_LEN 2
134
135 /* 帧头DS位 */
136 #define WLAN_FRAME_TO_AP 0x0100
137 #define WLAN_FRAME_FROM_AP 0x0200
138 /* FCS长度(4字节) */
139 #define WLAN_HDR_FCS_LENGTH 4
140
141 #define WLAN_RANDOM_MAC_OUI_LEN 3 /* 随机mac地址OUI长度 */
142
143 #define WLAN_MAX_BAR_DATA_LEN 20 /* BAR帧的最大长度 */
144 #define WLAN_CHTXT_SIZE 128 /* challenge text的长度 */
145
146 #define WLAN_SEQ_SHIFT 4
147 /* AMPDU Delimeter长度(4字节) */
148 #define WLAN_DELIMETER_LENGTH 4
149
150 /* 配置命令最大长度: 从算法名称开始算起,不包括"alg" */
151 #define DMAC_ALG_CONFIG_MAX_ARG 7
152
153 /* 信道切换计数 */
154 #define WLAN_CHAN_SWITCH_DEFAULT_CNT 6
155 #define WLAN_CHAN_SWITCH_DETECT_RADAR_CNT 1
156
157 /* 默认信道配置 */
158 #define WLAN_DEFAULT_CHAN_NUM 6
159
160 /* 5G子频段数目 */
161 #define WLAN_5G_SUB_BAND_NUM 7
162 #define WLAN_5G_20M_SUB_BAND_NUM 7
163 #define WLAN_5G_80M_SUB_BAND_NUM 7
164 #define WLAN_5G_CALI_SUB_BAND_NUM (WLAN_5G_20M_SUB_BAND_NUM + WLAN_5G_80M_SUB_BAND_NUM)
165
166 #define WLAN_DIEID_MAX_LEN 40
167
168 #define WLAN_FIELD_TYPE_AID 0xC000
169
170 #define WLAN_SIFS_OFDM_POWLVL_NUM 4
171
172 #define WLAN_ACTION_BODY_CATEGORY_OFFSET 0 /* Action帧的category字段相对于frame body的字节偏移 */
173 #define WLAN_ACTION_BODY_ELEMENT_OFFSET 6 /* Action帧的element字段相对于frame body的字节偏移 */
174 #define WLAN_ACTION_BODY_OFFSET 24 /* Action帧的frame body相对于帧起始地址的字节偏移 */
175
176 #define WLAN_ACTION_CATEGORY_VENDOR_SPECIFIC 127 /* Action帧的类别为厂商自定义 */
177 #define WLAN_ACTION_TYPE_NOA 1 /* Action帧的子类别为NOA */
178
179 /* 管理帧包含的固定长度信息元素的总长度 */
180 #define WLAN_FC0_ASSOC_REQ_MIN_LEN 4
181 #define WLAN_FC0_REASSOC_REQ_MIN_LEN 8
182 #define WLAN_FC0_BEACON_MIN_LEN 12
183 #define WLAN_FC0_DISASSOC_MIN_LEN 2
184 #define WLAN_FC0_AUTH_MIN_LEN 6
185 #define WLAN_FC0_DEAUTH_MIN_LEN 2
186 #define WLAN_FC0_ACTION_MIN_LEN 1
187
188 #define WLAN_INVALD_VHT_MCS 0xff
189 #define WLAN_HT_MAX_BITMAP_LEN 8 /* ht速率的bitmap最大位数 */
190 /*****************************************************************************
191 2.2 WME宏定义
192 *****************************************************************************/
wlan_wme_ac_to_tid(osal_u8 ac)193 static INLINE__ osal_u8 wlan_wme_ac_to_tid(osal_u8 ac)
194 {
195 /* 数字6,5,1,0表示tid */
196 return ((ac == WLAN_WME_AC_VO) ? 6 : (ac == WLAN_WME_AC_VI) ? 5 : (ac == WLAN_WME_AC_BK) ? 1 : 0);
197 }
198
wlan_wme_tid_to_ac(osal_u8 tid)199 static INLINE__ osal_u8 wlan_wme_tid_to_ac(osal_u8 tid)
200 {
201 return (((tid == 0) || (tid == 3)) ? WLAN_WME_AC_BE : /* 数字0,3表示tid */
202 ((tid == 1) || (tid == 2)) ? WLAN_WME_AC_BK : /* 数字1,2表示tid */
203 ((tid == 4) || (tid == 5)) ? WLAN_WME_AC_VI : WLAN_WME_AC_VO); /* 数字4,5表示tid */
204 }
205
206 /*****************************************************************************
207 HT宏定义
208 *****************************************************************************/
209 /* 11n: Maximum A-MSDU Length Indicates maximum A-MSDU length.See 9.11.
210 Set to 0 for 3839 octetsSet to 1 for 7935 octets */
211 /* 11AC(9.11): A VHT STA that sets the Maximum MPDU Length in the VHT Capabilities element to indicate 3895 octets
212 shall set the Maximum A-MSDU Length in the HT Capabilities element to indicate 3839 octets. A VHT STA
213 that sets the Maximum MPDU Length in the VHT Capabilities element to indicate 7991 octets or 11 454 oc-
214 tets shall set the Maximum A-MSDU Length in the HT Capabilities element to indicate 7935 octets. */
215 #define WLAN_AMSDU_FRAME_MAX_LEN_SHORT 3839
216 #define WLAN_AMSDU_FRAME_MAX_LEN_LONG 7935
217
218 /* RSSI统计滤波,RSSI范围是-128~127, 一般不会等于127这么大,所以将127设置为MARKER,即初始值 */
219 #define WLAN_RSSI_DUMMY_MARKER 0x7F
220
221 /*****************************************************************************
222 安全相关宏定义
223 *****************************************************************************/
224 /* cipher suite selectors */
225 #define WITP_WLAN_CIPHER_SUITE_USE_GROUP 0x000FAC00
226 #define WITP_WLAN_CIPHER_SUITE_WEP40 0x000FAC01
227 #define WITP_WLAN_CIPHER_SUITE_TKIP 0x000FAC02
228 /* reserved: 0x000FAC03 */
229 #define WITP_WLAN_CIPHER_SUITE_CCMP 0x000FAC04
230 #define WITP_WLAN_CIPHER_SUITE_WEP104 0x000FAC05
231 #define WITP_WLAN_CIPHER_SUITE_AES_CMAC 0x000FAC06
232 #define WITP_WLAN_CIPHER_SUITE_GCMP 0x000FAC08
233 #define WITP_WLAN_CIPHER_SUITE_GCMP_256 0x000FAC09
234 #define WITP_WLAN_CIPHER_SUITE_CCMP_256 0x000FAC0A
235 #define WITP_WLAN_CIPHER_SUITE_BIP_GMAC_128 0x000FAC0B
236 #define WITP_WLAN_CIPHER_SUITE_BIP_GMAC_256 0x000FAC0C
237 #define WITP_WLAN_CIPHER_SUITE_BIP_CMAC_256 0x000FAC0D
238
239 #define WITP_WLAN_CIPHER_SUITE_SMS4 0x00147201
240
241 /* AKM suite selectors */
242 #define WITP_WLAN_AKM_SUITE_8021X 0x000FAC01
243 #define WITP_WLAN_AKM_SUITE_PSK 0x000FAC02
244 #define WITP_WLAN_AKM_SUITE_WAPI_PSK 0x000FAC04
245 #define WITP_WLAN_AKM_SUITE_WAPI_CERT 0x000FAC12
246
247 #define WLAN_PMKID_LEN 16
248 #define WLAN_PMKID_CACHE_SIZE 16
249 #define WLAN_NONCE_LEN 32
250 #define WLAN_PTK_PREFIX_LEN 22
251 #define WLAN_GTK_PREFIX_LEN 19
252 #define WLAN_GTK_DATA_LEN (NONCE_LEN + WLAN_MAC_ADDR_LEN)
253 #define WLAN_PTK_DATA_LEN (2 * NONCE_LEN + 2 * WLAN_MAC_ADDR_LEN)
254
255 #define WLAN_KCK_LENGTH 16
256 #define WLAN_KEK_LENGTH 16
257 #define WLAN_TEMPORAL_KEY_LENGTH 16
258 #define WLAN_MIC_KEY_LENGTH 8
259
260 #define WLAN_PMK_SIZE 32 /* In Bytes */
261 #define WLAN_PTK_SIZE 64 /* In Bytes */
262 #define WLAN_GTK_SIZE 32 /* In Bytes */
263 #define WLAN_GMK_SIZE 32 /* In Bytes */
264
265 #define WLAN_WEP40_KEY_LEN 5
266 #define WLAN_WEP104_KEY_LEN 13
267 #define WLAN_TKIP_KEY_LEN 32 /* TKIP KEY length 256 BIT */
268 #define WLAN_CCMP_KEY_LEN 16 /* CCMP KEY length 128 BIT */
269 #define WLAN_BIP_KEY_LEN 16 /* BIP KEY length 128 BIT */
270
271 #define WLAN_NUM_DOT11WEPDEFAULTKEYVALUE 4
272 #define WLAN_MAX_WEP_STR_SIZE 27 /* 5 for WEP 40; 13 for WEP 104 */
273 #define WLAN_WEP_SIZE_OFFSET 0
274 #define WLAN_WEP_KEY_VALUE_OFFSET 1
275 #define WLAN_WEP_40_KEY_SIZE 40
276 #define WLAN_WEP_104_KEY_SIZE 104
277
278 #define WLAN_COUNTRY_STR_LEN 3
279
280 /* crypto status */
281 #define WLAN_ENCRYPT_BIT (1 << 0)
282 #define WLAN_WEP_BIT (1 << 1)
283 #define WLAN_WEP104_BIT ((1 << 2) | (1 << 1))
284 #define WLAN_WPA_BIT (1 << 3)
285 #define WLAN_WPA2_BIT (1 << 4)
286 #define WLAN_CCMP_BIT (1 << 5)
287 #define WLAN_TKIP_BIT (1 << 6)
288 #ifdef _PRE_WLAN_FEATURE_WPA3
289 #define WLAN_WPA3_BIT (1 << 7)
290 #endif
291
292 #define WLAN_WAPI_BIT (1 << 5)
293
294 /* 11i参数 */
295 /* WPA 密钥长度 */
296 #define WLAN_WPA_KEY_LEN 32
297 #define WLAN_CIPHER_KEY_LEN 16
298 #define WLAN_TKIP_MIC_LEN 16
299 /* WPA 序号长度 */
300 #define WLAN_WPA_SEQ_LEN 16
301
302 /* auth */
303 #define WLAN_OPEN_SYS_BIT (1 << 0)
304 #define WLAN_SHARED_KEY_BIT (1 << 1)
305 #define WLAN_8021X_BIT (1 << 2)
306
307 #define WLAN_WITP_CAPABILITY_PRIVACY BIT4
308
309 #define WLAN_NUM_TK 4
310 #define WLAN_NUM_IGTK 2
311 #define WLAN_MAX_IGTK_KEY_INDEX 5
312 #define WLAN_MAX_WEP_KEY_COUNT 4
313
314 /*****************************************************************************
315 过滤命令宏定义
316 *****************************************************************************/
317 #define WLAN_BIP_REPLAY_FAIL_FLT BIT0 /* BIP重放攻击过滤 */
318 #define WLAN_CCMP_REPLAY_FAIL_FLT BIT1 /* CCMP重放攻击过滤 */
319 #define WLAN_OTHER_CTRL_FRAME_FLT BIT2 /* direct控制帧过滤 */
320 #define WLAN_BCMC_MGMT_OTHER_BSS_FLT BIT3 /* 其他BSS网络的组播管理帧过滤 */
321 #define WLAN_UCAST_MGMT_OTHER_BSS_FLT BIT4 /* 其他BSS网络的单播管理帧过滤 */
322
323 #define WLAN_UCAST_DATA_OTHER_BSS_FLT BIT5 /* 其他BSS网络的单播数据帧过滤 */
324
325 /*****************************************************************************
326 TX & RX Chain Macro
327 *****************************************************************************/
328 /* RF通道数规格 */
329 /* RF0 */
330 #define WLAN_RF_CHANNEL_ZERO 0
331 /* RF1 */
332 #define WLAN_RF_CHANNEL_ONE 1
333
334 /* PHY通道选择 */
335 /* 通道0 */
336 #define WLAN_PHY_CHAIN_ZERO_IDX 0
337 /* 通道1 */
338 #define WLAN_PHY_CHAIN_ONE_IDX 1
339
340 /* 双通道掩码 */
341 #define WLAN_RF_CHAIN_DOUBLE 3
342 #define WLAN_RF_CHAIN_ONE 2
343 #define WLAN_RF_CHAIN_ZERO 1
344
345 /* 双通道掩码 */
346 #define WLAN_PHY_CHAIN_DOUBLE 3
347 #define WLAN_TX_CHAIN_DOUBLE WLAN_PHY_CHAIN_DOUBLE
348 #define WLAN_RX_CHAIN_DOUBLE WLAN_PHY_CHAIN_DOUBLE
349 /* 通道0 掩码 */
350 #define WLAN_PHY_CHAIN_ZERO 1
351 #define WLAN_TX_CHAIN_ZERO WLAN_PHY_CHAIN_ZERO
352 #define WLAN_RX_CHAIN_ZERO WLAN_PHY_CHAIN_ZERO
353 /* 通道1 掩码 */
354 #define WLAN_PHY_CHAIN_ONE 2
355 #define WLAN_TX_CHAIN_ONE WLAN_PHY_CHAIN_ONE
356 #define WLAN_RX_CHAIN_ONE WLAN_PHY_CHAIN_ONE
357
358 #define WLAN_2G_CHANNEL_NUM 14
359 #define WLAN_5G_CHANNEL_NUM 29
360 /* wifi 5G 2.4G全部信道个数 */
361 #define WLAN_MAX_CHANNEL_NUM (WLAN_2G_CHANNEL_NUM + WLAN_5G_CHANNEL_NUM)
362
363 /* PLL0 */
364 #define WLAN_RF_PLL_ID_0 0
365 /* PLL1 */
366 #define WLAN_RF_PLL_ID_1 1
367
368 /*****************************************************************************
369 linkloss
370 *****************************************************************************/
371 #define WLAN_LINKLOSS_REPORT 10 /* linkloss每10次打印一次维测 */
372 #define WLAN_LINKLOSS_MIN_THRESHOLD 10 /* linkloss门限最小最低值 */
373
374 /* 11AX MCS相关的内容 */
375 #define MAC_MAX_SUP_MCS7_11AX_EACH_NSS 0 /* 11AX各空间流支持的最大MCS序号,支持0-7 */
376 #define MAC_MAX_SUP_MCS9_11AX_EACH_NSS 1 /* 11AX各空间流支持的最大MCS序号,支持0-9 */
377 #define MAC_MAX_SUP_MCS11_11AX_EACH_NSS 2 /* 11AX各空间流支持的最大MCS序号,支持0-11 */
378 #define MAC_MAX_SUP_INVALID_11AX_EACH_NSS 3 /* 不支持 */
379
380
381 #define MAC_MAX_RATE_SINGLE_NSS_20M_11AX 106 /* 1个空间流20MHz的最大速率-见ax协议28.5-HE-MCSs */
382 #define MAC_MAX_RATE_SINGLE_NSS_40M_11AX 212 /* 1个空间流40MHz的最大Long GI速率 */
383 #define MAC_MAX_RATE_SINGLE_NSS_80M_11AX 212 /* 1个空间流40MHz的最大Long GI速率 */
384
385 #define MAC_MAX_RATE_DOUBLE_NSS_20M_11AX 211 /* 2个空间流20MHz的最大Long GI速率 */
386 #define MAC_MAX_RATE_DOUBLE_NSS_40M_11AX 423 /* 2个空间流20MHz的最大Long GI速率 */
387 #define MAC_MAX_RATE_DOUBLE_NSS_80M_11AX 869 /* 2个空间流20MHz的最大Long GI速率 */
388
389 #define MAC_TRIGGER_FRAME_PADDING_DURATION0US 0
390 #define MAC_TRIGGER_FRAME_PADDING_DURATION8US 1
391 #define MAC_TRIGGER_FRAME_PADDING_DURATION16US 2
392
393 /*****************************************************************************
394 3 枚举定义
395 *****************************************************************************/
396 /*****************************************************************************
397 3.1 基本枚举类型
398 *****************************************************************************/
399 /* TID个数为8,0~7 */
400 #define WLAN_TID_MAX_NUM WLAN_TIDNO_BUTT
401
402 /* 按照80211-2012 协议 Table 8-101 AKM suite selectors 定义 */
403 #define WLAN_AUTH_SUITE_RSV 0
404 #define WLAN_AUTH_SUITE_1X 1
405 #define WLAN_AUTH_SUITE_PSK 2
406 #define WLAN_AUTH_SUITE_FT_1X 3
407 #define WLAN_AUTH_SUITE_FT_PSK 4
408 #define WLAN_AUTH_SUITE_1X_SHA256 5
409 #define WLAN_AUTH_SUITE_PSK_SHA256 6
410 #define WLAN_AUTH_SUITE_TDLS 7
411 #define WLAN_AUTH_SUITE_SAE_SHA256 8
412 #define WLAN_AUTH_SUITE_FT_SHA256 9
413 #define WLAN_AUTH_SUITE_OWE 18
414
415 #define MAC_OWE_GROUP_SUPPORTED_NUM 3
416 #define MAC_OWE_GROUP_19 19
417 #define MAC_OWE_GROUP_20 20
418 #define MAC_OWE_GROUP_21 21
419
420 /* 协议能力枚举 */
421 typedef enum {
422 WLAN_PROTOCOL_CAP_LEGACY,
423 WLAN_PROTOCOL_CAP_HT,
424 WLAN_PROTOCOL_CAP_VHT,
425 WLAN_PROTOCOL_CAP_HE,
426 WLAN_PROTOCOL_CAP_BUTT,
427 }wlan_protocol_cap_enum;
428 typedef td_u8 wlan_protocol_cap_enum_uint8;
429
430 /* 数据帧子类型枚举 */
431 typedef enum {
432 MAC_DATA_DHCP = 0,
433 MAC_DATA_EAPOL,
434 MAC_DATA_ARP_RSP,
435 MAC_DATA_ARP_REQ, /* 注意: 前4个vip帧类型顺序勿变 */
436 MAC_DATA_DHCPV6,
437 MAC_DATA_PPPOE,
438 MAC_DATA_WAPI,
439 MAC_DATA_HS20,
440 MAC_DATA_CHARIOT_SIG, /* chariot 信令报文 */
441 MAC_DATA_VIP_FRAME = MAC_DATA_CHARIOT_SIG, /* 以上为VIP DATA FRAME */
442 MAC_DATA_TDLS,
443 MAC_DATA_VLAN,
444 MAC_DATA_ND,
445 MAC_DATA_ICMP_REQ,
446 MAC_DATA_ICMP_RSP,
447 MAC_DATA_ICMP_OTH,
448
449 MAC_DATA_BUTT
450 } mac_data_type_enum_uint8;
451
452 /* 带宽能力枚举 */
453 typedef enum {
454 WLAN_BW_CAP_20M,
455 WLAN_BW_CAP_40M,
456 WLAN_BW_CAP_80M,
457 WLAN_BW_CAP_ER_SU_106_TONE,
458 WLAN_STD_BW_CAP_BUTT = (WLAN_BW_CAP_ER_SU_106_TONE + 1), /* 主流带宽(20/40/80M)的分界 */
459 WLAN_BW_CAP_160M,
460 WLAN_BW_CAP_80PLUS80, /* 工作在80+80 */
461 WLAN_BW_CAP_5M,
462 WLAN_BW_CAP_10M,
463
464 WLAN_BW_CAP_BUTT
465 } wlan_bw_cap_enum;
466 typedef osal_u8 wlan_bw_cap_enum_uint8;
467
468 /* monitor类型枚举 */
469 typedef enum {
470 WLAN_MONITOR_OFF, /* 关闭报文上报 */
471 WLAN_MONITOR_MCAST_DATA, /* 上报组播(广播)数据包 */
472 WLAN_MONITOR_UCAST_DATA, /* 上报单播数据包 */
473 WLAN_MONITOR_MCAST_MANAGEMENT, /* 上报组播(广播)管理包 */
474 WLAN_MONITOR_UCAST_MANAGEMENT, /* 上报单播管理包 */
475 WLAN_MONITOR_BUTT
476 } wlan_monitor_enum;
477 typedef td_u8 wlan_monitor_enum_uint8;
478
479 /*****************************************************************************
480 3.4 VHT枚举类型
481 *****************************************************************************/
482 /* WIFI协议类型定义 */
483 /* Note: 此定义若修改, 需要相应更新g_auc_default_mac_to_phy_protocol_mapping数组值 */
484 typedef enum {
485 WLAN_LEGACY_11A_MODE = 0, /* 11a, 5G, OFDM */
486 WLAN_LEGACY_11B_MODE = 1, /* 11b, 2.4G */
487 WLAN_LEGACY_11G_MODE = 2, /* 旧的11g only已废弃, 2.4G, OFDM */
488 WLAN_MIXED_ONE_11G_MODE = 3, /* 11bg, 2.4G */
489 WLAN_MIXED_TWO_11G_MODE = 4, /* 11g only, 2.4G */
490 WLAN_HT_MODE = 5, /* 11n(11bgn或者11an,根据频段判断) */
491 WLAN_VHT_MODE = 6, /* 11ac */
492 WLAN_HT_ONLY_MODE = 7, /* 11n only mode,只有带HT的设备才可以接入 */
493 WLAN_VHT_ONLY_MODE = 8, /* 11ac only mode 只有带VHT的设备才可以接入 */
494 WLAN_HT_11G_MODE = 9, /* 11ng,不包括11b */
495 WLAN_HE_MODE = 10, /* 11ax */
496
497 WLAN_PROTOCOL_BUTT
498 } wlan_protocol_enum;
499 typedef td_u8 wlan_protocol_enum_uint8;
500
501 /* vap协议最大能力,供上层接口调用 */
502 typedef enum {
503 WLAN_PROTOCOL_LEGACY_11A_MODE,
504 WLAN_PROTOCOL_LEGACY_11B_MODE,
505 WLAN_PROTOCOL_LEGACY_11G_MODE,
506 WLAN_PROTOCOL_HT_MODE,
507 WLAN_PROTOCOL_VHT_MODE,
508 WLAN_PROTOCOL_HE_MODE,
509
510 WLAN_PROTOCOL_MODE_BUTT
511 } wlan_protocol_mode_enum;
512 typedef td_u8 wlan_protocol_mode_enum_uint8;
513
514 /* 重要:仅限描述符接口使用(表示发送该帧使用的pramble类型),0表示short preamble; 1表示long preamble */
515 typedef enum {
516 WLAN_LEGACY_11B_DSCR_SHORT_PREAMBLE = 0,
517 WLAN_LEGACY_11B_DSCR_LONG_PREAMBLE = 1,
518
519 WLAN_LEGACY_11B_PREAMBLE_BUTT
520 }wlan_11b_dscr_preamble_enum;
521 typedef td_u8 wlan_11b_dscr_preamble_enum_uint8;
522
523 typedef enum {
524 WLAN_11B_1_M_BPS = 0,
525 WLAN_11B_2_M_BPS = 1,
526 WLAN_11B_5_HALF_M_BPS = 2,
527 WLAN_11B_11_M_BPS = 3,
528 WLAN_11B_BUTT,
529 } wlan_11b_rate_index_enum;
530 typedef osal_u8 wlan_11b_rate_index_enum_uint8;
531
532 typedef enum {
533 WLAN_11AG_6M_BPS = 0,
534 WLAN_11AG_9M_BPS = 1,
535 WLAN_11AG_12M_BPS = 2,
536 WLAN_11AG_18M_BPS = 3,
537 WLAN_11AG_24M_BPS = 4,
538 WLAN_11AG_36M_BPS = 5,
539 WLAN_11AG_48M_BPS = 6,
540 WLAN_11AG_54M_BPS = 7,
541 WLAN_11AG_BUTT,
542 } wlan_11ag_rate_value_enum;
543 typedef osal_u8 wlan_legacy_ofdm_mcs_enum_uint8;
544
545 typedef enum {
546 #if (WLAN_SINGLE_NSS <= WLAN_MAX_NSS_NUM)
547 WLAN_HT_SINGLE_NSS_START = 0,
548 WLAN_HT_MCS0 = WLAN_HT_SINGLE_NSS_START,
549 WLAN_HT_MCS1,
550 WLAN_HT_MCS2,
551 WLAN_HT_MCS3,
552 WLAN_HT_MCS4,
553 WLAN_HT_MCS5,
554 WLAN_HT_MCS6,
555 WLAN_HT_MCS7,
556 WLAN_HT_SINGLE_NSS_END = WLAN_HT_MCS7,
557 #endif
558 #if (WLAN_DOUBLE_NSS <= WLAN_MAX_NSS_NUM)
559 WLAN_HT_DOUBLE_NSS_START,
560 WLAN_HT_MCS8 = WLAN_HT_DOUBLE_NSS_START,
561 WLAN_HT_MCS9,
562 WLAN_HT_MCS10,
563 WLAN_HT_MCS11,
564 WLAN_HT_MCS12,
565 WLAN_HT_MCS13,
566 WLAN_HT_MCS14,
567 WLAN_HT_MCS15,
568 WLAN_HT_DOUBLE_NSS_END = WLAN_HT_MCS15,
569 #endif
570 WLAN_HT_MCS_BUTT
571 } wlan_ht_mcs_enum;
572 typedef osal_u8 wlan_ht_mcs_enum_uint8;
573
574 #define WLAN_HT_MCS32 32
575 #define WLAN_MIN_MPDU_LEN_FOR_MCS32 12
576 #define WLAN_MIN_MPDU_LEN_FOR_MCS32_SHORTGI 13
577 #define WLAN_MIN_MPDU_LEN_FOR_HE 80
578
579
580 typedef enum {
581 WLAN_NO_SOUNDING = 0,
582 WLAN_NDP_SOUNDING = 1,
583 WLAN_STAGGERED_SOUNDING = 2,
584 WLAN_LEGACY_SOUNDING = 3,
585
586 WLAN_SOUNDING_BUTT
587 } wlan_sounding_enum;
588 typedef td_u8 wlan_sounding_enum_uint8;
589
590 #ifdef _PRE_WLAN_FEATURE_DFX_CHR
591 typedef enum {
592 CHR_ERR_CODE_PLL = 0,
593 CHR_ERR_CODE_RX_SARADC_OFFSET,
594 CHR_ERR_CODE_RX_SARADC_DELAY,
595 CHR_ERR_CODE_RX_LPF_WIFI,
596 CHR_ERR_CODE_RX_LPF_BLE,
597 CHR_ERR_CODE_RX_RFDC_WIFI,
598 CHR_ERR_CODE_RX_RFDC_BLE,
599 CHR_ERR_CODE_RX_DIGDC,
600 CHR_ERR_CODE_RX_DIGDC_TRACK,
601 CHR_ERR_CODE_RX_DC_OFFSET,
602 CHR_ERR_CODE_RX_IQ_CALI,
603 CHR_ERR_CODE_RX_IQ_MANUAL,
604 CHR_ERR_CODE_RX_LCTUNE,
605 CHR_ERR_CODE_TX_LPF_WIFI,
606 CHR_ERR_CODE_TX_LPF_BLE,
607 CHR_ERR_CODE_TX_PA,
608 CHR_ERR_CODE_TX_IQDC,
609 CHR_ERR_CODE_TX_PADIG,
610 CHR_ERR_CODE_TX_PADIGPOWDB,
611 CHR_ERR_CODE_BUTT
612 } chr_cali_err_code_enum;
613 #endif
614
615 /*****************************************************************************
616 3.4 算法宏,枚举类型
617 *****************************************************************************/
618
619 /* CCA_OPT工作模式 */
620 #define WLAN_CCA_OPT_DISABLE 0 /* 不做任何优化 */
621 #define WLAN_CCA_OPT_ENABLE 1 /* 不做同频识别的EDCA优化 */
622
623 /* EDCA_OPT STA模式下工作模式 */
624 #define WLAN_EDCA_OPT_STA_DISABLE 0 /* 不做任何优化 */
625 #define WLAN_EDCA_OPT_STA_ENABLE 1 /* 不做同频识别的EDCA优化 */
626
627 /* EDCA_OPT AP模式下工作模式 */
628 #define WLAN_EDCA_OPT_AP_EN_DISABLE 0 /* 不做任何优化 */
629 #define WLAN_EDCA_OPT_AP_EN_DEFAULT 1 /* 不做同频识别的EDCA优化 */
630 #define WLAN_EDCA_OPT_AP_EN_WITH_COCH 2 /* 带有同频识别的优化 */
631
632 /* 弱干扰免疫算法使能模式 */
633 #define WLAN_ANTI_INTF_EN_OFF 0 /* 算法关闭 */
634 #define WLAN_ANTI_INTF_EN_ON 1 /* 算法打开 */
635 #define WLAN_ANTI_INTF_EN_PROBE 2 /* 探测机制进行算法开/关 */
636
637 /* 动态byass外置LNA使能模式 */
638 #define WLAN_EXTLNA_BYPASS_EN_OFF 0 /* 动态bypass外置LNA关 */
639 #define WLAN_EXTLNA_BYPASS_EN_ON 1 /* 动态bypass外置LNA开 */
640 #define WLAN_EXTLNA_BYPASS_EN_FORCE 2 /* 动态bypass外置LNA强制开 */
641
642 /* DFS使能模式 */
643 #define WLAN_DFS_EN_OFF 0 /* 算法关闭 */
644 #define WLAN_DFS_EN_ON 1 /* 算法打开,检测到雷达切换信道 */
645
646 /*****************************************************************************
647 2.5 过滤命令宏定义
648 *****************************************************************************/
649 #define WLAN_CFG_OTHER_BSS_BEACON_FLT_EN BIT25 /* 其他BSS网络的Beacon帧过滤 */
650 #define WLAN_CFG_WDS_FLT_EN BIT24 /* WDS帧是否进行过滤 */
651 #define WLAN_CFG_WDS_BCMC_FLT_EN BIT23 /* 广播WDS帧是否过滤开关 */
652 #define WLAN_CFG_WDS_NON_DIRECT_FLT_EN BIT22 /* 非直接单播WDS帧是否过滤开关 */
653
654
655 /*****************************************************************************
656 3.7 报文类型枚举
657 *****************************************************************************/
658 typedef enum {
659 WLAN_PKT_TYPE_BEACON,
660 WLAN_PKT_TYPE_PROBE_REQ,
661 WLAN_PKT_TYPE_PROBE_RESP,
662 WLAN_PKT_TYPE_ASSOC_REQ,
663 WLAN_PKT_TYPE_ASSOC_RESP,
664 WLAN_PKT_TYPE_BUTT
665 } wlan_pkt_type;
666 typedef td_u8 wlan_pkt_type_uint8;
667
668 /*****************************************************************************
669 3.12 HE 枚举
670 *****************************************************************************/
671 /* 在host不具备 he 能力时,可以扫描支持11ax的设备 */
672 typedef enum {
673 WLAN_GI_LONG = 0, /* 11ax:3.2us,非11ax:0.8us */
674 WLAN_GI_SHORT, /* 11ax:0.8us,非11ax:0.4us */
675 WLAN_GI_MID, /* only 11ax:1.6us */
676 WLAN_NON_HE_GI_TYPE_BUTT = WLAN_GI_MID,
677 WLAN_HE_GI_TYPE_BUTT
678 } wlan_gi_type_enum;
679 typedef osal_u8 wlan_gi_type_enum_uint8;
680
681 typedef enum {
682 WLAN_HE_MCS0,
683 WLAN_HE_MCS1,
684 WLAN_HE_MCS2,
685 WLAN_HE_MCS3,
686 WLAN_HE_MCS4,
687 WLAN_HE_MCS5,
688 WLAN_HE_MCS6,
689 WLAN_HE_MCS7,
690 WLAN_HE_MCS8,
691 WLAN_HE_MCS9,
692 #ifdef _PRE_WLAN_FEATURE_1024QAM
693 WLAN_HE_MCS10,
694 WLAN_HE_MCS11,
695 #endif
696 WLAN_HE_MCS_BUTT
697 } wlan_he_mcs_enum;
698 typedef osal_u8 wlan_he_mcs_enum_uint8;
699
700 typedef enum {
701 WLAN_HE_SU_PPDU_TYPE = 4,
702 WLAN_HE_MU_PPDU_TYPE = 5,
703 WLAN_HE_EXT_SU_PPDU_TPYE = 6,
704 WLAN_HE_TRIG_PPDU_TYPE = 7,
705 WLAN_HE_PPDU_TYPE_BUTT
706 } wlan_he_protocol_mode;
707 typedef osal_u8 wlan_he_protocol_mode_uint8;
708
709 typedef enum {
710 WLAN_HE_ER_MCS0 = WLAN_HE_MCS0,
711 WLAN_HE_ER_MCS1,
712 WLAN_HE_ER_MCS2,
713 WLAN_HE_ER_DCM_MCS0,
714 WLAN_HE_ER_BUTT
715 }wlan_he_er_mcs_enum;
716 typedef osal_u8 wlan_he_er_mcs_enum_uint8;
717
718 typedef enum {
719 WLAN_HE_LTF_1X = 0,
720 WLAN_HE_LTF_2X,
721 WLAN_HE_LTF_4X,
722 WLAN_HE_LTF_TYPE_BUTT
723 } wlan_he_ltf_type_enum;
724 typedef osal_u8 wlan_he_ltf_type_enum_uint8;
725
726 /*****************************************************************************
727 3.13 11ax trigger帧类型
728 *****************************************************************************/
729 typedef enum {
730 WLAN_HE_TRIG_TYPE_BASIC = 0,
731 WLAN_HE_TRIG_TYPE_BFRP = 1,
732 WLAN_HE_TRIG_TYPE_MU_BAR = 2,
733 WLAN_HE_TRIG_TYPE_MU_RTS = 3,
734 WLAN_HE_TRIG_TYPE_BSRP = 4,
735 WLAN_HE_TRIG_TYPE_GCR_MU_BAR = 5,
736 WLAN_HE_TRIG_TYPE_BQRP = 6,
737 WLAN_HE_TRIG_TYPE_NFRP = 7,
738 WLAN_HE_TRIG_TYPE_MAX = 8,
739 } wlan_he_trig_type;
740
741 typedef enum {
742 WLAN_HE_RU_26,
743 WLAN_HE_RU_52,
744 WLAN_HE_RU_106,
745 WLAN_HE_RU_242,
746 WLAN_HE_RU_484,
747 WLAN_HE_RU_996,
748 /* WLAN_HE_RU_1992,160M */
749 WLAN_HE_RU_BUTT
750 } wlan_he_ru_enum;
751 typedef osal_u8 wlan_he_ru_enum_uint8;
752 /*****************************************************************************
753 3.14 A-Control类型
754 *****************************************************************************/
755 typedef enum {
756 WLAN_HTC_A_CONTROL_TYPE_TRS = 0,
757 WLAN_HTC_A_CONTROL_TYPE_OM = 1,
758 WLAN_HTC_A_CONTROL_TYPE_HLA = 2,
759 WLAN_HTC_A_CONTROL_TYPE_BSR = 3,
760 WLAN_HTC_A_CONTROL_TYPE_UPH = 4,
761 WLAN_HTC_A_CONTROL_TYPE_BQR = 5,
762 WLAN_HTC_A_CONTROL_TYPE_CAS = 6,
763 WLAN_HTC_A_CONTROL_TYPE_ONES = 15
764 } wlan_he_a_control_type;
765
766 /*****************************************************************************
767 STRUCT定义
768 *****************************************************************************/
769 typedef struct {
770 td_u32 cipher; /* 加密类型 */
771 td_u32 key_len; /* 密钥长 */
772 td_u32 seq_len; /* sequnece长 */
773 td_u8 key[WLAN_WPA_KEY_LEN]; /* 密钥 */
774 td_u8 seq[WLAN_WPA_SEQ_LEN]; /* sequence */
775 } wlan_priv_key_param_stru;
776
777 typedef struct {
778 osal_u16 chan_ratio_20m;
779 osal_u16 chan_ratio_40m;
780 osal_u16 chan_ratio_80m;
781 osal_s8 free_power_20m;
782 osal_s8 free_power_40m;
783 osal_s8 free_power_80m;
784 osal_u8 auc_resv[3]; /* 预留3字节对齐 */
785 } wlan_chan_ratio_stru;
786
787 typedef struct {
788 osal_u8 user_mac_addr[WLAN_MAC_ADDR_LEN]; /* 切换对应的AP MAC地址 */
789 wlan_m2s_action_type_enum_uint8 action_type; /* 切换对应需要发送的action帧类型,需要和vap下ori交互处理 */
790 oal_bool_enum_uint8 m2s_result; /* 切换是否符合初始action帧,作为vap切换成功失败标记 */
791 } wlan_m2s_mgr_vap_stru;
792
793 /* DMAC SCAN 信道统计测量结果结构体 */
794 typedef struct {
795 td_u8 channel_number; /* 信道号 */
796 td_u8 stats_valid;
797 td_u8 stats_cnt; /* 信道繁忙度统计次数 */
798 td_u8 free_power_cnt; /* 信道空闲功率 */
799
800 /* PHY信道测量统计 */
801 td_u8 bandwidth_mode;
802 td_u8 auc_resv[1];
803 td_s16 free_power_stats_20m;
804 td_s16 free_power_stats_40m;
805 td_s16 free_power_stats_80m;
806
807 /* MAC信道测量统计 */
808 td_u32 total_stats_time_us;
809 td_u32 total_free_time_20m_us;
810 td_u32 total_free_time_40m_us;
811 td_u32 total_free_time_80m_us;
812 td_u32 total_free_time_sec20m_us;
813 td_u32 total_send_time_us;
814 td_u32 total_recv_time_us;
815
816 td_u8 radar_detected;
817 td_u8 radar_bw;
818 td_u8 radar_type;
819 td_u8 radar_freq_offset;
820
821 td_s16 s_free_power_stats_160m;
822 td_u16 phy_total_stats_time_ms;
823 } wlan_scan_chan_stats_stru;
824
825 /*****************************************************************************
826 OTHERS定义
827 *****************************************************************************/
828 /*****************************************************************************
829 功能描述 : 获取帧类型
830 *****************************************************************************/
wlan_hdr_get_frame_type(const td_u8 * header)831 static INLINE__ td_u8 wlan_hdr_get_frame_type(const td_u8 *header)
832 {
833 return ((header[0] & (0x0c)) >> 2); /* 2: 右移2位 */
834 }
835
wlan_get_vht_max_support_mcs(osal_u16 vht_mcs_map)836 static INLINE__ wlan_vht_mcs_enum_uint8 wlan_get_vht_max_support_mcs(osal_u16 vht_mcs_map)
837 {
838 return ((vht_mcs_map == 3) ? WLAN_INVALD_VHT_MCS : /* 11ac 3: 速率档位 */
839 (vht_mcs_map == 2) ? WLAN_VHT_MCS9 : (vht_mcs_map == 1) ? WLAN_VHT_MCS8 : WLAN_VHT_MCS7); /* 11ac 2: 速率档位 */
840 }
841
842 /* 取绝对值 */
get_abs(osal_s64 val)843 static INLINE__ osal_s64 get_abs(osal_s64 val)
844 {
845 return (val < 0) ? -val : val;
846 }
847
848 #ifdef __cplusplus
849 #if __cplusplus
850 }
851 #endif
852 #endif
853
854 #endif /* end of wlan_types.h */
855