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