• 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: common_dft_rom.c 的头文件
15  * Date: 2022-03-08
16  */
17 
18 #ifndef __COMMON_DFT_ROM_H__
19 #define __COMMON_DFT_ROM_H__
20 
21 #include "osal_types.h"
22 #ifdef _PRE_WLAN_FEATURE_WS73
23 #include "soc_diag_msg_id.h"
24 #endif
25 
26 #ifdef __cplusplus
27 #if __cplusplus
28 extern "C" {
29 #endif
30 #endif
31 
32 /* 特性宏的缩写见gst_oam_feature_list */
33 typedef enum {
34     OAM_SF_SCAN = 0,
35     OAM_SF_AUTH,
36     OAM_SF_ASSOC,
37     OAM_SF_FRAME_FILTER,
38     OAM_SF_WMM,
39 
40     OAM_SF_DFS = 5,
41     OAM_SF_NETWORK_MEASURE,
42     OAM_SF_ENTERPRISE_VO,
43     OAM_SF_HOTSPOTROAM,
44     OAM_SF_NETWROK_ANNOUNCE,
45 
46     OAM_SF_NETWORK_MGMT = 10,
47     OAM_SF_NETWORK_PWS,
48     OAM_SF_PROXYARP,
49     OAM_SF_TDLS,
50     OAM_SF_CALIBRATE,
51 
52     OAM_SF_EQUIP_TEST = 15,
53     OAM_SF_CRYPTO,
54     OAM_SF_WPA,
55     OAM_SF_WEP,
56     OAM_SF_WPS,
57 
58     OAM_SF_PMF = 20,
59     OAM_SF_WAPI,
60     OAM_SF_BA,
61     OAM_SF_AMPDU,
62     OAM_SF_AMSDU,
63 
64     OAM_SF_STABILITY = 25,
65     OAM_SF_TCP_OPT,
66     OAM_SF_ACS,
67     OAM_SF_AUTORATE,
68     OAM_SF_RTS,
69     OAM_SF_TXBF,
70 
71     OAM_SF_DYN_RECV = 30, /* dynamin recv */
72     OAM_SF_VIVO,          /* video_opt voice_opt */
73     OAM_SF_MULTI_USER,
74     OAM_SF_TRAFFIC,
75     OAM_SF_ANTI_INTF,
76 
77     OAM_SF_EDCA = 35,
78     OAM_SF_SMART_ANTENNA,
79     OAM_SF_TPC,
80     OAM_SF_TX_CHAIN,
81     OAM_SF_RSSI,
82 
83     OAM_SF_WOW = 40,
84     OAM_SF_GREEN_AP,
85     OAM_SF_PWR, /* psm uapsd fastmode */
86     OAM_SF_SMPS,
87     OAM_SF_TXOP,
88 
89     OAM_SF_WIFI_BEACON = 45,
90     OAM_SF_KA_AP, /* keep alive ap */
91     OAM_SF_MULTI_VAP,
92     OAM_SF_2040, /* 20m+40m coex */
93     OAM_SF_DBAC,
94 
95     OAM_SF_PROXYSTA = 50,
96     OAM_SF_UM,  /* user managment */
97     OAM_SF_P2P, /* P2P 特性 */
98     OAM_SF_M2U,
99     OAM_SF_IRQ, /* top half */
100 
101     OAM_SF_TX = 55,
102     OAM_SF_RX,
103     OAM_SF_DUG_COEX,
104     OAM_SF_CFG, /* wal dmac config函数 */
105     OAM_SF_FRW, /* frw层 */
106 
107     OAM_SF_KEEPALIVE = 60,
108     OAM_SF_COEX,
109     OAM_SF_HS20, /* HotSpot 2.0特性 */
110     OAM_SF_MWO_DET,
111     OAM_SF_CCA_OPT,
112 
113     OAM_SF_ROAM = 65, /* roam module, #ifdef _PRE_WLAN_FEATURE_ROAM */
114     OAM_SF_DFT,
115     OAM_SF_DFR,
116     OAM_SF_RRM,
117 
118     OAM_SF_OPMODE = 70,
119     OAM_SF_M2S,
120     OAM_SF_DBDC,
121     OAM_SF_HILINK,
122     OAM_SF_WDS, /* WDS 特性 */
123 
124     OAM_SF_WMMAC = 75,
125     OAM_SF_USER_EXTEND,
126     OAM_SF_PKT_CAP, /* 抓包特性 */
127     OAM_SF_SOFT_CRYPTO,
128 
129     OAM_SF_CAR,  /* 限速特性  */
130     OAM_SF_11AX, /* 11AX 特性 */
131     OAM_SF_CSA,
132     OAM_SF_CONN, /* ONT日志 */
133     OAM_SF_CHAN, /* ONT日志 */
134     OAM_SF_CUSTOM,
135     OAM_SF_ALG_COMMON,
136     OAM_SF_ALG_TX_TB,
137 
138     OAM_SF_QOS,
139     OAM_SF_SDP,
140     OAM_SF_SCHEDULE,
141     OAM_SF_AUTOAGGR,
142     OAM_SF_INTRF_MODE,
143     OAM_SF_RESERVE7,
144     OAM_SF_RESERVE8,
145     OAM_SF_RESERVE9,
146     OAM_SF_RESERVE10,
147     OAM_SF_ANY, /* rifs protection shortgi frag datarate countrycode
148                     coustom_security startup_time lsig monitor wds
149                     hidessid */
150     OAM_SF_BSSTRANSITION,
151 
152 #ifdef _PRE_WLAN_FEATURE_FTM
153     OAM_SF_FTM,
154 #endif
155 #ifdef _PRE_WLAN_FEATURE_CHBA
156     OAM_SF_CHBA,
157 #endif
158     OAM_SF_SR,
159     OAM_SF_DNB,
160     OAM_SF_APF,
161     OAM_SF_LATENCY,
162     OAM_SF_SLP,
163     OAM_SOFTWARE_FEATURE_BUTT
164 } oam_feature_enum;
165 
166 /* 表明帧是属于接收流程还是发送流程的枚举 */
167 typedef enum {
168     OAM_OTA_FRAME_DIRECTION_TYPE_TX = 0,
169     OAM_OTA_FRAME_DIRECTION_TYPE_RX,
170 
171     OAM_OTA_FRAME_DIRECTION_TYPE_BUTT
172 } oam_ota_frame_direction_type_enum;
173 typedef osal_u8 oam_ota_frame_direction_type_enum_uint8;
174 
175 /* 日志级别 */
176 typedef enum {
177     OAM_LOG_LEVEL_ERROR = 1, /* ERROR级别打印 */
178     OAM_LOG_LEVEL_WARNING,   /* WARNING级别打印 */
179     OAM_LOG_LEVEL_INFO,      /* INFO级别打印 */
180 
181     OAM_LOG_LEVEL_BUTT
182 } oam_log_level_enum;
183 typedef osal_u8 oam_log_level_enum_uint8;
184 
185 /* 单用户跟踪帧类型:数据和管理 */
186 typedef enum {
187     OAM_USER_TRACK_FRAME_TYPE_MGMT = 0,
188     OAM_USER_TRACK_FRAME_TYPE_DATA,
189 
190     OAM_USER_TRACK_FRAME_TYPE_BUTT
191 } oam_user_track_frame_type_enum;
192 
193 typedef enum {
194     DFT_SWITCH_OFF = 0,
195     DFT_SWITCH_ON = 1,
196     DFT_SWITCH_BUTT
197 } dft_switch;
198 
199 /* 80211帧上报控制结构 */
200 typedef struct {
201     osal_u8 frame_content_switch;
202     osal_u8 frame_cb_switch;
203     osal_u8 frame_dscr_switch;
204 } dft_80211_frame_ctx;
205 
206 typedef enum {
207     UNICAST_FRAME = 0,
208     BROADCAST_FRAME,
209     FRAME_MODE_BUTT
210 } dft_frame_mode_stru;
211 
212 typedef struct {
213     dft_80211_frame_ctx frame_type_ctx[OAM_OTA_FRAME_DIRECTION_TYPE_BUTT][OAM_USER_TRACK_FRAME_TYPE_BUTT];
214 } dft_frame_ctx;
215 
216 /* 单用户跟踪控制开关结构 */
217 typedef struct {
218     dft_frame_ctx frame_ctx[FRAME_MODE_BUTT];
219 } dft_user_track_ctx;
220 
221 typedef struct {
222     /* 当前上报日志级别 */
223     oam_log_level_enum_uint8 log_level;
224     /* 所有帧与描述符上报总开关 */
225     osal_u8 global_frame_switch;
226     osal_u8 rsv[2];
227     /* 单用户跟踪管理上下文 */
228     dft_user_track_ctx user_track_ctx;
229 } dft_mng_ctx;
230 
231 /* 设置80211帧开关需要的参数 */
232 typedef struct {
233     osal_u8 frame_mode;
234     osal_u8 frame_direction;
235     osal_u8 frame_type;
236     osal_u8 frame_switch;
237     osal_u8 cb_switch;
238     osal_u8 dscr_switch;
239     osal_u8 user_macaddr[6];
240 } mac_cfg_80211_frame_switch_stru;
241 
242 /* 适配HSO解析probe rsp or beacaon所需的参数 */
243 typedef struct {
244     osal_u32 msg_id;
245     osal_u8 is_probe_rsp_or_beacon;
246     osal_s8 rssi;
247     osal_u8 channel;
248     osal_u8 rsv;
249 } adjust_hso_param_stru;
250 
251 osal_u8 dft_get_global_frame_switch(osal_void);
252 osal_void dft_set_log_level(osal_u8 level);
253 osal_u32 dft_set_global_frame_switch(osal_u8 log_switch);
254 
255 osal_void dft_report_netbuf_cb_etc(osal_u8 *netbuf_cb, osal_u16 len, osal_u32 msg_id);
256 osal_void dft_report_dscr_etc(osal_u8 *dscr_addr, osal_u16 dscr_len, osal_u32 msg_id);
257 osal_void dft_report_80211_frame(osal_u8 *hdr_addr, osal_u8 hdr_len, const osal_u8 *frame_addr, osal_u16 frame_len,
258     adjust_hso_param_stru *adjust_hso_param);
259 osal_void dft_report_params_etc(osal_u8 *param, osal_u16 param_len, osal_u32 msg_id);
260 osal_void dft_report_eth_frame_etc(osal_u8 *eth_frame, osal_u16 eth_frame_len, osal_u32 msg_id);
261 oam_log_level_enum_uint8 dft_get_log_level_switch(osal_void);
262 osal_u8 dft_get_frame_mode(osal_u8 *hdr);
263 osal_void dft_get_frame_report_switch(osal_u8 *hdr, osal_u8 direction, dft_80211_frame_ctx *frame_ctx);
264 osal_u32 dft_report_80211_frame_get_switch(osal_u8 frame_mode, osal_u8 direction, osal_u8 track_frame_type,
265     dft_80211_frame_ctx *frame_ctx);
266 osal_u32 dft_report_80211_frame_set_switch(osal_u8 frame_mode, osal_u8 direction, osal_u8 track_frame_type,
267     dft_80211_frame_ctx *frame_ctx);
268 
269 #ifdef __cplusplus
270 #if __cplusplus
271 }
272 #endif
273 #endif
274 
275 #endif /* end of common_dft.h */
276