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