VirtualBox

source: vbox/trunk/src/VBox/Devices/EFI/Firmware/NetworkPkg/WifiConnectionManagerDxe/WifiConnectionMgrDxe.h@ 81913

Last change on this file since 81913 was 80721, checked in by vboxsync, 5 years ago

Devices/EFI/FirmwareNew: Start upgrade process to edk2-stable201908 (compiles on Windows and works to some extent), bugref:4643

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

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette