123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334 |
- /** @file
- The miscellaneous structure definitions for WiFi connection driver.
- Copyright (c) 2019 - 2022, Intel Corporation. All rights reserved.<BR>
- SPDX-License-Identifier: BSD-2-Clause-Patent
- **/
- #ifndef __EFI_WIFI_MGR_DXE_H__
- #define __EFI_WIFI_MGR_DXE_H__
- #include <Uefi.h>
- //
- // Libraries
- //
- #include <Library/UefiBootServicesTableLib.h>
- #include <Library/UefiRuntimeServicesTableLib.h>
- #include <Library/MemoryAllocationLib.h>
- #include <Library/BaseMemoryLib.h>
- #include <Library/BaseLib.h>
- #include <Library/UefiLib.h>
- #include <Library/DevicePathLib.h>
- #include <Library/DebugLib.h>
- #include <Library/HiiLib.h>
- #include <Library/NetLib.h>
- #include <Library/PrintLib.h>
- #include <Library/UefiHiiServicesLib.h>
- #include <Library/FileExplorerLib.h>
- //
- // UEFI Driver Model Protocols
- //
- #include <Protocol/DriverBinding.h>
- #include <Protocol/HiiDatabase.h>
- #include <Protocol/HiiPackageList.h>
- #include <Protocol/ComponentName2.h>
- #include <Protocol/ComponentName.h>
- //
- // Consumed Protocols
- //
- #include <Protocol/WiFi2.h>
- #include <Protocol/AdapterInformation.h>
- #include <Protocol/Supplicant.h>
- #include <Protocol/SimpleNetwork.h>
- #include <Protocol/SimpleFileSystem.h>
- #include <Protocol/EapConfiguration.h>
- #include <Protocol/WiFiProfileSyncProtocol.h>
- //
- // Produced Protocols
- //
- #include <Protocol/HiiConfigAccess.h>
- //
- // Guids
- //
- #include <Guid/ImageAuthentication.h>
- #include <Guid/MdeModuleHii.h>
- #include <Guid/WifiConnectionManagerConfigHii.h>
- //
- // NvData struct definition
- //
- #include "WifiConnectionMgrConfigNVDataStruct.h"
- #include "WifiConnectionMgrConfig.h"
- #include "EapContext.h"
- #include "WifiConnectionMgrConfigHii.h"
- //
- // Driver Version
- //
- #define WIFI_MGR_DXE_VERSION 0xb
- #define OUI_IEEE_80211I 0xAC0F00
- #define MAX_WIFI_CONNETION_ATTEMPTS 3
- typedef enum {
- Ieee80211PairwiseCipherSuiteUseGroupCipherSuite = 0,
- Ieee80211PairwiseCipherSuiteWEP40 = 1,
- Ieee80211PairwiseCipherSuiteTKIP = 2,
- Ieee80211PairwiseCipherSuiteCCMP = 4,
- Ieee80211PairwiseCipherSuiteWEP104 = 5,
- Ieee80211PairwiseCipherSuiteBIP = 6,
- Ieee80211PairwiseCipherSuiteGCMP = 8,
- Ieee80211PairwiseCipherSuiteGCMP256 = 9,
- // ...
- } IEEE_80211_PAIRWISE_CIPHER_SUITE;
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_USE_GROUP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteUseGroupCipherSuite << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP40 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP40 << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_TKIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteTKIP << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_CCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteCCMP << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_WEP104 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteWEP104 << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_BIP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteBIP << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteGCMP << 24))
- #define IEEE_80211_PAIRWISE_CIPHER_SUITE_GCMP256 (OUI_IEEE_80211I | (Ieee80211PairwiseCipherSuiteGCMP256 << 24))
- typedef enum {
- Ieee80211AkmSuite8021XOrPMKSA = 1,
- Ieee80211AkmSuitePSK = 2,
- Ieee80211AkmSuite8021XOrPMKSASHA256 = 5,
- Ieee80211AkmSuitePSKSHA256 = 6,
- Ieee80211AkmSuiteSAE = 8,
- Ieee80211AkmSuite8021XSuiteB = 11,
- Ieee80211AkmSuite8021XSuiteB192 = 12,
- Ieee80211AkmSuiteOWE = 18,
- // ...
- } IEEE_80211_AKM_SUITE;
- #define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSA << 24))
- #define IEEE_80211_AKM_SUITE_PSK (OUI_IEEE_80211I | (Ieee80211AkmSuitePSK << 24))
- #define IEEE_80211_AKM_SUITE_8021X_OR_PMKSA_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XOrPMKSASHA256 << 24))
- #define IEEE_80211_AKM_SUITE_PSK_SHA256 (OUI_IEEE_80211I | (Ieee80211AkmSuitePSKSHA256 << 24))
- #define IEEE_80211_AKM_SUITE_SAE (OUI_IEEE_80211I | (Ieee80211AkmSuiteSAE << 24))
- #define IEEE_80211_AKM_SUITE_8021X_SUITE_B (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XSuiteB << 24))
- #define IEEE_80211_AKM_SUITE_8021X_SUITE_B192 (OUI_IEEE_80211I | (Ieee80211AkmSuite8021XSuiteB192 << 24))
- #define IEEE_80211_AKM_SUITE_OWE (OUI_IEEE_80211I | (Ieee80211AkmSuiteOWE << 24))
- //
- // Protocol instances
- //
- extern EFI_DRIVER_BINDING_PROTOCOL gWifiMgrDxeDriverBinding;
- extern EFI_COMPONENT_NAME2_PROTOCOL gWifiMgrDxeComponentName2;
- extern EFI_COMPONENT_NAME_PROTOCOL gWifiMgrDxeComponentName;
- extern EFI_HII_CONFIG_ACCESS_PROTOCOL gWifiMgrDxeHiiConfigAccess;
- //
- // Private Context Data Structure
- //
- typedef enum {
- WifiMgrDisconnected,
- WifiMgrConnectingToAp,
- WifiMgrConnectedToAp,
- WifiMgrDisconnectingToAp,
- WifiMgrConnectStateMaximum
- } WIFI_MGR_CONNECT_STATE;
- typedef enum {
- WifiMgrScanFinished,
- WifiMgrScanning,
- WifiMgrScanStateMaximum
- } WIFI_MGR_SCAN_STATE;
- #define WIFI_SCAN_FREQUENCY 30
- typedef struct _WIFI_MGR_SUPPORTED_SUITES {
- EFI_80211_AKM_SUITE_SELECTOR *SupportedAKMSuites;
- EFI_80211_CIPHER_SUITE_SELECTOR *SupportedSwCipherSuites;
- EFI_80211_CIPHER_SUITE_SELECTOR *SupportedHwCipherSuites;
- } WIFI_MGR_SUPPORTED_SUITES;
- #define EFI_WIFIMGR_PRIVATE_GUID \
- { \
- 0x99b7c019, 0x4789, 0x4829, { 0xa7, 0xbd, 0x0d, 0x4b, 0xaa, 0x62, 0x28, 0x72 } \
- }
- typedef struct _WIFI_MGR_PRIVATE_DATA WIFI_MGR_PRIVATE_DATA;
- typedef struct _WIFI_MGR_PRIVATE_PROTOCOL {
- UINT32 Reserved;
- } WIFI_MGR_PRIVATE_PROTOCOL;
- typedef struct _WIFI_MGR_FILE_CONTEXT {
- EFI_FILE_HANDLE FHandle;
- UINT16 *FileName;
- } WIFI_MGR_FILE_CONTEXT;
- typedef enum {
- FileTypeCACert,
- FileTypeClientCert,
- FileTypeMax
- } WIFI_MGR_FILE_TYPE;
- typedef struct {
- UINT32 Signature;
- EFI_HANDLE DriverHandle;
- EFI_HANDLE ControllerHandle;
- EFI_EVENT TickTimer;
- WIFI_MGR_PRIVATE_DATA *Private;
- //
- // Pointers to consumed protocols
- //
- EFI_WIRELESS_MAC_CONNECTION_II_PROTOCOL *Wmp;
- EFI_SUPPLICANT_PROTOCOL *Supplicant;
- EFI_EAP_CONFIGURATION_PROTOCOL *EapConfig;
- //
- // Produced protocols
- //
- WIFI_MGR_PRIVATE_PROTOCOL WifiMgrIdentifier;
- //
- // Private functions and data fields
- //
- LIST_ENTRY Link; // Link to the NicList in global private data structure.
- UINT32 NicIndex;
- EFI_80211_MAC_ADDRESS MacAddress;
- WIFI_MGR_SUPPORTED_SUITES SupportedSuites;
- EFI_ADAPTER_INFO_MEDIA_STATE LastLinkState;
- //
- // The network is currently connected, connecting or disconnecting.
- // Only one network can be operated at one time.
- //
- WIFI_MGR_NETWORK_PROFILE *CurrentOperateNetwork;
- WIFI_MGR_NETWORK_PROFILE *ConnectPendingNetwork;
- BOOLEAN HasDisconnectPendingNetwork;
- //
- // Profile related data fields
- //
- LIST_ENTRY ProfileList; // List of WIFI_MGR_NETWORK_PROFILE
- UINT32 AvailableCount;
- UINT32 MaxProfileIndex;
- WIFI_MGR_NETWORK_PROFILE *UserSelectedProfile;
- //
- // Data fields for Hii functionlity
- //
- BOOLEAN OneTimeScanRequest;
- BOOLEAN OneTimeConnectRequest;
- BOOLEAN OneTimeDisconnectRequest;
- WIFI_MGR_SCAN_STATE ScanState;
- UINTN ScanTickTime;
- WIFI_MGR_CONNECT_STATE ConnectState;
- BOOLEAN ConnectStateChanged;
- } WIFI_MGR_DEVICE_DATA;
- #define WIFI_MGR_DEVICE_DATA_SIGNATURE SIGNATURE_32 ('W','M','D','D')
- #define WIFI_MGR_DEVICE_DATA_FROM_IDENTIFIER(Identifier) \
- CR ( \
- Identifier, \
- WIFI_MGR_DEVICE_DATA, \
- WifiMgrIdentifier, \
- WIFI_MGR_DEVICE_DATA_SIGNATURE \
- )
- typedef struct {
- UINT32 Signature;
- LIST_ENTRY Link;
- CHAR16 SSId[SSID_STORAGE_SIZE];
- } WIFI_HIDDEN_NETWORK_DATA;
- #define WIFI_MGR_HIDDEN_NETWORK_SIGNATURE SIGNATURE_32 ('W','M','H','N')
- #define WIFI_MGR_HIDDEN_NETWORK_FROM_IDENTIFIER(Identifier) \
- CR ( \
- Identifier, \
- WIFI_HIDDEN_NETWORK_DATA, \
- WifiMgrIdentifier, \
- WIFI_MGR_HIDDEN_NETWORK_SIGNATURE \
- )
- //
- // Global private data struct
- //
- struct _WIFI_MGR_PRIVATE_DATA {
- UINT32 Signature;
- EFI_HANDLE DriverHandle;
- EFI_HII_HANDLE RegisteredHandle;
- EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess;
- UINT32 NicCount;
- LIST_ENTRY NicList;
- WIFI_MGR_DEVICE_DATA *CurrentNic;
- //
- // Data fields for Hii functionlity
- //
- EFI_EVENT NetworkListRefreshEvent; // Event to refresh the network list form
- EFI_EVENT ConnectFormRefreshEvent; // Event to refresh the connect form
- EFI_EVENT MainPageRefreshEvent; // Event to refresh the main page
- //
- // User Input Record
- //
- UINT8 SecurityType;
- UINT8 EapAuthMethod;
- UINT8 EapSecondAuthMethod;
- CHAR16 EapIdentity[EAP_IDENTITY_SIZE];
- WIFI_MGR_FILE_CONTEXT *FileContext;
- WIFI_MGR_FILE_TYPE FileType;
- UINT32 HiddenNetworkCount;
- LIST_ENTRY HiddenNetworkList;
- };
- #define WIFI_MGR_PRIVATE_DATA_SIGNATURE SIGNATURE_32 ('W','M','P','D')
- #define WIFI_MGR_PRIVATE_DATA_FROM_CONFIG_ACCESS(This) \
- CR ( \
- This, \
- WIFI_MGR_PRIVATE_DATA, \
- ConfigAccess, \
- WIFI_MGR_PRIVATE_DATA_SIGNATURE \
- )
- extern WIFI_MGR_PRIVATE_DATA *mPrivate;
- typedef enum {
- TokenTypeGetNetworksToken,
- TokenTypeConnectNetworkToken,
- TokenTypeDisconnectNetworkToken,
- TokenTypeMax,
- } WIFI_MGR_MAC_CONFIG_TOKEN_TYPE;
- typedef union {
- EFI_80211_GET_NETWORKS_TOKEN *GetNetworksToken;
- EFI_80211_CONNECT_NETWORK_TOKEN *ConnectNetworkToken;
- EFI_80211_DISCONNECT_NETWORK_TOKEN *DisconnectNetworkToken;
- } MAC_CONNECTION2_ADAPTER_TOKEN;
- typedef struct {
- WIFI_MGR_DEVICE_DATA *Nic;
- WIFI_MGR_MAC_CONFIG_TOKEN_TYPE Type;
- MAC_CONNECTION2_ADAPTER_TOKEN Token;
- } WIFI_MGR_MAC_CONFIG_TOKEN;
- //
- // Include files with function prototypes
- //
- #include "WifiConnectionMgrDriverBinding.h"
- #include "WifiConnectionMgrImpl.h"
- #include "WifiConnectionMgrComponentName.h"
- #include "WifiConnectionMgrHiiConfigAccess.h"
- #include "WifiConnectionMgrMisc.h"
- #include "WifiConnectionMgrFileUtil.h"
- #endif
|