WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
mac_regdomain.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2020. All rights reserved.
3 * Description: Header file of mac_regdomain_rom.c.
4 * Create: 2020-7-8
5 */
6
7#ifndef __MAC_REGDOMAIN_H__
8#define __MAC_REGDOMAIN_H__
9
10/*****************************************************************************
11 其他头文件包含
12*****************************************************************************/
13#include "oal_ext_if.h"
14#include "wlan_spec.h"
15#include "wlan_types_common.h"
16#include "frw_util.h"
17
18#ifdef __cplusplus
19#if __cplusplus
20extern "C" {
21#endif
22#endif
23
24/*****************************************************************************
25 宏定义
26*****************************************************************************/
27#define MAC_MAX_SUPP_CHANNEL (osal_u8)(OAL_MAX((osal_u8)MAC_CHANNEL_FREQ_2_BUTT, (osal_u8)MAC_CHANNEL_FREQ_5_BUTT))
28#define mac_get_ch_bit(_val) (1 << (_val))
29
30/* 默认管制域最大发送功率 */
31#define MAC_RC_DEFAULT_MAX_TX_PWR 30
32
33#define MAC_INVALID_RC 255 /* 无效的管制类索引值 */
34
35#define MAC_SEC_CHAN_INDEX_OFFSET_START_FREQ_5 1
36#define MAC_AFFECTED_CHAN_OFFSET_START_FREQ_5 0
37#define MAC_SEC_CHAN_INDEX_OFFSET_START_FREQ_2 4
38#define MAC_AFFECTED_CHAN_OFFSET_START_FREQ_2 3
39
40#ifdef _PRE_WLAN_FEATURE_015CHANNEL_EXP
41#define MAX_CHANNEL_NUM_FREQ_2G 16 /* 2G频段最大的信道号 */
42#else
43#define MAX_CHANNEL_NUM_FREQ_2G 14 /* 2G频段最大的信道号 */
44#endif
45
46#define MAC_MAX_20M_SUB_CH 8 /* VHT160中,20MHz信道总个数 */
47
48/*****************************************************************************
49 枚举定义
50*****************************************************************************/
51/* 一个管制类的起始频率枚举 */
59
60/* 管制类信道间距枚举 */
72
73/* 雷达认证标准枚举 */
84
85/* 5GHz频段枚举: 信道号对应的信道索引值 */
119
120/* 2.4GHz频段枚举: 信道号对应的信道索引值 */
121typedef enum {
136#ifdef _PRE_WLAN_FEATURE_015CHANNEL_EXP
137 MAC_CHANNEL15 = 14,
138 MAC_CHANNEL16 = 15, // MAC_CHANNEL16代替新增的0信道
140#else
142#endif
145
146/* note:change alg/acs/acs_cmd_resp.h as while */
152
153/* 信道的channel */
154enum {
166#ifdef _PRE_WLAN_FEATURE_015CHANNEL_EXP
167 CHANNEL15 = 15,
168 CHANNEL16 = 16,
169#endif
179 CHANNEL196 = 196
181
182/* 移位bit */
183#define SHITF_BIT2 2
184
185enum {
194};
195
196/*****************************************************************************
197 STRUCT定义
198*****************************************************************************/
199#define MAC_RD_INFO_LEN 12 /* mac_regdomain_info_stru去掉mac_regclass_info_stru的长度 */
200
201/* channel info结构体 */
202typedef struct {
203 osal_u8 chan_number; /* 信道号 */
204 osal_u8 reg_class; /* 管制类在管制域中的索引号 */
205 osal_u8 auc_resv[2];
207
208typedef struct {
209 osal_u16 freq; /* 中心频率,单位MHz */
210 osal_u8 number; /* 信道号 */
211 osal_u8 idx; /* 信道索引(软件用) */
213
218
223
224/*****************************************************************************
225 STRUCT定义
226*****************************************************************************/
227/* 管制域配置命令结构体 */
231
232/* 管制类结构体: 每个管制类保存的信息 */
233typedef struct {
236 osal_u8 behaviour_bmap; /* 允许的行为位图 位图定义见mac_behaviour_bmap_enum */
237 osal_u8 coverage_class; /* 覆盖类 */
238 osal_u8 max_reg_tx_pwr; /* 管制类规定的最大发送功率, 单位dBm */
239 osal_u16 max_tx_pwr; /* 实际使用的最大发送功率,扩大了10倍用于计算, 单位dBm,可以比管制域规定功率大 */
240 osal_u8 resv[1];
241 osal_u32 channel_bmap; /* 支持信道位图,例 0011表示支持的信道的index为0 1 */
243
244/* 管制域信息结构体 */
245/*
246 * 管制类值、管制类位图与管制类信息 数组下表的关系
247 * 管制类取值 : .... 7 6 5 4 3 2 1 0
248 * 管制类位图 : .... 1 1 0 1 1 1 0 1
249 * 管制类信息数组下标: .... 5 4 x 3 2 1 x 0
250 */
251typedef struct {
252 osal_s8 ac_country[WLAN_COUNTRY_STR_LEN]; /* 国家字符串 */
253 mac_dfs_domain_enum_uint8 dfs_domain; /* DFS 雷达标准 */
254 osal_u8 regclass_num; /* 管制类个数 */
256 osal_u8 resv[2];
257 mac_regclass_info_stru regclass[WLAN_MAX_RC_NUM]; /* 管制域包含的管制类信息,注意 此成员只能放在最后一项! */
259
260/*****************************************************************************
261 函数声明
262*****************************************************************************/
266extern void hmac_init_regdomain_etc(void);
269extern osal_u32 hmac_get_channel_idx_from_num_etc(osal_u8 band, osal_u8 channel_num, osal_u8 *channel_idx);
272
277extern void hmac_get_ext_chan_info(osal_u8 pri20_channel_idx, wlan_channel_bandwidth_enum_uint8 en_bandwidth,
278 mac_channel_list_stru *chan_info);
280 wlan_channel_bandwidth_enum_uint8 en_bandwidth, osal_u8 channel_num);
284
285#ifdef _PRE_WLAN_FEATURE_11D
286osal_u32 mac_set_country_ie_2g_etc(const mac_regdomain_info_stru *rd_info, osal_u8 *buffer, osal_u8 *len);
287
288osal_u32 mac_set_country_ie_5g_etc(const mac_regdomain_info_stru *rd_info, const osal_u8 *buffer, osal_u8 *len);
289#endif
290
291/*****************************************************************************
292 函 数 名 : mac_is_rc_dfs_req
293 功能描述 : 根据国家码和管制域判断该信道是否为DFS信道
294*****************************************************************************/
295static INLINE__ oal_bool_enum_uint8 mac_is_rc_dfs_req(const mac_regclass_info_stru *rc_info)
296{
297 if ((rc_info->behaviour_bmap & MAC_RC_DFS) == 0) {
298 return OSAL_FALSE;
299 }
300
301 return OSAL_TRUE;
302}
303
304/*****************************************************************************
305 函 数 名 : mac_is_ch_in_radar_band
306 功能描述 : 判断某条信道是否为DFS信道
307*****************************************************************************/
308static INLINE__ oal_bool_enum_uint8 mac_is_ch_in_radar_band(mac_rc_start_freq_enum_uint8 band, osal_u8 chan_idx)
309{
310 mac_regclass_info_stru *rc_info;
311
312 rc_info = hmac_get_channel_idx_rc_info_etc(band, chan_idx);
313 if (osal_unlikely(rc_info == OSAL_NULL)) {
314 return OSAL_FALSE;
315 }
316
317 return mac_is_rc_dfs_req(rc_info);
318}
319
320/*****************************************************************************
321 函 数 名 : mac_is_dfs_channel
322 功能描述 : 判断信道是否是DFS信道
323*****************************************************************************/
324static INLINE__ oal_bool_enum_uint8 mac_is_dfs_channel(osal_u8 band, osal_u8 channel_num)
325{
326 osal_u8 channel_idx = 0xff;
327
328 if (hmac_get_channel_idx_from_num_etc(band, channel_num, &channel_idx) != OAL_SUCC) {
329 return OSAL_FALSE;
330 }
331
332 if (mac_is_ch_in_radar_band(band, channel_idx) == OSAL_FALSE) {
333 return OSAL_FALSE;
334 }
335
336 return OSAL_TRUE;
337}
338
339/*****************************************************************************
340 函 数 名 : mac_get_band_by_channel_num
341 功能描述 : 通过信道号找到频段,由调用者保证输入的信道号合法,从而降低本接口的复杂性,提高效率
342*****************************************************************************/
343static INLINE__ wlan_channel_band_enum_uint8 mac_get_band_by_channel_num(osal_u8 channel_num)
344{
345 return ((channel_num > MAX_CHANNEL_NUM_FREQ_2G) ? WLAN_BAND_5G : WLAN_BAND_2G);
346}
347
348/*****************************************************************************
349 函 数 名 : mac_is_ch_supp_in_regclass
350 功能描述 : 判断信道是否被管制类支持
351*****************************************************************************/
352static INLINE__ oal_bool_enum_uint8 mac_is_ch_supp_in_regclass(const mac_regclass_info_stru *rc_info, osal_u8 freq,
353 osal_u8 ch_idx)
354{
355 if (rc_info == OSAL_NULL) {
356 return OSAL_FALSE;
357 }
358
359 if (rc_info->start_freq != freq) {
360 return OSAL_FALSE;
361 }
362
363 if ((rc_info->channel_bmap & mac_get_ch_bit(ch_idx)) != 0) {
364 return OSAL_TRUE;
365 }
366
367 return OSAL_FALSE;
368}
369
370/*****************************************************************************
371 函 数 名 : mac_get_num_supp_channel
372 功能描述 : 获取当前频段所支持的最大信道数目
373*****************************************************************************/
374static INLINE__ osal_u8 mac_get_num_supp_channel(wlan_channel_band_enum_uint8 band)
375{
376 switch (band) {
377 case WLAN_BAND_2G: /* 2.4GHz */
379
380 case WLAN_BAND_5G: /* 5GHz */
382
383 default:
384 return 0;
385 }
386}
387
388/*****************************************************************************
389 函 数 名 : mac_get_sec_ch_idx_offset
390 功能描述 :
391*****************************************************************************/
392static INLINE__ osal_u8 mac_get_sec_ch_idx_offset(wlan_channel_band_enum_uint8 band)
393{
394 switch (band) {
395 case WLAN_BAND_2G: /* 2.4GHz */
397
398 case WLAN_BAND_5G: /* 5GHz */
400
401 default:
402 return 0;
403 }
404}
405
406/*****************************************************************************
407 函 数 名 : mac_get_affected_ch_idx_offset
408 功能描述 :
409*****************************************************************************/
410static INLINE__ osal_u8 mac_get_affected_ch_idx_offset(wlan_channel_band_enum_uint8 band)
411{
412 switch (band) {
413 case WLAN_BAND_2G: /* 2.4GHz */
415
416 case WLAN_BAND_5G: /* 5GHz */
418
419 default:
420 return 0;
421 }
422}
423
424#ifdef __cplusplus
425#if __cplusplus
426 }
427#endif
428#endif
429
430#endif /* end of mac_regdomain.h */
@ OAL_SUCC
Definition common_error_code_rom.h:18
#define osal_unlikely(x)
Definition dmac_misc_type.h:12
#define MAC_AFFECTED_CHAN_OFFSET_START_FREQ_5
Definition mac_regdomain.h:36
#define MAC_SEC_CHAN_INDEX_OFFSET_START_FREQ_5
Definition mac_regdomain.h:35
const mac_freq_channel_map_stru * hmac_regdomain_get_freq_map_5g_etc(osal_void)
osal_u8 mac_ch_spacing_enum_uint8
Definition mac_regdomain.h:71
osal_u32 hmac_is_channel_num_valid_etc(osal_u8 band, osal_u8 ch_num)
mac_regclass_info_stru * hmac_get_channel_num_rc_info_etc(osal_u8 band, osal_u8 ch_num)
mac_channel_freq_5_enum
Definition mac_regdomain.h:86
@ MAC_CHANNEL52
Definition mac_regdomain.h:91
@ MAC_CHANNEL149
Definition mac_regdomain.h:107
@ MAC_CHANNEL120
Definition mac_regdomain.h:100
@ MAC_CHANNEL60
Definition mac_regdomain.h:93
@ MAC_CHANNEL153
Definition mac_regdomain.h:108
@ MAC_CHANNEL124
Definition mac_regdomain.h:101
@ MAC_CHANNEL36
Definition mac_regdomain.h:87
@ MAC_CHANNEL132
Definition mac_regdomain.h:103
@ MAC_CHANNEL128
Definition mac_regdomain.h:102
@ MAC_CHANNEL188
Definition mac_regdomain.h:113
@ MAC_CHANNEL44
Definition mac_regdomain.h:89
@ MAC_CHANNEL104
Definition mac_regdomain.h:96
@ MAC_CHANNEL144
Definition mac_regdomain.h:106
@ MAC_CHANNEL100
Definition mac_regdomain.h:95
@ MAC_CHANNEL48
Definition mac_regdomain.h:90
@ MAC_CHANNEL56
Definition mac_regdomain.h:92
@ MAC_CHANNEL112
Definition mac_regdomain.h:98
@ MAC_CHANNEL165
Definition mac_regdomain.h:111
@ MAC_CHANNEL184
Definition mac_regdomain.h:112
@ MAC_CHANNEL_FREQ_5_BUTT
Definition mac_regdomain.h:116
@ MAC_CHANNEL192
Definition mac_regdomain.h:114
@ MAC_CHANNEL196
Definition mac_regdomain.h:115
@ MAC_CHANNEL140
Definition mac_regdomain.h:105
@ MAC_CHANNEL40
Definition mac_regdomain.h:88
@ MAC_CHANNEL64
Definition mac_regdomain.h:94
@ MAC_CHANNEL116
Definition mac_regdomain.h:99
@ MAC_CHANNEL108
Definition mac_regdomain.h:97
@ MAC_CHANNEL157
Definition mac_regdomain.h:109
@ MAC_CHANNEL136
Definition mac_regdomain.h:104
@ MAC_CHANNEL161
Definition mac_regdomain.h:110
void hmac_init_regdomain_etc(void)
void hmac_get_ext_chan_info(osal_u8 pri20_channel_idx, wlan_channel_bandwidth_enum_uint8 en_bandwidth, mac_channel_list_stru *chan_info)
mac_ch_spacing_enum
Definition mac_regdomain.h:61
@ MAC_CH_SPACING_80MHZ
Definition mac_regdomain.h:67
@ MAC_CH_SPACING_25MHZ
Definition mac_regdomain.h:65
@ MAC_CH_SPACING_BUTT
Definition mac_regdomain.h:69
@ MAC_CH_SPACING_20MHZ
Definition mac_regdomain.h:64
@ MAC_CH_SPACING_5MHZ
Definition mac_regdomain.h:62
@ MAC_CH_SPACING_40MHZ
Definition mac_regdomain.h:66
@ MAC_CH_SPACING_10MHZ
Definition mac_regdomain.h:63
#define MAC_SEC_CHAN_INDEX_OFFSET_START_FREQ_2
Definition mac_regdomain.h:37
osal_u32 hmac_regdomain_set_country_etc(osal_u16 len, osal_u8 *param)
#define mac_get_ch_bit(_val)
Definition mac_regdomain.h:28
@ CHANNEL_IDX_COUNT4
Definition mac_regdomain.h:189
@ CHANNEL_IDX_COUNT2
Definition mac_regdomain.h:187
@ CHANNEL_IDX_COUNT6
Definition mac_regdomain.h:191
@ CHANNEL_IDX_COUNT8
Definition mac_regdomain.h:193
@ CHANNEL_IDX_COUNT7
Definition mac_regdomain.h:192
@ CHANNEL_IDX_COUNT1
Definition mac_regdomain.h:186
@ CHANNEL_IDX_COUNT3
Definition mac_regdomain.h:188
@ CHANNEL_IDX_COUNT5
Definition mac_regdomain.h:190
osal_u32 hmac_is_channel_idx_valid_etc(osal_u8 band, osal_u8 ch_idx)
@ CHANNEL100
Definition mac_regdomain.h:174
@ CHANNEL1
Definition mac_regdomain.h:155
@ CHANNEL8
Definition mac_regdomain.h:162
@ CHANNEL10
Definition mac_regdomain.h:164
@ CHANNEL9
Definition mac_regdomain.h:163
@ CHANNEL2
Definition mac_regdomain.h:156
@ CHANNEL25
Definition mac_regdomain.h:171
@ CHANNEL184
Definition mac_regdomain.h:178
@ CHANNEL7
Definition mac_regdomain.h:161
@ CHANNEL149
Definition mac_regdomain.h:176
@ CHANNEL6
Definition mac_regdomain.h:160
@ CHANNEL165
Definition mac_regdomain.h:177
@ CHANNEL36
Definition mac_regdomain.h:172
@ CHANNEL64
Definition mac_regdomain.h:173
@ CHANNEL144
Definition mac_regdomain.h:175
@ CHANNEL14
Definition mac_regdomain.h:165
@ CHANNEL4
Definition mac_regdomain.h:158
@ CHANNEL196
Definition mac_regdomain.h:179
@ CHANNEL5
Definition mac_regdomain.h:159
@ CHANNEL3
Definition mac_regdomain.h:157
@ CHANNEL20
Definition mac_regdomain.h:170
osal_u8 mac_channel_freq_2_enum_uint8
Definition mac_regdomain.h:144
osal_u8 mac_rc_start_freq_enum_uint8
Definition mac_regdomain.h:58
mac_rc_start_freq_enum
Definition mac_regdomain.h:52
@ MAC_RC_START_FREQ_2
Definition mac_regdomain.h:53
@ MAC_RC_START_FREQ_5
Definition mac_regdomain.h:54
@ MAC_RC_START_FREQ_BUTT
Definition mac_regdomain.h:56
mac_channel_freq_2_enum
Definition mac_regdomain.h:121
@ MAC_CHANNEL7
Definition mac_regdomain.h:128
@ MAC_CHANNEL_FREQ_2_BUTT
Definition mac_regdomain.h:141
@ MAC_CHANNEL13
Definition mac_regdomain.h:134
@ MAC_CHANNEL11
Definition mac_regdomain.h:132
@ MAC_CHANNEL8
Definition mac_regdomain.h:129
@ MAC_CHANNEL2
Definition mac_regdomain.h:123
@ MAC_CHANNEL12
Definition mac_regdomain.h:133
@ MAC_CHANNEL4
Definition mac_regdomain.h:125
@ MAC_CHANNEL9
Definition mac_regdomain.h:130
@ MAC_CHANNEL6
Definition mac_regdomain.h:127
@ MAC_CHANNEL10
Definition mac_regdomain.h:131
@ MAC_CHANNEL1
Definition mac_regdomain.h:122
@ MAC_CHANNEL3
Definition mac_regdomain.h:124
@ MAC_CHANNEL14
Definition mac_regdomain.h:135
@ MAC_CHANNEL5
Definition mac_regdomain.h:126
oal_bool_enum_uint8 hmac_is_cover_dfs_channel(osal_u8 band, wlan_channel_bandwidth_enum_uint8 en_bandwidth, osal_u8 channel_num)
const mac_freq_channel_map_stru * hmac_regdomain_get_freq_map_2g_etc(osal_void)
wlan_channel_bandwidth_enum_uint8 hmac_regdomain_get_support_bw_mode(wlan_channel_bandwidth_enum_uint8 cfg_bw, osal_u8 channel)
#define MAC_MAX_20M_SUB_CH
Definition mac_regdomain.h:46
void hmac_init_channel_list_etc(void)
osal_u32 hmac_get_channel_num_from_idx_etc(osal_u8 band, osal_u8 idx, osal_u8 *channel_num)
mac_regclass_info_stru * hmac_get_channel_idx_rc_info_etc(osal_u8 band, osal_u8 ch_idx)
osal_bool hmac_regdomain_channel_is_support_bw(wlan_channel_bandwidth_enum_uint8 cfg_bw, osal_u8 channel)
#define MAX_CHANNEL_NUM_FREQ_2G
Definition mac_regdomain.h:43
osal_u32 hmac_get_channel_idx_from_num_etc(osal_u8 band, osal_u8 channel_num, osal_u8 *channel_idx)
mac_dfs_domain_enum
Definition mac_regdomain.h:74
@ MAC_DFS_DOMAIN_ETSI
Definition mac_regdomain.h:77
@ MAC_DFS_DOMAIN_MKK
Definition mac_regdomain.h:78
@ MAC_DFS_DOMAIN_NULL
Definition mac_regdomain.h:75
@ MAC_DFS_DOMAIN_KOREA
Definition mac_regdomain.h:79
@ MAC_DFS_DOMAIN_BUTT
Definition mac_regdomain.h:81
@ MAC_DFS_DOMAIN_FCC
Definition mac_regdomain.h:76
osal_u8 mac_channel_freq_5_enum_uint8
Definition mac_regdomain.h:118
void hmac_get_regdomain_info_etc(mac_regdomain_info_stru **rd_info)
osal_u8 mac_dfs_domain_enum_uint8
Definition mac_regdomain.h:83
mac_behaviour_bmap_enum
Definition mac_regdomain.h:147
@ MAC_RC_NO_OUTDOOR
Definition mac_regdomain.h:149
@ MAC_RC_DFS
Definition mac_regdomain.h:148
@ MAC_RC_NO_INDOOR
Definition mac_regdomain.h:150
#define MAC_AFFECTED_CHAN_OFFSET_START_FREQ_2
Definition mac_regdomain.h:38
osal_s8 * hmac_regdomain_get_country_etc(void)
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
#define INLINE__
Definition osal_list.h:25
unsigned char osal_u8
Definition osal_types.h:11
osal_u8 osal_bool
Definition osal_types.h:27
signed char osal_s8
Definition osal_types.h:17
#define OSAL_FALSE
Definition osal_types.h:56
#define OSAL_NULL
Definition osal_types.h:65
void osal_void
Definition osal_types.h:29
#define OSAL_TRUE
Definition osal_types.h:57
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition mac_regdomain.h:228
osal_void * mac_regdom
Definition mac_regdomain.h:229
Definition mac_regdomain.h:202
osal_u8 chan_number
Definition mac_regdomain.h:203
osal_u8 reg_class
Definition mac_regdomain.h:204
Definition mac_regdomain.h:214
osal_u32 channel
Definition mac_regdomain.h:215
Definition mac_regdomain.h:208
osal_u8 number
Definition mac_regdomain.h:210
osal_u8 idx
Definition mac_regdomain.h:211
osal_u16 freq
Definition mac_regdomain.h:209
Definition mac_regdomain.h:233
osal_u8 behaviour_bmap
Definition mac_regdomain.h:236
mac_ch_spacing_enum_uint8 ch_spacing
Definition mac_regdomain.h:235
mac_rc_start_freq_enum_uint8 start_freq
Definition mac_regdomain.h:234
osal_u32 channel_bmap
Definition mac_regdomain.h:241
osal_u8 max_reg_tx_pwr
Definition mac_regdomain.h:238
osal_u8 coverage_class
Definition mac_regdomain.h:237
osal_u16 max_tx_pwr
Definition mac_regdomain.h:239
Definition mac_regdomain.h:251
oal_bool_enum_uint8 sideband_country
Definition mac_regdomain.h:255
mac_dfs_domain_enum_uint8 dfs_domain
Definition mac_regdomain.h:253
osal_u8 regclass_num
Definition mac_regdomain.h:254
Definition mac_regdomain.h:219
osal_u8 cnt
Definition mac_regdomain.h:220
#define BIT1
Definition td_base.h:176
#define BIT2
Definition td_base.h:175
#define BIT0
Definition td_base.h:177
#define WLAN_MAX_RC_NUM
Definition wlan_spec_hh503.h:121
@ WLAN_BW_CAP_BUTT
Definition wlan_types.h:453
#define WLAN_COUNTRY_STR_LEN
Definition wlan_types.h:267
osal_u8 wlan_channel_bandwidth_enum_uint8
Definition wlan_types_base_rom.h:237
@ WLAN_BAND_2G
Definition wlan_types_base_rom.h:92
@ WLAN_BAND_5G
Definition wlan_types_base_rom.h:93
osal_u8 wlan_channel_band_enum_uint8
Definition wlan_types_base_rom.h:97