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 的头文件 15 * Date: 2022-03-08 16 */ 17 18 #ifndef __COMMON_DFT_H__ 19 #define __COMMON_DFT_H__ 20 21 #include "common_dft_rom.h" 22 23 #ifdef __cplusplus 24 #if __cplusplus 25 extern "C" { 26 #endif 27 #endif 28 29 /* 该枚举类型不建议频繁添加,只适用于异常原因明确的分支,周期上报异常触发日志 */ 30 typedef enum { 31 OAM_HAL_MAC_ERROR_PARA_CFG_ERR = 32 0, /* 描述符参数配置异常,包括AMPDU长度配置不匹配,AMPDU中MPDU长度超长,sub msdu num错误 */ 33 OAM_HAL_MAC_ERROR_RXBUFF_LEN_TOO_SMALL = 1, /* 接收非AMSDU帧长大于RxBuff大小异常 */ 34 OAM_HAL_MAC_ERROR_BA_ENTRY_NOT_FOUND = 2, /* 未找到BA会话表项异常0 */ 35 OAM_HAL_MAC_ERROR_PHY_TRLR_TIME_OUT = 3, /* PHY_RX_TRAILER超时 */ 36 OAM_HAL_MAC_ERROR_PHY_RX_FIFO_OVERRUN = 4, /* PHY_RX_FIFO满写异常 */ 37 OAM_HAL_MAC_ERROR_TX_DATAFLOW_BREAK = 5, /* 发送帧数据断流 */ 38 OAM_HAL_MAC_ERROR_RX_FSM_ST_TIMEOUT = 6, /* RX_FSM状态机超时 */ 39 OAM_HAL_MAC_ERROR_TX_FSM_ST_TIMEOUT = 7, /* TX_FSM状态机超时 */ 40 OAM_HAL_MAC_ERROR_RX_HANDLER_ST_TIMEOUT = 8, /* RX_HANDLER状态机超时 */ 41 OAM_HAL_MAC_ERROR_TX_HANDLER_ST_TIMEOUT = 9, /* TX_HANDLER状态机超时 */ 42 OAM_HAL_MAC_ERROR_TX_INTR_FIFO_OVERRUN = 10, /* TX 中断FIFO满写 */ 43 OAM_HAL_MAC_ERROR_RX_INTR_FIFO_OVERRUN = 11, /* RX中断 FIFO满写 */ 44 OAM_HAL_MAC_ERROR_HIRX_INTR_FIFO_OVERRUN = 12, /* HIRX中断FIFO满写 */ 45 OAM_HAL_MAC_ERROR_RX_Q_EMPTY = 13, /* 接收到普通优先级帧但此时RX BUFFER指针为空 */ 46 OAM_HAL_MAC_ERROR_HIRX_Q_EMPTY = 14, /* 接收到高优先级帧但此时HI RX BUFFER指针为空 */ 47 OAM_HAL_MAC_ERROR_BUS_RLEN_ERR = 15, /* 总线读请求长度为0异常 */ 48 OAM_HAL_MAC_ERROR_BUS_RADDR_ERR = 16, /* 总线读请求地址无效异常 */ 49 OAM_HAL_MAC_ERROR_BUS_WLEN_ERR = 17, /* 总线写请求长度为0异常 */ 50 OAM_HAL_MAC_ERROR_BUS_WADDR_ERR = 18, /* 总线写请求地址无效异常 */ 51 OAM_HAL_MAC_ERROR_TX_ACBK_Q_OVERRUN = 19, /* tx acbk队列fifo满写 */ 52 OAM_HAL_MAC_ERROR_TX_ACBE_Q_OVERRUN = 20, /* tx acbe队列fifo满写 */ 53 OAM_HAL_MAC_ERROR_TX_ACVI_Q_OVERRUN = 21, /* tx acvi队列fifo满写 */ 54 OAM_HAL_MAC_ERROR_TX_ACVO_Q_OVERRUN = 22, /* tx acv0队列fifo满写 */ 55 OAM_HAL_MAC_ERROR_TX_HIPRI_Q_OVERRUN = 23, /* tx hipri队列fifo满写 */ 56 OAM_HAL_MAC_ERROR_MATRIX_CALC_TIMEOUT = 24, /* matrix计算超时 */ 57 OAM_HAL_MAC_ERROR_CCA_TIMEOUT = 25, /* cca超时 */ 58 OAM_HAL_MAC_ERROR_DCOL_DATA_OVERLAP = 26, /* 数采overlap告警 */ 59 OAM_HAL_MAC_ERROR_BEACON_MISS = 27, /* 连续发送beacon失败 */ 60 OAM_HAL_MAC_ERROR_UNKOWN_28 = 28, 61 OAM_HAL_MAC_ERROR_UNKOWN_29 = 29, 62 OAM_HAL_MAC_ERROR_UNKOWN_30 = 30, 63 OAM_HAL_MAC_ERROR_UNKOWN_31 = 31, 64 65 OAM_HAL_SOC_ERROR_BUCK_OCP = 32, /* PMU BUCK过流中断 */ 66 OAM_HAL_SOC_ERROR_BUCK_SCP, /* PMU BUCK短路中断 */ 67 OAM_HAL_SOC_ERROR_OCP_RFLDO1, /* PMU RFLDO1过流中断 */ 68 OAM_HAL_SOC_ERROR_OCP_RFLDO2, /* PMU RFLDO2过流中断 */ 69 OAM_HAL_SOC_ERROR_OCP_CLDO, /* PMU CLDO过流中断 */ 70 OAM_HAL_SOC_ERROR_RF_OVER_TEMP, /* RF过热中断 */ 71 OAM_HAL_SOC_ERROR_CMU_UNLOCK, /* CMU PLL失锁中断 */ 72 OAM_HAL_SOC_ERROR_PCIE_SLV_ERR, 73 74 OAM_EXCP_TYPE_BUTT 75 } oam_excp_type_enum; 76 77 /* 跟踪用户信息变化类型,event类型信息,状态变化驱动 */ 78 typedef enum { 79 OAM_USER_INFO_CHANGE_TYPE_ASSOC_STATE = 0, /* 用户关联状态 */ 80 OAM_USER_INFO_CHANGE_TYPE_TX_PROTOCOL, /* 发送数据帧使用的协议模式 */ 81 OAM_USER_INFO_CHANGE_TYPE_RX_PROTOCOL, /* 接收数据帧使用的协议模式 */ 82 /* ... */ 83 OAM_USER_INFO_CHANGE_TYPE_BUTT 84 } oam_user_info_change_type_enum; 85 86 #define OAM_LOG_DEFAULT_LEVEL OAM_LOG_LEVEL_WARNING 87 88 typedef enum { 89 OAM_EXCP_STATUS_INIT = 0, /* 初始状态:上报完成后切换至初始状态 */ 90 OAM_EXCP_STATUS_REFRESHED, /* 有更新,可上报; */ 91 OAM_EXCP_STATUS_BUTT 92 } oam_excp_status_enum; 93 94 /* 异常统计结构体:当ul_reported_cnt与record_cnt相同时 */ 95 typedef struct { 96 osal_u32 status; /* 每类异常类型是否刷新 */ 97 osal_u32 record_cnt; /* 记录上一次更新的次数 */ 98 } dft_excp_record; 99 100 /* oam异常统计 */ 101 typedef struct { 102 osal_u32 status; /* VAP级别异常统计是否有刷新 */ 103 dft_excp_record excp_record[OAM_EXCP_TYPE_BUTT]; 104 } dft_exception_ctx; 105 106 #ifndef DIAG_CMD_ID_WIFI_START 107 #define DIAG_CMD_ID_WIFI_START 0x7400 108 #endif 109 110 #ifndef DIAG_CMD_ID_WIFI_END 111 #define DIAG_CMD_ID_WIFI_END 0x7600 112 #endif 113 114 typedef enum { 115 DIAG_CMD_ID_RX_DSCR = DIAG_CMD_ID_WIFI_START, 116 DIAG_CMD_ID_TX_DSCR, 117 DIAG_CMD_ID_RX_80211_FRAME, 118 DIAG_CMD_ID_TX_80211_FRAME, 119 DIAG_CMD_ID_RX_BEACON, 120 DIAG_CMD_ID_TX_BEACON, 121 DIAG_CMD_ID_TX_CB, 122 DIAG_CMD_ID_RX_CB, 123 124 DIAG_CMD_ID_WIFI_BUTT = DIAG_CMD_ID_WIFI_END 125 } wifi_diag_cmd_id; 126 127 oam_log_level_enum_uint8 dmac_dft_get_log_level_switch(osal_void); 128 129 #ifdef __cplusplus 130 #if __cplusplus 131 } 132 #endif 133 #endif 134 135 #endif /* end of common_dft.h */ 136