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