1 /* 2 * Copyright (C) 2021 HiSilicon (Shanghai) Technologies CO., LIMITED. 3 * 4 * This program is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU General Public License 6 * as published by the Free Software Foundation; either version 2 7 * of the License, or (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program; if not, write to the Free Software 16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 17 */ 18 19 #ifndef __HMAC_EXT_IF_H__ 20 #define __HMAC_EXT_IF_H__ 21 22 /* **************************************************************************** 23 1 其他头文件包含 24 **************************************************************************** */ 25 #include "oal_ext_if.h" 26 #include "mac_device.h" 27 #include "mac_vap.h" 28 #include "mac_user.h" 29 #include "mac_frame.h" 30 #include "mac_data.h" 31 #include "hmac_config.h" 32 #include "hmac_device.h" 33 #include "hmac_vap.h" 34 #include "hmac_p2p.h" 35 #ifdef _PRE_WLAN_FEATURE_WOW 36 #include "hmac_wow.h" 37 #endif 38 #ifdef _PRE_WLAN_FEATURE_WAPI 39 #include "hmac_wapi.h" 40 #endif 41 #include "hmac_11i.h" 42 43 #ifdef __cplusplus 44 #if __cplusplus 45 extern "C" { 46 #endif 47 #endif 48 49 /* **************************************************************************** 50 2 宏定义 51 **************************************************************************** */ 52 /* **************************************************************************** 53 3 枚举定义 54 **************************************************************************** */ 55 /* 返回值类型定义 */ 56 typedef enum { 57 HMAC_TX_PASS = 0, /* 继续往下 */ 58 HMAC_TX_BUFF = 1, /* 已被缓存 */ 59 HMAC_TX_DONE = 2, /* 组播转成单播已发送 */ 60 61 HMAC_TX_DROP_PROXY_ARP = 3, /* PROXY ARP检查后丢弃 */ 62 HMAC_TX_DROP_USER_UNKNOWN, /* 未知user */ 63 HMAC_TX_DROP_USER_NULL, /* user结构体为NULL */ 64 HMAC_TX_DROP_USER_INACTIVE, /* 目的user未关联 */ 65 HMAC_TX_DROP_SECURITY_FILTER, /* 安全检查过滤掉 */ 66 HMAC_TX_DROP_BA_SETUP_FAIL, /* BA会话创建失败 */ 67 HMAC_TX_DROP_AMSDU_ENCAP_FAIL, /* amsdu封装失败 */ 68 HMAC_TX_DROP_MUSER_NULL, /* 组播user为NULL */ 69 HMAC_TX_DROP_MTOU_FAIL, /* 组播转单播失败 */ 70 HMAC_TX_DROP_80211_ENCAP_FAIL, /* 802.11 head封装失败 */ 71 HMAC_TX_DROP_POLICY, /* 策略丢包处理 */ 72 73 HMAC_TX_BUTT 74 } hmac_tx_return_type_enum; 75 typedef hi_u8 hmac_tx_return_type_enum_uint8; 76 77 /* **************************************************************************** 78 枚举名 : hmac_host_ctx_event_sub_type_enum_uint8 79 协议表格: 80 枚举说明: HOST CTX事件子类型定义 81 **************************************************************************** */ 82 typedef enum { 83 HMAC_HOST_CTX_EVENT_SUB_TYPE_SCAN_COMP_STA = 0, /* STA 扫描完成子类型 */ 84 HMAC_HOST_CTX_EVENT_SUB_TYPE_ASOC_COMP_STA, /* STA 关联完成子类型 */ 85 HMAC_HOST_CTX_EVENT_SUB_TYPE_DISASOC_COMP_STA, /* STA 上报去关联完成 */ 86 HMAC_HOST_CTX_EVENT_SUB_TYPE_STA_CONNECT_AP, /* AP 上报新加入BSS的STA情况 */ 87 HMAC_HOST_CTX_EVENT_SUB_TYPE_STA_DISCONNECT_AP, /* AP 上报离开BSS的STA情况 */ 88 #if (_PRE_OS_VERSION_LINUX == _PRE_OS_VERSION) 89 HMAC_HOST_CTX_EVENT_SUB_TYPE_MIC_FAILURE, /* 上报MIC攻击 */ 90 #endif 91 HMAC_HOST_CTX_EVENT_SUB_TYPE_RX_MGMT, /* 上报接收到的管理帧 */ 92 #ifdef _PRE_WLAN_FEATURE_P2P 93 HMAC_HOST_CTX_EVENT_SUB_TYPE_LISTEN_EXPIRED, /* 上报监听超时 */ 94 #endif 95 HMAC_HOST_CTX_EVENT_SUB_TYPE_STA_CONN_RESULT, /* 通知lwip sta是否关联 */ 96 #ifdef _PRE_WLAN_FEATURE_FLOWCTL 97 HMAC_HOST_CTX_EVENT_SUB_TYPE_FLOWCTL_BACKP, /* 上报流控反压消息 */ 98 #endif 99 HMAC_HOST_CTX_EVENT_SUB_TYPE_MGMT_TX_STATUS, 100 101 #ifdef _PRE_WLAN_FEATURE_ANY 102 HMAC_HOST_CTX_EVENT_SUB_TYPE_ANY_RX_DATA, /* 上报接收到的ANY类型帧的数据 */ 103 HMAC_HOST_CTX_EVENT_SUB_TYPE_ANY_TX_STATUS, /* 上报ANY类型帧的发送状态 */ 104 HMAC_HOST_CTX_EVENT_SUB_TYPE_ANY_SCAN_RESULT, /* 上报所扫描到的ANY设备信息 */ 105 HMAC_HOST_CTX_EVENT_SUB_TYPE_ANY_PEER_INFO, /* 上报查询的ANY对端设备信息 */ 106 #endif 107 #ifdef _PRE_WLAN_FEATURE_MESH 108 HMAC_HOST_CTX_EVENT_SUB_TYPE_PEER_CLOSE_MESH, /* 通知WPA与远端设备断开连接 */ 109 HMAC_HOST_CTX_EVENT_SUB_TYPE_NEW_PEER_CANDIDATE, /* 通知wpa有可关联远端节点 */ 110 HMAC_HOST_CTX_EVENT_SUB_TYPE_TX_DATA_INFO, /* 通知lwip单播数据帧相关信息 */ 111 HMAC_HOST_CTX_EVENT_SUB_TYPE_MESH_USER_INFO, /* 通知lwip用户关联状态信息 */ 112 #endif 113 #ifdef _PRE_WLAN_FEATURE_CSI 114 HMAC_HOST_CTX_EVENT_SUB_TYPE_CSI_REPORT, /* 底层获取的CSI数据上报到WAL层事件 */ 115 #endif 116 #ifdef _PRE_WLAN_FEATURE_P2P 117 HMAC_HOST_CTX_EVENT_SUB_TYPE_P2P_TX_STATUS, /* P2P发送ACTION帧状态上报到WAL层事件 */ 118 #endif 119 #ifdef FEATURE_DAQ 120 HMAC_HOST_CTX_EVENT_SUB_TYPE_ACQ_STATUS, /* 数采状态上报到WAL层事件 */ 121 HMAC_HOST_CTX_EVENT_SUB_TYPE_ACQ_RESULT, /* 数采结果上报到WAL层事件 */ 122 #endif 123 #if (_PRE_MULTI_CORE_MODE != _PRE_MULTI_CORE_MODE_OFFLOAD_DMAC) 124 HMAC_HOST_CTX_EVENT_SUB_TYPE_CHANNEL_SWITCH, /* 信道切换上到到WAL层事件 */ 125 #endif 126 HMAC_HOST_CTX_EVENT_GET_MAC_FROM_EFUSE, /* HOST侧获取efuse中的mac地址 */ 127 #ifdef _PRE_WLAN_FEATURE_MFG_TEST 128 HMAC_HOST_CTX_EVENT_GET_DBG_CAL_DATA, /* HOST侧获取device调试产测参数 */ 129 #endif 130 HMAC_HOST_CTX_EVENT_REPORT_TX_PARAMS, /* device侧上报alg模块的理论goodput到wal层事件 */ 131 HMAC_HOST_CTX_EVENT_SUB_TYPE_BUTT 132 } hmac_host_ctx_event_sub_type_enum; 133 typedef hi_u8 hmac_host_ctx_event_sub_type_enum_uint8; 134 135 /* Status code for MLME operation confirm */ 136 typedef enum { 137 HMAC_MGMT_SUCCESS = 0, 138 HMAC_MGMT_INVALID = 1, 139 HMAC_MGMT_TIMEOUT = 2, 140 HMAC_MGMT_REFUSED = 3, 141 HMAC_MGMT_TOMANY_REQ = 4, 142 HMAC_MGMT_ALREADY_BSS = 5 143 } hmac_mgmt_status_enum; 144 typedef hi_u8 hmac_mgmt_status_enum_uint8; 145 146 /* **************************************************************************** 147 7 STRUCT定义 148 **************************************************************************** */ 149 /* 扫描结果 */ 150 typedef struct { 151 hi_u8 num_dscr; 152 hi_u8 result_code; 153 hi_u8 auc_resv[2]; /* 2:预留数组大小 */ 154 } hmac_scan_rsp_stru; 155 156 /* 关联结果 */ 157 typedef struct { 158 hmac_mgmt_status_enum_uint8 result_code; /* 关联成功,超时等 */ 159 hi_u8 auc_resv1[1]; 160 mac_status_code_enum_uint16 status_code; /* ieee协议规定的16位状态码 */ 161 162 hi_u8 auc_addr_ap[WLAN_MAC_ADDR_LEN]; 163 hi_u16 us_freq; 164 165 hi_u32 asoc_req_ie_len; 166 hi_u32 asoc_rsp_ie_len; 167 168 hi_u8 *puc_asoc_req_ie_buff; 169 hi_u8 *puc_asoc_rsp_ie_buff; 170 } hmac_asoc_rsp_stru; 171 172 /* mic攻击 */ 173 typedef struct { 174 hi_u8 auc_user_mac[WLAN_MAC_ADDR_LEN]; 175 hi_u8 auc_reserve[2]; /* 2:预留数组大小 */ 176 oal_nl80211_key_type key_type; 177 hi_s32 l_key_id; 178 } hmac_mic_event_stru; 179 180 /* 上报接收到管理帧事件的数据结构 */ 181 typedef struct { 182 hi_u8 *puc_buf; 183 hi_u16 us_len; 184 hi_u8 rsv[2]; /* 2:预留数组大小 */ 185 hi_s32 l_freq; 186 hi_char ac_name[OAL_IF_NAME_SIZE]; 187 } hmac_rx_mgmt_event_stru; 188 189 typedef struct { 190 hi_u32 cfg_id; 191 hi_u32 ac; 192 hi_u32 value; 193 } hmac_config_wmm_para_stru; 194 195 typedef struct { 196 hi_u8 is_assoc; /* 标识是关联事件/去关联事件 */ 197 hi_u8 conn_to_mesh; /* 标识是否关联到Mesh/普通AP */ 198 hi_u8 rssi; /* 关联的节点的扫描RSSI */ 199 hi_u8 auc_mac_addr[WLAN_MAC_ADDR_LEN]; 200 hi_u8 auc_rsv[3]; /* 3:预留数组大小 */ 201 }hmac_sta_report_assoc_info_stru; 202 #ifdef __cplusplus 203 #if __cplusplus 204 } 205 #endif 206 #endif 207 208 #endif /* __HMAC_EXT_IF_H__ */ 209