WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
hmac_scan.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2020. All rights reserved.
3 * Description: hmac_scan_rom.c 的头文件。
4 * Create: 2020-07-03
5 */
6
7#ifndef __HMAC_SCAN_H__
8#define __HMAC_SCAN_H__
9
10/*****************************************************************************
11 1 其他头文件包含
12*****************************************************************************/
13#include "oal_ext_if.h"
14#include "frw_ext_if.h"
15#include "hmac_vap.h"
16#include "mac_device_ext.h"
17#include "hmac_device.h"
18
19#ifdef __cplusplus
20#if __cplusplus
21extern "C" {
22#endif
23#endif
24
25#undef THIS_FILE_ID
26#define THIS_FILE_ID OAM_FILE_ID_HMAC_SCAN_H
27
28/*****************************************************************************
29 2 宏定义
30*****************************************************************************/
31#define HMAC_SCAN_CHANNEL_STATICS_PERIOD_US 15 /* MAC信道负载统计周期 15ms */
32#define HMAC_SCAN_CHANNEL_MEAS_PERIOD_MS 15 /* PHY空闲信道估计窗长15ms(最大15ms) */
33#define HMAC_SCAN_CTS_MAX_DURATION 32767
34#define HMAC_SCAN_MAX_TIMER (60 * 1000) /* 支持最大的timer时间 */
35#define HMAC_SCAN_CHANNEL_DWELL_TIME_MARGIN 2 /* ms */
36#define HMAC_SCAN_P2PGO_SEND_BEACON_TIME 10 /* ms, go tbtt中断后过多久切信道 */
37#define HMAC_SCAN_DBAC_SCAN_DELTA_TIME 1500 /* ms */
38#define HMAC_SCAN_GO_MAX_SCAN_TIME 300 /* ms */
39#define HMAC_SCAN_CHANENL_NUMS_TO_PRINT_SWITCH_INFO 14 /* 扫描信道数少于此才打印出切换到XX信道的信息 */
40#define HMAC_SCAN_TIMER_DEVIATION_TIME 20 /* 扫描定时器的执行误差时间ms */
41#define MSEC_TO_SEC 1000
42#define HMAC_SCAN_SHIFT 10 /* mac扫描周期单位由1kus转换为1us */
43
44/*****************************************************************************
45 3 枚举定义
46*****************************************************************************/
54
55/*****************************************************************************
56 7 STRUCT定义
57*****************************************************************************/
59 hal_ch_statics_irq_event_stru *stats_result);
61
63 const mac_scan_req_stru * const scan_req_params);
64
69
74/*****************************************************************************
75 8 内联函数定义
76*****************************************************************************/
77/*****************************************************************************
78 函 数 名 : hmac_scan_get_duty_cyc_ratio
79 功能描述 : 根据信道扫描结果和空闲时长获取占空比
80 [0-1000], 越大表示信道越忙
81 理论上
82 信道测量时间 = 信道空闲时间+ //能量低于CCA门限
83 空口的干扰时间+能量高于CCA门限,但是无法解析的能量信号(临频/叠频干扰)
84 信道发送时间+自身竞争获取到的发送时间
85 信道接收时间+空口中别的节点发送的时间
86 蓝牙中断的时间(optional)//蓝牙共存时,蓝牙收发占用的时间
87 所以通过测量到的信道空闲时间就可以用来表征当前信道的繁忙度。
88*****************************************************************************/
89static INLINE__ osal_u32 hmac_scan_get_duty_cyc_ratio(
90 const wlan_scan_chan_stats_stru* chan_result, osal_u32 total_free_time_us)
91{
92 return ((total_free_time_us > chan_result->total_stats_time_us) ? 0 :
93 ((chan_result->total_stats_time_us - total_free_time_us) * 1000 /
94 chan_result->total_stats_time_us));
95}
96
97/*****************************************************************************
98 函 数 名 : hmac_scan_get_valid_free_time
99 功能描述 : 判断每个周期的统计时间是否越界
100*****************************************************************************/
101static INLINE__ osal_u32 hmac_scan_get_valid_free_time(
102 osal_u32 trx_time, osal_u32 total_stat_time, osal_u32 total_free_time)
103{
104 return ((total_stat_time >= (trx_time + total_free_time)) ? total_free_time :
105 ((total_stat_time <= trx_time) ? 0 : (total_stat_time - trx_time)));
106}
107
108/*****************************************************************************
109 10 函数声明
110*****************************************************************************/
111
114 osal_u8 *go_on);
115osal_u32 hmac_scan_check_bss_type(const osal_u8 *frame_body, const mac_scan_req_stru *scan_params);
117 const mac_scan_req_stru * const scan_req_params);
120 hal_to_dmac_device_stru *hal_device);
122 const mac_channel_stru * const dst_chl, osal_u16 protect_time);
127
128/* 中断事件处理函数 */
130/* 初始化及释放函数 */
132
133/* 外部函数引用 */
135 const osal_char *ssid, osal_u32 ssid_len, osal_u8 is_send_cap_ie);
137 const mac_channel_stru *dst, osal_u16 protect_time);
140 const hal_scan_params_stru *hal_scan_params);
143
144/* 扫描入口钩子 */
146 const mac_scan_req_stru * const scan_req_params, osal_u8 *continue_flag);
147
148/*****************************************************************************
149 2 宏定义
150*****************************************************************************/
151
152/* 扫描到的bss的老化时间,小于此值,下发新扫描请求时,不删除此bss信息 */
153#define HMAC_SCAN_MAX_SCANNED_BSS_EXPIRE 25000 /* 25000 milliseconds */
154
155/* 扫描结果中有效性高的时间范围,可用于漫游目标的挑选等操作 */
156#define HMAC_SCAN_MAX_VALID_SCANNED_BSS_EXPIRE 5000 /* 5000 milliseconds */
157
158/* 扫描结果中DFS信道有效性高的时间范围,可用于漫游目标的挑选等操作 */
159#define HMAC_SCAN_MAX_VALID_SCANNED_DFS_EXPIRE 15000 /* 15000 milliseconds */
160
161/* 扫描到的bss的rssi老化时间 */
162#define HMAC_SCAN_MAX_SCANNED_RSSI_EXPIRE 1000 /* 1000 milliseconds */
163
164#define HMAC_INIT_SCAN_TIMEOUT_MS 10000
165/* 扫描到的bss的rssi信号门限,门限以下不考虑对obss的影响 */
166#define HMAC_OBSS_RSSI_TH (-85)
167
168/* multi bssid场景中,maxbssid_indicator最大规格为8 */
169#define HMAC_MULTI_MAX_BSSID_INDICATOR 8
170
171/* 在Multiple BSSID-Index element中包含DTIM count/period字段的时候,其element len长度为3 */
172#define MULTI_DTIM_PERIOD_COUNT_LEN 3
173
174#define EXT_CAPA_GET_MULTI_BSSID_LEN 2
175
176#define MULTI_BSSID_ELEMENT_MIN_LEN 5
177
184
193
194/* 存储单个nontrans_bssid_profile信息 */
195typedef struct {
196 struct osal_list_head dlist_head; /* 链表指针 */
200
201/*****************************************************************************
202 10 函数声明
203*****************************************************************************/
204/* HMAC SCAN对外接口 */
206
208 osal_u32 bss_index);
210 const osal_u8 *bssid);
214 hmac_scanned_bss_info *bss_buf, osal_u16 buf_size);
218#ifdef _PRE_WLAN_FEATURE_PNO_SCAN
219osal_u32 hmac_scan_proc_sched_scan_req_event_etc(hmac_vap_stru *hmac_vap, osal_void *p_params);
220
221/* 停止定时器 */
222osal_void hmac_scan_stop_pno_sched_scan_timer(mac_pno_sched_scan_mgmt_stru *pno_mgmt);
223#endif
224
229#ifdef _PRE_WLAN_FEATURE_WS92_MERGE
230osal_s32 hmac_scan_clean_result(hmac_vap_stru *hmac_vap, frw_msg *msg);
231osal_s32 hmac_scan_handle_app_service(hmac_vap_stru *hmac_vap, frw_msg *msg);
232#endif
234 osal_u8 channel_num_2g);
236 osal_u8 *sour_mac_addr, oal_bool_enum_uint8 is_rand_mac_scan);
244
245#ifdef __cplusplus
246#if __cplusplus
247}
248#endif
249#endif
250
251#endif /* end of hmac_scan.h */
osal_void hmac_scan_set_probe_req_del_wps_ie_cfg(osal_u8 probe_req_del_wps_ie)
osal_void hmac_scan_exit_etc(hmac_device_stru *hmac_device)
osal_void hmac_scan_set_sour_mac_addr_in_probe_req_etc(hmac_vap_stru *hmac_vap, osal_u8 *sour_mac_addr, oal_bool_enum_uint8 is_rand_mac_scan)
osal_void hmac_scan_switch_home_channel_work(hmac_device_stru *hmac_device, hal_to_dmac_device_stru *hal_device)
osal_u32 hmac_scan_handle_scan_req_entry_ext(hmac_device_stru *hmac_device, hmac_vap_stru *hmac_vap, const mac_scan_req_stru *const scan_req_params, osal_u8 *continue_flag)
osal_u32 hmac_scan_mgmt_filter(hmac_vap_stru *hmac_vap, oal_netbuf_stru *netbuf, oal_bool_enum_uint8 *report_bss, osal_u8 *go_on)
osal_u32 hmac_scan_handle_scan_req_entry(hmac_device_stru *hmac_device, hmac_vap_stru *hmac_vap, const mac_scan_req_stru *const scan_req_params)
osal_void hmac_scan_clean_scan(hmac_scan_stru *scan)
osal_void hmac_scan_prepare_end(hmac_device_stru *hmac_device, hal_to_dmac_device_stru *hal_device)
osal_void hmac_scan_abort(hmac_device_stru *hmac_device)
osal_void hmac_switch_channel_off(hmac_device_stru *hmac_device, hmac_vap_stru *hmac_vap, const mac_channel_stru *const dst_chl, osal_u16 protect_time)
oal_bool_enum_uint8 hmac_scan_switch_channel_back(hmac_device_stru *hmac_device, hal_to_dmac_device_stru *hal_device)
osal_void hmac_scan_handle_switch_channel_back(hmac_device_stru *hmac_device, hal_to_dmac_device_stru *hal_device, const hal_scan_params_stru *hal_scan_params)
hmac_scanned_bss_info * hmac_scan_alloc_scanned_bss(osal_u32 mgmt_len)
osal_void hmac_scan_end(hmac_device_stru *hmac_device)
osal_void(* p_dmac_scan_calcu_channel_ratio_cb)(hal_to_dmac_device_stru *hal_device)
Definition hmac_scan.h:60
osal_void hmac_scan_print_scanned_bss_info_etc(osal_u8 device_id)
osal_void hmac_scan_switch_channel_off(const hmac_device_stru *hmac_device)
osal_void * hmac_scan_get_scanned_bss_by_bssid(hmac_vap_stru *hmac_vap, osal_u8 *mac_addr)
osal_void hmac_scan_one_channel_start(hal_to_dmac_device_stru *hal_device, oal_bool_enum_uint8 is_scan_start)
osal_s32 hmac_config_set_scan_param(hmac_vap_stru *hmac_vap, frw_msg *msg)
osal_u32 hmac_scan_proc_check_ssid(const osal_u8 *ssid, osal_u8 ssid_len)
osal_u32 hmac_scan_get_scanned_bss_item_by_bssid(hmac_vap_stru *hmac_vap, osal_u8 *addr, hmac_scanned_bss_info *bss_buf, osal_u16 buf_size)
osal_u32 hmac_scan_proc_scan_complete_event(hmac_vap_stru *hmac_vap, mac_scan_status_enum_uint8 scan_rsp_status)
osal_u32 hmac_scan_send_probe_req_frame(hmac_vap_stru *hmac_vap, const osal_u8 *bssid, const osal_char *ssid, osal_u32 ssid_len, osal_u8 is_send_cap_ie)
osal_s32 hmac_scan_process_chan_result_event_etc(hmac_crx_chan_result_stru *chan_result_param)
osal_void hmac_scan_set_probe_req_all_ie_cfg(osal_u8 probe_req_all_ie)
osal_void hmac_scan_delete_bss(hmac_vap_stru *hmac_vap, const osal_u8 *bssid)
osal_u32 hmac_scan_proc_scan_req_event_exception_etc(hmac_vap_stru *hmac_vap, osal_void *p_params)
osal_void hmac_scan_calcu_channel_ratio(hal_to_dmac_device_stru *hal_device)
osal_u32 hmac_scan_proc_scan_req_event_etc(hmac_vap_stru *hmac_vap, osal_void *p_params)
osal_u32 hmac_scan_check_bss_type(const osal_u8 *frame_body, const mac_scan_req_stru *scan_params)
osal_void(* p_dmac_scan_get_ch_statics_measurement_result_cb)(const hal_to_dmac_device_stru *hal_device, hal_ch_statics_irq_event_stru *stats_result)
Definition hmac_scan.h:58
osal_u8 scan_check_assoc_channel_enum_uint8
Definition hmac_scan.h:53
scan_check_assoc_channel_enum
Definition hmac_scan.h:47
@ SCAN_CHECK_ASSOC_CHANNEL_BUTT
Definition hmac_scan.h:51
@ SCAN_CHECK_ASSOC_CHANNEL_CSA
Definition hmac_scan.h:49
@ SCAN_CHECK_ASSOC_CHANNEL_LINKLOSS
Definition hmac_scan.h:48
osal_void hmac_scan_handle_channel_randomzie(mac_scan_req_stru *scan_params, osal_u8 channel_num_5g, osal_u8 channel_num_2g)
osal_u8 hmac_scan_get_probe_req_del_wps_ie_cfg(osal_void)
osal_void hmac_dbac_switch_channel_off(hmac_device_stru *hmac_device, hmac_vap_stru *mac_vap1, hmac_vap_stru *mac_vap2, const mac_channel_stru *dst, osal_u16 protect_time)
osal_s32 hmac_scan_channel_statistics_complete(hmac_vap_stru *hmac_vap, frw_msg *msg)
osal_void hmac_scan_init_etc(hmac_device_stru *hmac_device)
osal_s32 hmac_scan_proc_scan_comp_event_etc(hmac_vap_stru *hmac_vap, mac_scan_rsp_stru *scan_rsp_info)
scan_random_mac_type
Definition hmac_scan.h:178
@ SCAN_RANDOM_WITH_OUI
Definition hmac_scan.h:180
@ SCAN_RANDOM_FORCE
Definition hmac_scan.h:181
@ SCAN_RANDOM_MAX
Definition hmac_scan.h:182
@ SCAN_RANDOM_CLOSE
Definition hmac_scan.h:179
osal_u32(* hmac_scan_req_entry_cb)(hmac_device_stru *hmac_device, hmac_vap_stru *hmac_vap, const mac_scan_req_stru *const scan_req_params)
Definition hmac_scan.h:62
hmac_scanned_bss_info * hmac_scan_find_scanned_bss_by_bssid_etc(hmac_bss_mgmt_stru *bss_mgmt, const osal_u8 *bssid)
osal_u8 hmac_scan_get_probe_req_all_ie_cfg(osal_void)
mac_bss_dscr_stru * hmac_scan_find_scanned_bss_dscr_by_index_etc(osal_u8 device_id, osal_u32 bss_index)
osal_u32 hmac_scan_init(hmac_device_stru *hmac_device)
osal_void hmac_scan_begin(hmac_device_stru *hmac_device, hal_to_dmac_device_stru *hal_device)
osal_u8 mac_scan_status_enum_uint8
Definition mac_device_ext.h:509
#define WLAN_MGMT_NETBUF_SIZE
Definition oal_mem_pool.h:86
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
#define INLINE__
Definition osal_list.h:25
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
char osal_char
Definition osal_types.h:16
void osal_void
Definition osal_types.h:29
unsigned int osal_u32
Definition osal_types.h:13
unsigned short osal_u16
Definition osal_types.h:12
Definition frw_msg_rom.h:74
Definition hal_common_ops_device_rom.h:1022
Definition hal_ops_common_rom.h:405
Definition mac_device_ext.h:415
Definition dmac_ext_if_hcm.h:387
Definition mac_device_ext.h:856
Definition hmac_scan.h:70
osal_u8 channel_num_offset
Definition hmac_scan.h:71
wlan_channel_bandwidth_enum_uint8 bandwidth
Definition hmac_scan.h:72
Definition hmac_scan.h:65
p_dmac_scan_calcu_channel_ratio_cb hmac_scan_calcu_channel_ratio
Definition hmac_scan.h:67
p_dmac_scan_get_ch_statics_measurement_result_cb hmac_scan_get_ch_statics_measurement_result
Definition hmac_scan.h:66
Definition mac_device_ext.h:572
Definition hmac_device.h:72
Definition hmac_scan.h:185
osal_u8 period_count_valid
Definition hmac_scan.h:190
osal_u8 dtim_count
Definition hmac_scan.h:189
osal_u8 resv
Definition hmac_scan.h:191
mac_scanned_all_bss_info * all_bss_info
Definition hmac_scan.h:186
osal_u8 dtim_period
Definition hmac_scan.h:188
Definition hmac_scan.h:195
osal_u32 frame_len
Definition hmac_scan.h:198
Definition mac_vap_ext.h:2019
Definition mac_device_ext.h:596
Definition wlan_types_base_rom.h:258
Definition mac_device_ext.h:682
Definition mac_device_ext.h:512
Definition wlan_resource_common_rom.h:211
Definition osal_list.h:39
Definition oal_skbuff.h:82
Definition hal_ops_common_rom.h:529
Definition wlan_types.h:783
td_u32 total_stats_time_us
Definition wlan_types.h:797
osal_u8 wlan_channel_bandwidth_enum_uint8
Definition wlan_types_base_rom.h:237