• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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