• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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