]> git.proxmox.com Git - mirror_edk2.git/blame - NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h
NetworkPkg: Replace BSD License with BSD+Patent License
[mirror_edk2.git] / NetworkPkg / WifiConnectionManagerDxe / WifiConnectionMgrDxe.h
CommitLineData
90b24889
WF
1/** @file\r
2 The miscellaneous structure definitions for WiFi connection driver.\r
3\r
4 Copyright (c) 2019, Intel Corporation. All rights reserved.<BR>\r
5\r
ecf98fbc 6 SPDX-License-Identifier: BSD-2-Clause-Patent\r
90b24889
WF
7\r
8**/\r
9\r
10#ifndef __EFI_WIFI_MGR_DXE_H__\r
11#define __EFI_WIFI_MGR_DXE_H__\r
12\r
13#include <Uefi.h>\r
14\r
15//\r
16// Libraries\r
17//\r
18#include <Library/UefiBootServicesTableLib.h>\r
19#include <Library/UefiRuntimeServicesTableLib.h>\r
20#include <Library/MemoryAllocationLib.h>\r
21#include <Library/BaseMemoryLib.h>\r
22#include <Library/BaseLib.h>\r
23#include <Library/UefiLib.h>\r
24#include <Library/DevicePathLib.h>\r
25#include <Library/DebugLib.h>\r
26#include <Library/HiiLib.h>\r
27#include <Library/NetLib.h>\r
28#include <Library/PrintLib.h>\r
29#include <Library/UefiHiiServicesLib.h>\r
30#include <Library/FileExplorerLib.h>\r
31\r
32//\r
33// UEFI Driver Model Protocols\r
34//\r
35#include <Protocol/DriverBinding.h>\r
36#include <Protocol/HiiDatabase.h>\r
37#include <Protocol/HiiPackageList.h>\r
38#include <Protocol/ComponentName2.h>\r
39#include <Protocol/ComponentName.h>\r
40\r
41//\r
42// Consumed Protocols\r
43//\r
44#include <Protocol/WiFi2.h>\r
45#include <Protocol/AdapterInformation.h>\r
46#include <Protocol/Supplicant.h>\r
47#include <Protocol/SimpleNetwork.h>\r
48#include <Protocol/SimpleFileSystem.h>\r
49#include <Protocol/EapConfiguration.h>\r
50\r
51//\r
52// Produced Protocols\r
53//\r
54#include <Protocol/HiiConfigAccess.h>\r
55\r
56//\r
57// Guids\r
58//\r
59#include <Guid/ImageAuthentication.h>\r
60#include <Guid/MdeModuleHii.h>\r
61#include <Guid/WifiConnectionManagerConfigHii.h>\r
62\r
63//\r
64// NvData struct definition\r
65//\r
66#include "WifiConnectionMgrConfigNVDataStruct.h"\r
67#include "WifiConnectionMgrConfig.h"\r
68#include "EapContext.h"\r
69#include "WifiConnectionMgrConfigHii.h"\r
70\r
71//\r
72// Driver Version\r
73//\r
74#define WIFI_MGR_DXE_VERSION 0xb\r
75\r
76#define OUI_IEEE_80211I 0xAC0F00\r
77\r
78typedef enum {\r
79 Ieee80211PairwiseCipherSuiteUseGroupCipherSuite = 0,\r
80 Ieee80211PairwiseCipherSuiteWEP40 = 1,\r
81 Ieee80211PairwiseCipherSuiteTKIP = 2,\r
82 Ieee80211PairwiseCipherSuiteCCMP = 4,\r
83 Ieee80211PairwiseCipherSuiteWEP104 = 5,\r
84 Ieee80211PairwiseCipherSuiteBIP = 6,\r
85 //...\r
86} IEEE_80211_PAIRWISE_CIPHER_SUITE;\r
87\r
88#define IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteUseGroupCipherSuite << 24))\r
89#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP40 << 24))\r
90#define IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteTKIP << 24))\r
91#define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24))\r
92#define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24))\r
93#define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24))\r
94\r
95typedef enum {\r
96 Ieee80211AkmSuite8021XOrPMKSA = 1,\r
97 Ieee80211AkmSuitePSK = 2,\r
98 Ieee80211AkmSuite8021XOrPMKSASHA256 = 5,\r
99 Ieee80211AkmSuitePSKSHA256 = 6\r
100 //...\r
101} IEEE_80211_AKM_SUITE;\r
102\r
103#define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSA << 24))\r
104#define IEEE_80211_AKM_SUITE_PSK (OUI_IEEE_80211I | (Ieee80211AkmSuitePSK << 24))\r
105#define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSASHA256 << 24))\r
106#define IEEE_80211_AKM_SUITE_PSK_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuitePSKSHA256 << 24))\r
107\r
108//\r
109// Protocol instances\r
110//\r
111extern EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding;\r
112extern EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2;\r
113extern EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName;\r
114extern EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess;\r
115\r
116//\r
117// Private Context Data Structure\r
118//\r
119typedef enum {\r
120 WifiMgrDisconnected,\r
121 WifiMgrConnectingToAp,\r
122 WifiMgrConnectedToAp,\r
123 WifiMgrDisconnectingToAp,\r
124 WifiMgrConnectStateMaximum\r
125} WIFI_MGR_CONNECT_STATE;\r
126\r
127typedef enum {\r
128 WifiMgrScanFinished,\r
129 WifiMgrScanning,\r
130 WifiMgrScanStateMaximum\r
131} WIFI_MGR_SCAN_STATE;\r
132\r
133#define WIFI_SCAN_FREQUENCY 30\r
134\r
135typedef struct _WIFI_MGR_SUPPORTED_SUITES {\r
136 EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites;\r
137 EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites;\r
138 EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites;\r
139} WIFI_MGR_SUPPORTED_SUITES;\r
140\r
141#define EFI_WIFIMGR_PRIVATE_GUID \\r
142 { \\r
143 0x99b7c019, 0x4789, 0x4829, { 0xa7, 0xbd, 0x0d, 0x4b, 0xaa, 0x62, 0x28, 0x72 } \\r
144 }\r
145\r
146typedef struct _WIFI_MGR_PRIVATE_DATA WIFI_MGR_PRIVATE_DATA;\r
147\r
148typedef struct _WIFI_MGR_PRIVATE_PROTOCOL {\r
149 UINT32 Reserved;\r
150} WIFI_MGR_PRIVATE_PROTOCOL;\r
151\r
152typedef struct _WIFI_MGR_FILE_CONTEXT {\r
153 EFI_FILE_HANDLE FHandle;\r
154 UINT16 *FileName;\r
155} WIFI_MGR_FILE_CONTEXT;\r
156\r
157typedef enum {\r
158 FileTypeCACert,\r
159 FileTypeClientCert,\r
160 FileTypeMax\r
161} WIFI_MGR_FILE_TYPE;\r
162\r
163typedef struct {\r
164 UINT32 Signature;\r
165 EFI_HANDLE DriverHandle;\r
166 EFI_HANDLE ControllerHandle;\r
167 EFI_EVENT TickTimer;\r
168 WIFI_MGR_PRIVATE_DATA *Private;\r
169\r
170 //\r
171 // Pointers to consumed protocols\r
172 //\r
173 EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp;\r
174 EFI_SUPPLICANT_PROTOCOL *Supplicant;\r
175 EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig;\r
176\r
177 //\r
178 // Produced protocols\r
179 //\r
180 WIFI_MGR_PRIVATE_PROTOCOL WifiMgrIdentifier;\r
181\r
182 //\r
183 // Private functions and data fields\r
184 //\r
185 LIST_ENTRY Link; // Link to the NicList in global private data structure.\r
186 UINT32 NicIndex;\r
187 EFI_80211_MAC_ADDRESS MacAddress;\r
188 WIFI_MGR_SUPPORTED_SUITES SupportedSuites;\r
189 EFI_ADAPTER_INFO_MEDIA_STATE LastLinkState;\r
190\r
191 //\r
192 // The network is currently connected, connecting or disconnecting.\r
193 // Only one network can be operated at one time.\r
194 //\r
195 WIFI_MGR_NETWORK_PROFILE *CurrentOperateNetwork;\r
196 WIFI_MGR_NETWORK_PROFILE *ConnectPendingNetwork;\r
197 BOOLEAN HasDisconnectPendingNetwork;\r
198\r
199 //\r
200 //Profile related data fields\r
201 //\r
202 LIST_ENTRY ProfileList; // List of WIFI_MGR_NETWORK_PROFILE\r
203 UINT32 AvailableCount;\r
204 UINT32 MaxProfileIndex;\r
205 WIFI_MGR_NETWORK_PROFILE *UserSelectedProfile;\r
206\r
207 //\r
208 // Data fields for Hii functionlity\r
209 //\r
210 BOOLEAN OneTimeScanRequest;\r
211 BOOLEAN OneTimeConnectRequest;\r
212 BOOLEAN OneTimeDisconnectRequest;\r
213 WIFI_MGR_SCAN_STATE ScanState;\r
214 UINTN ScanTickTime;\r
215 WIFI_MGR_CONNECT_STATE ConnectState;\r
216 BOOLEAN ConnectStateChanged;\r
217} WIFI_MGR_DEVICE_DATA;\r
218\r
219#define WIFI_MGR_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('W','M','D','D')\r
220\r
221#define WIFI_MGR_DEVICE_DATA_FROM_IDENTIFIER(Identifier) \\r
222 CR ( \\r
223 Identifier, \\r
224 WIFI_MGR_DEVICE_DATA, \\r
225 WifiMgrIdentifier, \\r
226 WIFI_MGR_DEVICE_DATA_SIGNATURE \\r
227 )\r
228\r
229typedef struct {\r
230 UINT32 Signature;\r
231 LIST_ENTRY Link;\r
232 CHAR16 SSId[SSID_STORAGE_SIZE];\r
233} WIFI_HIDDEN_NETWORK_DATA;\r
234\r
235#define WIFI_MGR_HIDDEN_NETWORK_SIGNATURE SIGNATURE_32 ('W','M','H','N')\r
236\r
237#define WIFI_MGR_HIDDEN_NETWORK_FROM_IDENTIFIER(Identifier) \\r
238 CR ( \\r
239 Identifier, \\r
240 WIFI_HIDDEN_NETWORK_DATA, \\r
241 WifiMgrIdentifier, \\r
242 WIFI_MGR_HIDDEN_NETWORK_SIGNATURE \\r
243 )\r
244\r
245//\r
246// Global private data struct\r
247//\r
248struct _WIFI_MGR_PRIVATE_DATA {\r
249\r
250 UINT32 Signature;\r
251 EFI_HANDLE DriverHandle;\r
252 EFI_HII_HANDLE RegisteredHandle;\r
253 EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;\r
254\r
255 UINT32 NicCount;\r
256 LIST_ENTRY NicList;\r
257 WIFI_MGR_DEVICE_DATA *CurrentNic;\r
258\r
259 //\r
260 // Data fields for Hii functionlity\r
261 //\r
262 EFI_EVENT NetworkListRefreshEvent; // Event to refresh the network list form\r
263 EFI_EVENT ConnectFormRefreshEvent; // Event to refresh the connect form\r
264 EFI_EVENT MainPageRefreshEvent; // Event to refresh the main page\r
265\r
266 //\r
267 //User Input Record\r
268 //\r
269 UINT8 SecurityType;\r
270 UINT8 EapAuthMethod;\r
271 UINT8 EapSecondAuthMethod;\r
272 CHAR16 EapIdentity[EAP_IDENTITY_SIZE];\r
273\r
274 WIFI_MGR_FILE_CONTEXT *FileContext;\r
275 WIFI_MGR_FILE_TYPE FileType;\r
276\r
277 UINT32 HiddenNetworkCount;\r
278 LIST_ENTRY HiddenNetworkList;\r
279};\r
280\r
281#define WIFI_MGR_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('W','M','P','D')\r
282\r
283#define WIFI_MGR_PRIVATE_DATA_FROM_CONFIG_ACCESS(This) \\r
284 CR ( \\r
285 This, \\r
286 WIFI_MGR_PRIVATE_DATA, \\r
287 ConfigAccess, \\r
288 WIFI_MGR_PRIVATE_DATA_SIGNATURE \\r
289 )\r
290extern WIFI_MGR_PRIVATE_DATA *mPrivate;\r
291\r
292typedef enum {\r
293 TokenTypeGetNetworksToken,\r
294 TokenTypeConnectNetworkToken,\r
295 TokenTypeDisconnectNetworkToken,\r
296 TokenTypeMax,\r
297} WIFI_MGR_MAC_CONFIG_TOKEN_TYPE;\r
298\r
299typedef union {\r
300 EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken;\r
301 EFI_80211_CONNECT_NETWORK_TOKEN *ConnectNetworkToken;\r
302 EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectNetworkToken;\r
303} MAC_CONNECTION2_ADAPTER_TOKEN;\r
304\r
305typedef struct {\r
306 WIFI_MGR_DEVICE_DATA *Nic;\r
307 WIFI_MGR_MAC_CONFIG_TOKEN_TYPE Type;\r
308 MAC_CONNECTION2_ADAPTER_TOKEN Token;\r
309} WIFI_MGR_MAC_CONFIG_TOKEN;\r
310\r
311//\r
312// Include files with function prototypes\r
313//\r
314#include "WifiConnectionMgrDriverBinding.h"\r
315#include "WifiConnectionMgrImpl.h"\r
316#include "WifiConnectionMgrComponentName.h"\r
317#include "WifiConnectionMgrHiiConfigAccess.h"\r
318#include "WifiConnectionMgrMisc.h"\r
319#include "WifiConnectionMgrFileUtil.h"\r
320\r
321#endif\r