WS63 SDK 文档 7021f4f@fbb_ws63
ws63 和 ws63e 解决方案的 SDK 文档
载入中...
搜索中...
未找到
alg_edca_opt.h
浏览该文件的文档.
1/*
2 * Copyright (c) HiSilicon (Shanghai) Technologies Co., Ltd. 2022-2022. All rights reserved.
3 * Description: header file of edca option algorithm
4 */
5
6#ifndef __ALG_EDCA_OPT_H__
7#define __ALG_EDCA_OPT_H__
8
9#ifdef _PRE_WLAN_FEATURE_EDCA_OPT
10
11/******************************************************************************
12 1 其他头文件包含
13******************************************************************************/
14#include "alg_transplant.h"
15#ifdef _PRE_WLAN_FEATURE_INTF_DET
16#include "alg_intf_det.h"
17#endif
18#include "alg_common_rom.h"
19#include "msg_alg_rom.h"
20#ifdef __cplusplus
21#if __cplusplus
22extern "C" {
23#endif
24#endif
25/******************************************************************************
26 2 宏定义
27******************************************************************************/
28#define ALG_EDCA_DET_THR_NUM 2 /* 统计周期内最优速率的goodput */
29/******************************************************************************
30 3 枚举定义
31******************************************************************************/
32typedef enum {
33 EDCA_PK_DEBUG_MODE_OFF = 0,
34 EDCA_PK_DEBUG_ADJ_INIT = 1,
35 EDCA_PK_DEBUG_ADJ_AIFSN = 2,
36 EDCA_PK_DEBUG_ADJ_CW = 3,
37 EDCA_PK_DEBUG_ADJ_TXOP = 4,
38 EDCA_PK_DEBUG_COMPLETE = 5,
39 EDCA_PK_DEBUG_MODE_BUTT
40} hmac_edca_pk_debug_mode_enum;
41typedef osal_u8 hmac_edca_pk_debug_mode_enum_uint8;
42
43typedef enum {
44 EDCA_INTF_DEBUG_MODE_OFF = 0,
45 EDCA_INTF_DEBUG_GOODPUT_NEG_ON = 1, /* goodput 负增益 */
46 EDCA_INTF_DEBUG_GOODPUT_NEG_OFF = 2, /* goodput 无负增益 */
47 EDCA_INTF_DEBUG_PK_RECOVER_ON = 3, /* 干扰繁忙度负增益,重置参数 */
48 EDCA_INTF_DEBUG_PK_RECOVER_OFF = 4, /* 干扰繁忙度无负增益,调整参数 */
49 EDCA_INTF_DEBUG_HAS_COCH_ON = 5, /* 模拟同频干扰 */
50 EDCA_INTF_DEBUG_HAS_ADJCH_ON = 6, /* 模拟邻频干扰 */
51 EDCA_INTF_DEBUG_HAS_COCH_OFF = 7, /* 模拟无干扰 */
52 EDCA_INTF_DEBUG_MODE_BUTT
53} hmac_edca_intf_debug_mode_enum;
54typedef osal_u8 hmac_edca_intf_debug_mode_enum_uint8;
55/* 指明当前哪个干扰检测算法在进行负增益检测 */
56typedef enum {
57 ALG_EDCA_DET_PROBE_OFF = 0, /* 负增益检测关闭 */
58 ALG_EDCA_DET_PROBE_COCH = 1, /* 同频干扰probe */
59 ALG_EDCA_DET_PROBE_ADJCH = 2, /* 邻频干扰probe */
60 ALG_EDCA_DET_PROBE_TXOP = 4, /* txop limit probe */
61
62 ALG_EDCA_DET_PROBE_BUTT
63} alg_edca_det_probe_enum;
64typedef osal_u8 alg_edca_det_probe_uint8;
65
66typedef enum {
67 ALG_EDCA_DET_PROBE_STAT_OFF = 0, /* 非探测状态 */
68 ALG_EDCA_DET_PROBE_STAT_DEFAULT_THR = 1, /* 保持默认CCA门限 */
69 ALG_EDCA_DET_PROBE_STAT_BEGIN = 2, /* 开始探测 */
70 ALG_EDCA_DET_PROBE_STAT_FINISH = 3, /* 结束探测 */
71
72 ALG_EDCA_DET_PROBE_STAT_BUTT,
73} alg_edca_det_probe_stat_enum;
74typedef osal_u8 alg_edca_det_probe_stat_uint8;
75/******************************************************************************
76 4 STRUCT定义
77******************************************************************************/
78/* 负增益检测相关 */
79#ifdef _PRE_WLAN_FEATURE_NEGTIVE_DET
80typedef struct {
81 alg_edca_det_probe_uint8 probe_flag; /* 当前持有负增益探测标记 */
82 alg_edca_det_probe_uint8 last_probe_flag; /* 上次持有负增益探测标记,注意为非OFF */
83 alg_edca_det_probe_stat_uint8 intf_det_probe_stat; /* 探测状态 */
84 osal_u8 neg_nonprobe_thr; /* 出现负增益后延迟探测计数门限 */
85
86 osal_u8 collision_ratio_th; /* 碰撞率判断门限 */
87 osal_u8 goodput_loss_th; /* goodput损失门限 */
88 osal_u8 intvl_time_thr; /* 统计间隔时间计数阈值 */
89 oal_bool_enum_uint8 thrpt_loss_stat; /* 当前是否处于负增益 */
90} alg_neg_det_probe_info_stru;
91
92typedef struct {
93 osal_u8 neg_nonprobe_cnt; /* 出现负增益后延迟探测计数 */
94 osal_u8 intvl_time_cnt; /* 统计间隔时间计数 */
95 osal_u8 probe_finish[2]; /* 2:数组大小 开启/关闭 探测完成标志 */
96} alg_neg_det_probe_stat_stru;
97
98typedef struct {
99 /* 统计计数 */
100 osal_u32 tx_cnt; /* 统计周期内总发包个数计数 */
101 osal_u32 collision_cnt; /* 统计周期内碰撞个数计数 */
102 osal_u32 pkt_short_goodput_sum;
103
104 /* 统计结果 */
105 osal_u32 avg_goodput[ALG_EDCA_DET_THR_NUM]; /* 统计周期内最优速率的goodput */
106 osal_u16 collision_ratio[ALG_EDCA_DET_THR_NUM]; /* 统计周期内碰撞率 */
107} alg_neg_det_ac_info_stru;
108
109#endif
110/* device下抗干扰特性对应的信息结构体 */
111typedef struct {
112 /* edca优化特性开关参数 */
113 oal_bool_enum_uint8 edca_opt_en_ap; /* ap模式下edca优化使能 */
114 oal_bool_enum_uint8 edca_opt_en_sta; /* sta模式下edca优化使能 */
115 oal_bool_enum_uint8 txop_limit_en_sta; /* sta模式下txop limit优化使能 */
116 hmac_edca_pk_debug_mode_enum_uint8 pk_debug_mode; /* pk debug mode en:仅用于本地调试 */
117 hmac_edca_intf_debug_mode_enum_uint8 intf_debug_mode; /* intf debug mode en:仅用于本地调试 */
118 /* (edca优化)相关参数 */
119 osal_u8 edca_opt_weight_sta; /* sta模式下edca参数加权系数 */
120 osal_u8 edca_reg_optimized; /* edca参数寄存器是否被优化过 */
121#ifdef _PRE_WLAN_FEATURE_NEGTIVE_DET
122 osal_u8 txop_optimized; /* 是否优化了TXOP */
123#else
124 osal_u8 reserv[1];
125#endif
126 oal_bool_enum_uint8 txop_flag; /* txop limit开启标记:0未打开; 1:打开 */
127#ifdef _PRE_WLAN_FEATURE_NEGTIVE_DET
128 osal_u8 thrpt_loss_det_en; /* 负增益检测开关 */
129 osal_u8 thrpt_loss_det_debug; /* 负增益检测日志开关 */
130 osal_u8 rsv2[1]; /* 保留1字节对齐 */
131 alg_neg_det_probe_info_stru negdet_probe_info; /* 负增益探测信息结构体 */
132 alg_neg_det_probe_stat_stru negdet_probe_stat; /* 负增益探测状态信息 */
133
134 alg_neg_det_ac_info_stru txac_info_bebk; /* ac信息 bebk */
135 alg_neg_det_ac_info_stru txac_info_vi; /* ac信息 vi */
136 alg_neg_det_ac_info_stru txac_info_vo; /* ac信息 vo */
137 alg_neg_det_ac_info_stru *txac_info; /* ac信息 */
138#else
139 osal_u8 rsv3[3];
140#endif
141} alg_edca_opt_stru;
142/******************************************************************************
143 5 函数声明
144******************************************************************************/
145osal_s32 alg_edca_opt_init(osal_void);
146osal_void alg_edca_opt_exit(osal_void);
147#ifdef _PRE_WLAN_FEATURE_INTRF_MODE
148osal_void alg_edca_param_reset(const hmac_vap_stru *hmac_vap, alg_edca_opt_stru *edca_opt);
149osal_void alg_edca_intrf_mode_process(hmac_vap_stru *hmac_vap, osal_u8 edca_switch);
150osal_u32 alg_edca_intrf_mode_process_assoc(hmac_vap_stru *hmac_vap, hmac_user_stru *hmac_user);
151#endif
152osal_void alg_edca_print_cw_gla_info(osal_u8 ac_type, osal_u8 cwmax, osal_u8 cwmin);
153osal_void alg_edca_print_aifsn_all_gla_info(osal_u8 be, osal_u8 bk, osal_u8 vi, osal_u8 vo);
154#ifdef __cplusplus
155#if __cplusplus
156}
157#endif
158#endif
159#endif /* #ifdef _PRE_WLAN_FEATURE_EDCA_OPT */
160#endif /* end of alg_edca_opt.h */
osal_u8 oal_bool_enum_uint8
Definition oal_types_device_rom.h:45
int osal_s32
Definition osal_types.h:19
unsigned char osal_u8
Definition osal_types.h:11
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 mac_user_ext.h:519
Definition mac_vap_ext.h:2019