WS63 SDK 文档
7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
alg_autorate_common_rom.h
浏览该文件的文档.
1
/*
2
* Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2020-2022. All rights reserved.
3
* Description: autorate common
4
*/
5
6
#ifndef __ALG_AUTORATE_COMMON_ROM_H__
7
#define __ALG_AUTORATE_COMMON_ROM_H__
8
9
#include "
td_type.h
"
10
#include "
hal_commom_ops_type_rom.h
"
11
#include "
osal_types.h
"
12
13
#ifdef __cplusplus
14
#if __cplusplus
15
extern
"C"
{
16
#endif
17
#endif
18
/*****************************************************************************
19
1 宏定义
20
*****************************************************************************/
21
#define ALG_AUTOARTE_EACH_RATE_MIN_TX_COUNT 3
/* 每个速率等级的最小重传次数 */
22
23
#define ALG_AR_INITIAL_STAGE_PKT_CNT_THRD 3
/* 初始阶段发包个数门限 */
24
#define ALG_AUTORATE_CONSECUTIVE_ALL_FAIL_DEFAULT_THRD 5
/* 连续所有rank发送失败的PPDU包默认容忍个数门限 */
25
#define ALG_AUTORATE_COLLISION_TOLERANT_PPDU_CNT_THRD 1
/* 容忍疑似碰撞的PPDU个数阈值 */
26
#define ALG_AUTORATE_COLLISION_INSTANT_PER_THRD 512
/* 疑似碰撞 instant PER门限值 */
27
#define ALG_AUTORATE_RATE_AGING_TIME_MS 5000
/* 速率老化的时间门限(单位:ms) */
28
#define ALG_AUTORATE_PROBE_AGING_TIME_MS 1500
/* 探测老化时间门限 */
29
#define ALG_AUTORATE_SHORT_STAT_SHIFT 3
/* 默认短期统计的除2位移值 */
30
#define ALG_AUTORATE_LONG_STAT_SHIFT 4
/* 默认长期统计的除2位移值 */
31
#define ALG_AUTORATE_NON_AGGR_SMOOTH_SCALE 1
/* 非聚合的统计量平滑缩放比例(N表示非聚合相对于聚合, 平滑窗口乘2^N) */
32
#define ALG_AUTORATE_DELTA_GOODPUT_RATIO 200
/* 默认goodput突变的比例(%) */
33
#define ALG_AUTORATE_DELTA_BAD_GOODPUT_RATIO 150
/* 默认goodput突变不好的比例(%) */
34
#define ALG_AUTORATE_MCS_UP_RESERVE_RATE_BETTER_PER_THRD 250
/* phase1 向上探测预留速率判别变优的PER门限 */
35
#define ALG_AR_PROBE_DIFF_NSS_GAIN_TH 50
/* 不同nss之间探测时,增益千分比超过门限才会切换 */
36
#define ALG_AR_PROBE_SAME_NSS_GI_GAIN_TH 15
/* 相同nss GI,不同mcs之间探测时,增益千分比超过门限才会切换 */
37
#define ALG_AR_GI_GOODPUT_GAIN_TH 50
/* GI切换时, 增益阈值 */
38
#define ALG_AR_PROBE_OTHER_NSS_GAIN_BEYOND_BEST_NSS_TH 20
/* OTHER_NSS 需要优于 BEST_NSS 千分比才可切换 */
39
#define ALG_AUTORATE_DESCEND_PROTOCOL_PER_TH 1024
/* 降协议PER门限值 */
40
#define ALG_AUTORATE_11B_ASCEND_PROTOCOL_PER_TH 300
/* 11b升协议PER门限值 */
41
#define ALG_AUTORATE_11A_ASCEND_PROTOCOL_PER_TH 100
/* 11a升协议PER门限值 */
42
#define ALG_AUTORATE_11B_DESCEND_PROTOCOL_RSSI_TH (-70)
/* 降11b协议,rssi门限 */
43
#define ALG_AUTORATE_INTF_ADJ_MIN_TH 100
/* 邻频、叠频干扰繁忙度最小门限 */
44
#define ALG_AUTORATE_INTF_ADJ_MAX_TH 500
/* 邻频、叠频干扰繁忙度最大门限 */
45
#define ALG_AUTORATE_DESCEND_BW_GDPT_BETTER_THRD 50
/* 自动带宽特性降带宽探测速率较最优速率gdpt优千分数阈值 */
46
#define ALG_AUTORATE_ASCEND_BW_GDPT_BETTER_THRD 30
/* 自动带宽特性升带宽探测速率较最优速率gdpt优千分数阈值 */
47
#define ALG_AUTORATE_DESCEND_BW_EVENT_TRIG_PER_THRD 500
/* 事件触发降带宽探测PER门限 */
48
#define ALG_AUTORATE_DESCEND_BW_MAX_EVENT_TRIG_PKTCNT_THRD 5
/* 事件触发降带宽探测计数阈值,超过去使能事件触发降带宽 */
49
#define ALG_AUTORATE_ASCEND_BW_RATE_KEEPCNT_THRD 3
/* 升带宽速率较优保持计数门限 */
50
#define ALG_AUTORATE_DESCEND_BW_RATE_KEEPCNT_THRD 3
/* 降带宽速率较优保持计数门限 */
51
#define ALG_AUTORATE_BW_MIN_PROBE_INTVL_PKTNUM 16
/* 带宽最小探测包间隔门限 */
52
#define ALG_AUTORATE_MIN_PROBE_INTVL_PKTNUM 8
/* 默认最小探测间隔包数目 */
53
#define ALG_AUTORATE_MAX_PROBE_INTVL_PKTNUM 128
/* 默认最大探测间隔包数目 */
54
#define ALG_AUTORATE_PROBE_INTVL_KEEP_TIMES 4
/* 默认探测间隔保持的次数 */
55
#define ALG_AR_INITIAL_STAGE_RSSI_TOLERANT 10
/* 根据rssi估计用户最优速率,rssi回退值, \
56
FPGA上板实测 -51db最高mcs6能通, backoff 15db */
57
#define ALG_AUTORATE_PROBE_CROSS_BW_MAX_MCS_DIFF 3
/* 自动带宽探测mcs最大差值 */
58
#define ALG_AUTORATE_PROBE_UP_SHORT_GI_STOP_PROBE_PER_THRD 600
/* 升mcs探测short gi时,首个探测点per大于门限,停止探测 */
59
#define ALG_AR_PROBE_DOWN_CONTINUE_PER_TH 1000
/* 超过该阈值会继续向下探测 */
60
#define ALG_AUTORATE_PROBE_DOWN_PER_TH 500
/* 立即向下探测的PER门限(单位:千分数) */
61
#define ALG_AR_CROSS_NSS_NEED_ADJUST_RATE_CNT 5
62
#define ALG_AR_RATE_BAD_THRD 700
63
#define ALG_AUTORATE_MCS_UP_RESERVE_RATE_BETTER_PER_THRD 250
/* mcs 向上探测预留速率判别变优的PER门限 */
64
#define ALG_AUTORATE_MCS_UP_RESERVE_RATE_BETTER_PROBE_THRD 32
/* mcs 向上探测预留速率判别变优下的探测门限上限 */
65
#define ALG_AUTORATE_MAX_PROBE_WAIT_COUNT 100
/* 等待探测结果的最大发送完成中断次数(避免中断丢失导致状态异常) */
66
#define ALG_AUTORATE_PROBE_MIN_MPDU_NUM 4
/* mcs探测速率发送最小mpdu数 */
67
68
/* SMOOTH PER */
69
#define ALG_AUTORATE_NROMAL_PKT_INIT_PER_LIMIT 200
/* 非聚合包 PER为0 或 老化后 首次更新PER上限限制值 */
70
#define ALG_AUTORATE_AGGR_PKT_INIT_PER_LIMIT 100
/* 聚合包 PER为0 或 老化后 聚合个数不多于2 首次更新PER上限限制值 */
71
#define ALG_AUTORATE_AGGR_MIN_MPDU_CNT_THRD 2
/* 聚合模式下 MPDU 数下限 */
72
#define ALG_AR_SMALL_AMPDU_SHORT_PER_SMOOTH 3
/* 聚合个数小于门限(2)的short per 平滑系数 */
73
#define ALG_AR_SMALL_AMPDU_LONG_PER_SMOOTH 4
/* 聚合个数小于门限(2)的long per 平滑系数 */
74
#define ALG_AR_SMOOTH_PER_OPT_TH 500
/* 采用固定参数方式平滑per,short per需要达到的阈值 */
75
#define ALG_AR_SMOOTH_PER_OPT_DIFF_TH 100
/* 采用固定参数方式平滑per,instant per比short per大的阈值 */
76
#define ALG_AR_SMOOTH_PER_OPT_SHORT_CHANGE 100
/* 采用固定参数方式平滑per,short per的平滑值 */
77
#define ALG_AR_SMOOTH_PER_OPT_LONG_CHANGE 50
/* 采用固定参数方式平滑per,long per的平滑值 */
78
#define ALG_AR_SMOOTH_PER_BAD_TH 1000
/* 平滑之后的per超过该阈值会直接使用1024 */
79
#define ALG_AUTORATE_PROBE_MCS_LARGE_AGGR_SMOOTH_PARAM 2
/* mcs高聚合探测帧per平滑系数 */
80
#define ALG_AUTORATE_PROBE_MCS_SMALL_AGGR_SMOOTH_PARAM 3
/* mcs少探测帧per平滑系数 */
81
#define ALG_AUTORATE_PROBE_BW_PER_SMOOTH_PARAM 2
/* bw探测帧per平滑系数 */
82
#define ALG_AUTORATE_PROBE_PROTOCOL_PER_SMOOTH_PARAM 1
/* protocol探测帧per平滑系数 */
83
#define ALG_AR_PROBE_PER_BETTER_TH 200
/* 探测时per变好的阈值 */
84
#define ALG_AUTORATE_PROBE_SMOOTH_RECORD_PER_TH 50
/* 探测过程中, 平滑rate_record的PER门限值(千分数) */
85
#define ALG_AR_RSSI_SUDDEN_PER_TH 200
/* rssi突降5db以上,固定参数平滑short per */
86
#define ALG_AR_RSSI_SUDDEN_TH 5
/* rssi突降门限 */
87
88
/*****************************************************************************
89
2 枚举定义
90
*****************************************************************************/
91
typedef
enum
{
92
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_PRE_PROBE
,
93
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_EXISTING_RATE_SET_INFO
,
94
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_TX_INSTANT_RESULT
,
95
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_SNR_PER_CURVE
,
96
97
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_BUTT
98
}
alg_autorate_probe_per_init_strategy_enum
;
99
typedef
osal_u8
alg_autorate_probe_per_init_strategy_enum_uint8
;
100
/*****************************************************************************
101
3 STRUCT定义
102
*****************************************************************************/
103
/* 每个rank的固定速率信息 */
104
typedef
struct
{
105
osal_u32
bit_protocol_mode : 3;
/* wlan_phy_protocol_enum */
106
osal_u32
bit_freq_bw : 3;
/* hal_channel_assemble_enum */
107
osal_u32
bit_preamble : 1;
/* wlan_phy_preamble_type */
108
osal_u32
bit_fec_coding : 1;
/* wlan_channel_code_enum */
109
osal_u32
bit_gi_type : 2;
/* wlan_phy_he_gi_type_enum_uint8 */
110
osal_u32
bit_ltf_type : 2;
/* wlan_phy_he_ltf_type_enum */
111
osal_u32
bit_tx_count : 3;
/* 发送次数 */
112
osal_u32
bit_ppdu_dcm : 1;
/* wlan_phy_dcm_status */
113
osal_u32
bit_nss_rate : 6;
/* wlan_phy_rate_enum */
114
osal_u32
bit_resv : 10;
115
}
alg_autorate_tx_fix_rate_rank_stru
;
116
117
/* 统计信息结构体 */
118
typedef
struct
{
119
osal_u16
short_per;
/* 该速率短期平均的PER(千分数) */
120
osal_u16
long_per;
/* 该速率长期平均的PER(千分数) */
121
osal_u32
rate_last_used_time_ms;
/* rate级别最后的使用的时间 */
122
osal_u32
theory_goodput;
/* 对应带宽下该速率的理论goodput */
123
}
alg_autorate_rate_stat_info_stru
;
124
125
/* 固定速率结构体 */
126
typedef
struct
{
127
alg_autorate_tx_fix_rate_rank_stru
tx_rate[
HAL_TX_RATE_MAX_NUM
];
128
alg_autorate_rate_stat_info_stru
rate_stat[
HAL_TX_RATE_MAX_NUM
];
129
}
alg_autorate_fix_rate_stru
;
130
131
/* 速率自适应算法 DEV级别 结构体 */
132
typedef
struct
{
133
/* 功能开关 */
134
osal_u8
enable;
/* 1:算法使能 , 0:算法不使能 */
135
osal_u8
enable_cross_protocol;
/* 是否使能动态协议策略 */
136
osal_u8
enable_auto_bw;
/* 是否使能自动带宽 */
137
osal_u8
enable_event_trig_descend_bw;
/* 是否使能事件触发降带宽开关 */
138
osal_u8
fix_rate_mode;
/* 1:固定速率 , 0:自动速率 */
139
osal_u8
initial_stage_pkt_cnt_thrd;
/* 初始阶段发包个数门限 */
140
osal_u8
enable_ar_log;
/* ar_stat log record enable */
141
142
/* 速率统计相关 */
143
osal_u8
short_stat_shift;
/* 短期统计的平滑因子 */
144
osal_u8
long_stat_shift;
/* 长期统计的平滑因子 */
145
osal_u8
non_aggr_smooth_scale;
/* 非聚合统计量平滑缩放比例 */
146
147
/* 辅20忙识别相关,用于事件触发降带宽 */
148
osal_u16
intf_adj_min_th;
/* 邻频、叠频干扰繁忙度最小阈值 */
149
osal_u16
intf_adj_max_th;
/* 邻频、叠频干扰繁忙度最大阈值 */
150
osal_u8
sec20_is_busy;
/* 辅20忙 */
151
152
/* 碰撞检测相关 */
153
osal_u8
max_probe_wait_cnt;
/* 等待探测结果的最大发送完成中断次数(避免中断丢失导致状态异常) */
154
osal_u8
consecutive_all_fail_th;
/* 连续所有rank发送失败的PPDU包容忍个数 */
155
osal_u8
collision_tolerant_ppdu_cnt_thrd;
/* 容忍疑似碰撞的PPDU个数阈值, 越大越稳定, 但反应随之减缓 */
156
osal_u16
collision_instant_per_th;
/* 疑似碰撞 instant PER门限值 */
157
158
/* 探测相关 */
159
alg_autorate_probe_per_init_strategy_enum_uint8
en_probe_per_init_strategy;
/* 探测速率初始PER赋值策略 */
160
osal_u8
mcs_up_resv_rate_better_probe_thrd;
/* mcs 向上探测预留速率判别变优下的探测门限上限 */
161
osal_u8
max_probe_intvl_pktnum;
/* 最大探测间隔包数目,后需要用宏定义替代,不再定义结构体成员 */
162
osal_u8
min_probe_intvl_pktnum;
/* 最小探测间隔包数目,后需要用宏定义替代,不再定义结构体成员 */
163
164
osal_u8
probe_intvl_keep_times;
/* 默认探测间隔保持的次数 */
165
osal_u8
rssi_sudden_th;
/* rssi突降门限 */
166
osal_u16
rssi_sudden_per_th;
/* rssi突降5db以上,固定参数平滑short per */
167
168
osal_u16
probe_down_per_th;
/* 立即向下探测的PER门限(单位:千分数) */
169
osal_u16
sudden_good_delta_gdpt_ratio;
/* 事件触发向上探测 gdpt 变化比例 */
170
osal_u16
sudden_bad_delta_gdpt_ratio;
/* 事件触发向下探测 gdpt 变化比例 */
171
osal_u16
continue_probe_down_per_th;
/* 超过该阈值会继续向下探测 */
172
173
osal_u16
cross_gi_probe_stop_per_th;
/* 升mcs探测short gi时,首个探测点per大于门限,停止探测 */
174
osal_u16
normal_pkt_init_per_limit;
/* 非聚合包 PER为0 或 老化后 首次更新PER上限限制值 */
175
osal_u16
aggr_pkt_init_per_limit;
/* 聚合包 PER为0 或 老化后 聚合个数不多于2 首次更新PER上限限制值 */
176
osal_u16
smooth_per_opt_th;
/* 采用固定参数方式平滑per,short per需要达到的阈值 */
177
178
osal_u16
smooth_per_opt_diff_th;
/* 采用固定参数方式平滑per,instant per比short per大的阈值 */
179
osal_u16
smooth_per_opt_th_short_change;
/* 采用固定参数方式平滑per,short per的平滑值 */
180
osal_u16
smooth_per_opt_th_long_change;
/* 采用固定参数方式平滑per,long per的平滑值 */
181
osal_u16
smooth_per_bad_th;
/* 平滑之后的per超过该阈值会直接使用1024 */
182
183
osal_u16
probe_per_better_th;
/* 探测时per变好的阈值 */
184
osal_u16
mcs_up_reserve_rate_better_per_thrd;
/* phase1 向上探测预留速率判别变优的PER门限 */
185
osal_u16
probe_best_update_same_nss_gi_th;
/* 相同nss gi之间探测时切换mcs的增益阈值(千分比) */
186
osal_u16
probe_best_update_diff_nss_th;
/* 不同nss之间探测时切换mcs的增益阈值(千分比) */
187
188
osal_u16
probe_best_update_other_nss_gain_th;
/* OTHER_NSS 需要优于 BEST_NSS 千分比才可切换 */
189
osal_u16
probe_best_update_gi_th;
/* 相同nss之间探测时切换gi的增益阈值(千分比) */
190
osal_u16
probe_smooth_record_per_th;
/* 探测过程中, 平滑rate_record的PER门限值(千分数) */
191
osal_u16
descend_protocol_per_th;
/* 降协议PER门限值 */
192
193
osal_u16
ar_11b_ascend_protocol_per_th;
/* 11b升协议PER门限值 */
194
osal_u16
ar_11a_ascend_protocol_per_th;
/* 11a升协议PER门限值 */
195
196
hal_alg_intf_det_mode_enum_uint8
adjch_intf_type;
/* 邻叠频干扰状态 */
197
osal_s8
descend_protocol_11b_rssi_th;
/* 11b降协议RSSI门限 */
198
osal_u8
aggr_min_mpdu_cnt_thrd;
/* 聚合模式下 MPDU 数下限 */
199
osal_u8
small_ampdu_short_per_smooth;
/* 聚合个数小于门限(2)的short per 平滑系数 */
200
osal_u8
small_ampdu_long_per_smooth;
/* 聚合个数小于门限(2)的long per 平滑系数 */
201
osal_u8
probe_mcs_large_aggr_smooth;
/* mcs高聚合探测帧per平滑系数 */
202
osal_u8
probe_mcs_small_aggr_smooth;
/* mcs少探测帧per平滑系数 */
203
osal_u8
probe_bw_per_smooth;
/* bw探测帧per平滑系数 */
204
205
osal_u8
probe_protocol_per_smooth;
/* protocol探测帧per平滑系数 */
206
osal_u8
initial_stage_rssi_tolerant;
/* 根据rssi估计用户最优速率,rssi回退值 */
207
osal_u8
descend_bw_event_trig_cnt_thrd;
/* 事件触发降带宽探测计数阈值,超过阈值去使能事件触发降带宽 */
208
osal_u8
ascend_bw_rate_keep_cnt_thrd;
/* 升带宽速率较优保持计数门限 */
209
210
osal_u8
descend_bw_rate_keep_cnt_thrd;
/* 降带宽速率较优保持计数门限 */
211
osal_u8
bw_probe_pktcnt_min_thrd;
/* 带宽最小探测包间隔门限 */
212
osal_u16
descend_bw_gdpt_better_thrd;
/* 自动带宽特性降带宽探测速率较最优速率gdpt优千分数阈值 */
213
osal_u16
ascend_bw_gdpt_better_thrd;
/* 自动带宽特性升带宽探测速率较最优速率gdpt优千分数阈值 */
214
osal_u16
descend_bw_event_trig_per_thrd;
/* 事件触发降带宽探测PER门限 */
215
osal_u16
probe_min_mpdu_num;
/* mcs探测速率发送最小mpdu数 */
216
osal_u16
rev;
217
/* 速率统计相关 */
218
osal_u32
rate_aging_time_ms;
/* 速率老化时间(单位:ms) */
219
osal_u32
stat_aging_time;
/* 探测老化时间门限 */
220
221
alg_autorate_tx_fix_rate_rank_stru
slp_frame_rate[
HAL_TX_RATE_MAX_NUM
];
/* slp帧类型使用的速率 */
222
223
/* 固定速率统计参数 */
224
alg_autorate_fix_rate_stru
fix_rate;
225
}
alg_autorate_dev_stru
;
226
227
#ifdef __cplusplus
228
#if __cplusplus
229
}
230
#endif
231
#endif
232
233
#endif
/* end of alg_autorate_common.h */
alg_autorate_probe_per_init_strategy_enum
alg_autorate_probe_per_init_strategy_enum
Definition
alg_autorate_common_rom.h:90
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_TX_INSTANT_RESULT
@ ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_TX_INSTANT_RESULT
Definition
alg_autorate_common_rom.h:93
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_PRE_PROBE
@ ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_PRE_PROBE
Definition
alg_autorate_common_rom.h:91
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_BUTT
@ ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_BUTT
Definition
alg_autorate_common_rom.h:96
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_EXISTING_RATE_SET_INFO
@ ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_EXISTING_RATE_SET_INFO
Definition
alg_autorate_common_rom.h:92
ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_SNR_PER_CURVE
@ ALG_AUTORATE_PROBE_PER_INIT_STRATEGY_WITH_SNR_PER_CURVE
Definition
alg_autorate_common_rom.h:94
alg_autorate_probe_per_init_strategy_enum_uint8
osal_u8 alg_autorate_probe_per_init_strategy_enum_uint8
Definition
alg_autorate_common_rom.h:98
hal_commom_ops_type_rom.h
hal_alg_intf_det_mode_enum_uint8
osal_u8 hal_alg_intf_det_mode_enum_uint8
Definition
hal_commom_ops_type_rom.h:276
osal_types.h
osal_u8
unsigned char osal_u8
Definition
osal_types.h:11
osal_s8
signed char osal_s8
Definition
osal_types.h:17
osal_u32
unsigned int osal_u32
Definition
osal_types.h:13
osal_u16
unsigned short osal_u16
Definition
osal_types.h:12
alg_autorate_dev_stru
Definition
alg_autorate_common_rom.h:131
alg_autorate_fix_rate_stru
Definition
alg_autorate_common_rom.h:125
alg_autorate_rate_stat_info_stru
Definition
alg_autorate_common_rom.h:117
alg_autorate_tx_fix_rate_rank_stru
Definition
alg_autorate_common_rom.h:103
td_type.h
HAL_TX_RATE_MAX_NUM
#define HAL_TX_RATE_MAX_NUM
Definition
wlan_spec_hh503_rom.h:40
src
protocol
wifi
rom_code
ws63
source
inc
romable
alg
alg_autorate_common_rom.h
由
William Goodspeed
维护 | E-mail: gongzl@stu.hebust.edu.cn | Wechat: a23333344 | ALSO CHECKOUT
WS63FLASH
!
生成于 2025年 一月 4日 星期六 17:47:12 , 为 WS63 SDK 文档使用
1.9.8