| /** @file | |
| This file provides management service interfaces of 802.11 MAC layer. It is used by | |
| network applications (and drivers) to establish wireless connection with an access | |
| point (AP). | |
| Copyright (c) 2015 - 2016, Intel Corporation. All rights reserved.<BR> | |
| SPDX-License-Identifier: BSD-2-Clause-Patent | |
| @par Revision Reference: | |
| This Protocol is introduced in UEFI Specification 2.5 | |
| **/ | |
| #ifndef __EFI_WIFI_PROTOCOL_H__ | |
| #define __EFI_WIFI_PROTOCOL_H__ | |
| #include <Protocol/WiFi2.h> | |
| #define EFI_WIRELESS_MAC_CONNECTION_PROTOCOL_GUID \ | |
| { \ | |
| 0xda55bc9, 0x45f8, 0x4bb4, {0x87, 0x19, 0x52, 0x24, 0xf1, 0x8a, 0x4d, 0x45 } \ | |
| } | |
| typedef struct _EFI_WIRELESS_MAC_CONNECTION_PROTOCOL EFI_WIRELESS_MAC_CONNECTION_PROTOCOL; | |
| /// | |
| /// EFI_80211_ACC_NET_TYPE | |
| /// | |
| typedef enum { | |
| IeeePrivate = 0, | |
| IeeePrivatewithGuest = 1, | |
| IeeeChargeablePublic = 2, | |
| IeeeFreePublic = 3, | |
| IeeePersonal = 4, | |
| IeeeEmergencyServOnly = 5, | |
| IeeeTestOrExp = 14, | |
| IeeeWildcard = 15 | |
| } EFI_80211_ACC_NET_TYPE; | |
| /// | |
| /// EFI_80211_ASSOCIATE_RESULT_CODE | |
| /// | |
| typedef enum { | |
| AssociateSuccess, | |
| AssociateRefusedReasonUnspecified, | |
| AssociateRefusedCapsMismatch, | |
| AssociateRefusedExtReason, | |
| AssociateRefusedAPOutOfMemory, | |
| AssociateRefusedBasicRatesMismatch, | |
| AssociateRejectedEmergencyServicesNotSupported, | |
| AssociateRefusedTemporarily | |
| } EFI_80211_ASSOCIATE_RESULT_CODE; | |
| /// | |
| /// EFI_80211_SCAN_RESULT_CODE | |
| /// | |
| typedef enum { | |
| /// | |
| /// The scan operation finished successfully. | |
| /// | |
| ScanSuccess, | |
| /// | |
| /// The scan operation is not supported in current implementation. | |
| /// | |
| ScanNotSupported | |
| } EFI_80211_SCAN_RESULT_CODE; | |
| /// | |
| /// EFI_80211_REASON_CODE | |
| /// | |
| typedef enum { | |
| Ieee80211UnspecifiedReason = 1, | |
| Ieee80211PreviousAuthenticateInvalid = 2, | |
| Ieee80211DeauthenticatedSinceLeaving = 3, | |
| Ieee80211DisassociatedDueToInactive = 4, | |
| Ieee80211DisassociatedSinceApUnable = 5, | |
| Ieee80211Class2FrameNonauthenticated = 6, | |
| Ieee80211Class3FrameNonassociated = 7, | |
| Ieee80211DisassociatedSinceLeaving = 8, | |
| // ... | |
| } EFI_80211_REASON_CODE; | |
| /// | |
| /// EFI_80211_DISASSOCIATE_RESULT_CODE | |
| /// | |
| typedef enum { | |
| /// | |
| /// Disassociation process completed successfully. | |
| /// | |
| DisassociateSuccess, | |
| /// | |
| /// Disassociation failed due to any input parameter is invalid. | |
| /// | |
| DisassociateInvalidParameters | |
| } EFI_80211_DISASSOCIATE_RESULT_CODE; | |
| /// | |
| /// EFI_80211_AUTHENTICATION_TYPE | |
| /// | |
| typedef enum { | |
| /// | |
| /// Open system authentication, admits any STA to the DS. | |
| /// | |
| OpenSystem, | |
| /// | |
| /// Shared Key authentication relies on WEP to demonstrate knowledge of a WEP | |
| /// encryption key. | |
| /// | |
| SharedKey, | |
| /// | |
| /// FT authentication relies on keys derived during the initial mobility domain | |
| /// association to authenticate the stations. | |
| /// | |
| FastBSSTransition, | |
| /// | |
| /// SAE authentication uses finite field cryptography to prove knowledge of a shared | |
| /// password. | |
| /// | |
| SAE | |
| } EFI_80211_AUTHENTICATION_TYPE; | |
| /// | |
| /// EFI_80211_AUTHENTICATION_RESULT_CODE | |
| /// | |
| typedef enum { | |
| AuthenticateSuccess, | |
| AuthenticateRefused, | |
| AuthenticateAnticLoggingTokenRequired, | |
| AuthenticateFiniteCyclicGroupNotSupported, | |
| AuthenticationRejected, | |
| AuthenticateInvalidParameter | |
| } EFI_80211_AUTHENTICATE_RESULT_CODE; | |
| /// | |
| /// EFI_80211_ELEMENT_HEADER | |
| /// | |
| typedef struct { | |
| /// | |
| /// A unique element ID defined in IEEE 802.11 specification. | |
| /// | |
| UINT8 ElementID; | |
| /// | |
| /// Specifies the number of octets in the element body. | |
| /// | |
| UINT8 Length; | |
| } EFI_80211_ELEMENT_HEADER; | |
| /// | |
| /// EFI_80211_ELEMENT_REQ | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Start of elements that are requested to be included in the Probe Response frame. | |
| /// The elements are listed in order of increasing element ID. | |
| /// | |
| UINT8 RequestIDs[1]; | |
| } EFI_80211_ELEMENT_REQ; | |
| /// | |
| /// EFI_80211_ELEMENT_SSID | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Service set identifier. If Hdr.Length is zero, this field is ignored. | |
| /// | |
| UINT8 SSId[32]; | |
| } EFI_80211_ELEMENT_SSID; | |
| /// | |
| /// EFI_80211_SCAN_DATA | |
| /// | |
| typedef struct { | |
| /// | |
| /// Determines whether infrastructure BSS, IBSS, MBSS, or all, are included in the | |
| /// scan. | |
| /// | |
| EFI_80211_BSS_TYPE BSSType; | |
| /// | |
| /// Indicates a specific or wildcard BSSID. Use all binary 1s to represent all SSIDs. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Length in bytes of the SSId. If zero, ignore SSId field. | |
| /// | |
| UINT8 SSIdLen; | |
| /// | |
| /// Specifies the desired SSID or the wildcard SSID. Use NULL to represent all SSIDs. | |
| /// | |
| UINT8 *SSId; | |
| /// | |
| /// Indicates passive scanning if TRUE. | |
| /// | |
| BOOLEAN PassiveMode; | |
| /// | |
| /// The delay in microseconds to be used prior to transmitting a Probe frame during | |
| /// active scanning. If zero, the value can be overridden by an | |
| /// implementation-dependent default value. | |
| /// | |
| UINT32 ProbeDelay; | |
| /// | |
| /// Specifies a list of channels that are examined when scanning for a BSS. If set to | |
| /// NULL, all valid channels will be scanned. | |
| /// | |
| UINT32 *ChannelList; | |
| /// | |
| /// Indicates the minimum time in TU to spend on each channel when scanning. If zero, | |
| /// the value can be overridden by an implementation-dependent default value. | |
| /// | |
| UINT32 MinChannelTime; | |
| /// | |
| /// Indicates the maximum time in TU to spend on each channel when scanning. If zero, | |
| /// the value can be overridden by an implementation-dependent default value. | |
| /// | |
| UINT32 MaxChannelTime; | |
| /// | |
| /// Points to an optionally present element. This is an optional parameter and may be | |
| /// NULL. | |
| /// | |
| EFI_80211_ELEMENT_REQ *RequestInformation; | |
| /// | |
| /// Indicates one or more SSID elements that are optionally present. This is an | |
| /// optional parameter and may be NULL. | |
| /// | |
| EFI_80211_ELEMENT_SSID *SSIDList; | |
| /// | |
| /// Specifies a desired specific access network type or the wildcard access network | |
| /// type. Use 15 as wildcard access network type. | |
| /// | |
| EFI_80211_ACC_NET_TYPE AccessNetworkType; | |
| /// | |
| /// Specifies zero or more elements. This is an optional parameter and may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_SCAN_DATA; | |
| /// | |
| /// EFI_80211_COUNTRY_TRIPLET_SUBBAND | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates the lowest channel number in the subband. It has a positive integer | |
| /// value less than 201. | |
| /// | |
| UINT8 FirstChannelNum; | |
| /// | |
| /// Indicates the number of channels in the subband. | |
| /// | |
| UINT8 NumOfChannels; | |
| /// | |
| /// Indicates the maximum power in dBm allowed to be transmitted. | |
| /// | |
| UINT8 MaxTxPowerLevel; | |
| } EFI_80211_COUNTRY_TRIPLET_SUBBAND; | |
| /// | |
| /// EFI_80211_COUNTRY_TRIPLET_OPERATE | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates the operating extension identifier. It has a positive integer value of | |
| /// 201 or greater. | |
| /// | |
| UINT8 OperatingExtId; | |
| /// | |
| /// Index into a set of values for radio equipment set of rules. | |
| /// | |
| UINT8 OperatingClass; | |
| /// | |
| /// Specifies aAirPropagationTime characteristics used in BSS operation. Refer the | |
| /// definition of aAirPropagationTime in IEEE 802.11 specification. | |
| /// | |
| UINT8 CoverageClass; | |
| } EFI_80211_COUNTRY_TRIPLET_OPERATE; | |
| /// | |
| /// EFI_80211_COUNTRY_TRIPLET | |
| /// | |
| typedef union { | |
| /// | |
| /// The subband triplet. | |
| /// | |
| EFI_80211_COUNTRY_TRIPLET_SUBBAND Subband; | |
| /// | |
| /// The operating triplet. | |
| /// | |
| EFI_80211_COUNTRY_TRIPLET_OPERATE Operating; | |
| } EFI_80211_COUNTRY_TRIPLET; | |
| /// | |
| /// EFI_80211_ELEMENT_COUNTRY | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Specifies country strings in 3 octets. | |
| /// | |
| UINT8 CountryStr[3]; | |
| /// | |
| /// Indicates a triplet that repeated in country element. The number of triplets is | |
| /// determined by the Hdr.Length field. | |
| /// | |
| EFI_80211_COUNTRY_TRIPLET CountryTriplet[1]; | |
| } EFI_80211_ELEMENT_COUNTRY; | |
| /// | |
| /// EFI_80211_ELEMENT_DATA_RSN | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates the version number of the RSNA protocol. Value 1 is defined in current | |
| /// IEEE 802.11 specification. | |
| /// | |
| UINT16 Version; | |
| /// | |
| /// Specifies the cipher suite selector used by the BSS to protect group address frames. | |
| /// | |
| UINT32 GroupDataCipherSuite; | |
| /// | |
| /// Indicates the number of pairwise cipher suite selectors that are contained in | |
| /// PairwiseCipherSuiteList. | |
| /// | |
| // UINT16 PairwiseCipherSuiteCount; | |
| /// | |
| /// Contains a series of cipher suite selectors that indicate the pairwise cipher | |
| /// suites contained in this element. | |
| /// | |
| // UINT32 PairwiseCipherSuiteList[PairwiseCipherSuiteCount]; | |
| /// | |
| /// Indicates the number of AKM suite selectors that are contained in AKMSuiteList. | |
| /// | |
| // UINT16 AKMSuiteCount; | |
| /// | |
| /// Contains a series of AKM suite selectors that indicate the AKM suites contained in | |
| /// this element. | |
| /// | |
| // UINT32 AKMSuiteList[AKMSuiteCount]; | |
| /// | |
| /// Indicates requested or advertised capabilities. | |
| /// | |
| // UINT16 RSNCapabilities; | |
| /// | |
| /// Indicates the number of PKMIDs in the PMKIDList. | |
| /// | |
| // UINT16 PMKIDCount; | |
| /// | |
| /// Contains zero or more PKMIDs that the STA believes to be valid for the destination | |
| /// AP. | |
| // UINT8 PMKIDList[PMKIDCount][16]; | |
| /// | |
| /// Specifies the cipher suite selector used by the BSS to protect group addressed | |
| /// robust management frames. | |
| /// | |
| // UINT32 GroupManagementCipherSuite; | |
| } EFI_80211_ELEMENT_DATA_RSN; | |
| /// | |
| /// EFI_80211_ELEMENT_RSN | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Points to RSN element. The size of a RSN element is limited to 255 octets. | |
| /// | |
| EFI_80211_ELEMENT_DATA_RSN *Data; | |
| } EFI_80211_ELEMENT_RSN; | |
| /// | |
| /// EFI_80211_ELEMENT_EXT_CAP | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Indicates the capabilities being advertised by the STA transmitting the element. | |
| /// This is a bit field with variable length. Refer to IEEE 802.11 specification for | |
| /// bit value. | |
| /// | |
| UINT8 Capabilities[1]; | |
| } EFI_80211_ELEMENT_EXT_CAP; | |
| /// | |
| /// EFI_80211_BSS_DESCRIPTION | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates a specific BSSID of the found BSS. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the SSID of the found BSS. If NULL, ignore SSIdLen field. | |
| /// | |
| UINT8 *SSId; | |
| /// | |
| /// Specifies the SSID of the found BSS. If NULL, ignore SSIdLen field. | |
| /// | |
| UINT8 SSIdLen; | |
| /// | |
| /// Specifies the type of the found BSS. | |
| /// | |
| EFI_80211_BSS_TYPE BSSType; | |
| /// | |
| /// The beacon period in TU of the found BSS. | |
| /// | |
| UINT16 BeaconPeriod; | |
| /// | |
| /// The timestamp of the received frame from the found BSS. | |
| /// | |
| UINT64 Timestamp; | |
| /// | |
| /// The advertised capabilities of the BSS. | |
| /// | |
| UINT16 CapabilityInfo; | |
| /// | |
| /// The set of data rates that shall be supported by all STAs that desire to join this | |
| /// BSS. | |
| /// | |
| UINT8 *BSSBasicRateSet; | |
| /// | |
| /// The set of data rates that the peer STA desires to use for communication within | |
| /// the BSS. | |
| /// | |
| UINT8 *OperationalRateSet; | |
| /// | |
| /// The information required to identify the regulatory domain in which the peer STA | |
| /// is located. | |
| /// | |
| EFI_80211_ELEMENT_COUNTRY *Country; | |
| /// | |
| /// The cipher suites and AKM suites supported in the BSS. | |
| /// | |
| EFI_80211_ELEMENT_RSN RSN; | |
| /// | |
| /// Specifies the RSSI of the received frame. | |
| /// | |
| UINT8 RSSI; | |
| /// | |
| /// Specifies the RCPI of the received frame. | |
| /// | |
| UINT8 RCPIMeasurement; | |
| /// | |
| /// Specifies the RSNI of the received frame. | |
| /// | |
| UINT8 RSNIMeasurement; | |
| /// | |
| /// Specifies the elements requested by the request element of the Probe Request frame. | |
| /// This is an optional parameter and may be NULL. | |
| /// | |
| UINT8 *RequestedElements; | |
| /// | |
| /// Specifies the BSS membership selectors that represent the set of features that | |
| /// shall be supported by all STAs to join this BSS. | |
| /// | |
| UINT8 *BSSMembershipSelectorSet; | |
| /// | |
| /// Specifies the parameters within the Extended Capabilities element that are | |
| /// supported by the MAC entity. This is an optional parameter and may be NULL. | |
| /// | |
| EFI_80211_ELEMENT_EXT_CAP *ExtCapElement; | |
| } EFI_80211_BSS_DESCRIPTION; | |
| /// | |
| /// EFI_80211_SUBELEMENT_INFO | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates the unique identifier within the containing element or sub-element. | |
| /// | |
| UINT8 SubElementID; | |
| /// | |
| /// Specifies the number of octets in the Data field. | |
| /// | |
| UINT8 Length; | |
| /// | |
| /// A variable length data buffer. | |
| /// | |
| UINT8 Data[1]; | |
| } EFI_80211_SUBELEMENT_INFO; | |
| /// | |
| /// EFI_80211_MULTIPLE_BSSID | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Indicates the maximum number of BSSIDs in the multiple BSSID set. When Indicator | |
| /// is set to n, 2n is the maximum number. | |
| /// | |
| UINT8 Indicator; | |
| /// | |
| /// Contains zero or more sub-elements. | |
| /// | |
| EFI_80211_SUBELEMENT_INFO SubElement[1]; | |
| } EFI_80211_MULTIPLE_BSSID; | |
| /// | |
| /// EFI_80211_BSS_DESP_PILOT | |
| /// | |
| typedef struct { | |
| /// | |
| /// Indicates a specific BSSID of the found BSS. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the type of the found BSS. | |
| /// | |
| EFI_80211_BSS_TYPE BSSType; | |
| /// | |
| /// One octet field to report condensed capability information. | |
| /// | |
| UINT8 ConCapInfo; | |
| /// | |
| /// Two octet's field to report condensed country string. | |
| /// | |
| UINT8 ConCountryStr[2]; | |
| /// | |
| /// Indicates the operating class value for the operating channel. | |
| /// | |
| UINT8 OperatingClass; | |
| /// | |
| /// Indicates the operating channel. | |
| /// | |
| UINT8 Channel; | |
| /// | |
| /// Indicates the measurement pilot interval in TU. | |
| /// | |
| UINT8 Interval; | |
| /// | |
| /// Indicates that the BSS is within a multiple BSSID set. | |
| /// | |
| EFI_80211_MULTIPLE_BSSID *MultipleBSSID; | |
| /// | |
| /// Specifies the RCPI of the received frame. | |
| /// | |
| UINT8 RCPIMeasurement; | |
| /// | |
| /// Specifies the RSNI of the received frame. | |
| /// | |
| UINT8 RSNIMeasurement; | |
| } EFI_80211_BSS_DESP_PILOT; | |
| /// | |
| /// EFI_80211_SCAN_RESULT | |
| /// | |
| typedef struct { | |
| /// | |
| /// The number of EFI_80211_BSS_DESCRIPTION in BSSDespSet. If zero, BSSDespSet should | |
| /// be ignored. | |
| /// | |
| UINTN NumOfBSSDesp; | |
| /// | |
| /// Points to zero or more instances of EFI_80211_BSS_DESCRIPTION. | |
| /// | |
| EFI_80211_BSS_DESCRIPTION **BSSDespSet; | |
| /// | |
| /// The number of EFI_80211_BSS_DESP_PILOT in BSSDespFromPilotSet. If zero, | |
| /// BSSDespFromPilotSet should be ignored. | |
| /// | |
| UINTN NumofBSSDespFromPilot; | |
| /// | |
| /// Points to zero or more instances of EFI_80211_BSS_DESP_PILOT. | |
| /// | |
| EFI_80211_BSS_DESP_PILOT **BSSDespFromPilotSet; | |
| /// | |
| /// Specifies zero or more elements. This is an optional parameter and may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_SCAN_RESULT; | |
| /// | |
| /// EFI_80211_SCAN_DATA_TOKEN | |
| /// | |
| typedef struct { | |
| /// | |
| /// This Event will be signaled after the Status field is updated by the EFI Wireless | |
| /// MAC Connection Protocol driver. The type of Event must be EFI_NOTIFY_SIGNAL. | |
| /// | |
| EFI_EVENT Event; | |
| /// | |
| /// Will be set to one of the following values: | |
| /// EFI_SUCCESS: Scan operation completed successfully. | |
| /// EFI_NOT_FOUND: Failed to find available BSS. | |
| /// EFI_DEVICE_ERROR: An unexpected network or system error occurred. | |
| /// EFI_ACCESS_DENIED: The scan operation is not completed due to some underlying | |
| /// hardware or software state. | |
| /// EFI_NOT_READY: The scan operation is started but not yet completed. | |
| EFI_STATUS Status; | |
| /// | |
| /// Pointer to the scan data. | |
| /// | |
| EFI_80211_SCAN_DATA *Data; | |
| /// | |
| /// Indicates the scan state. | |
| /// | |
| EFI_80211_SCAN_RESULT_CODE ResultCode; | |
| /// | |
| /// Indicates the scan result. It is caller's responsibility to free this buffer. | |
| /// | |
| EFI_80211_SCAN_RESULT *Result; | |
| } EFI_80211_SCAN_DATA_TOKEN; | |
| /// | |
| /// EFI_80211_ELEMENT_SUPP_CHANNEL_TUPLE | |
| /// | |
| typedef struct { | |
| /// | |
| /// The first channel number in a subband of supported channels. | |
| /// | |
| UINT8 FirstChannelNumber; | |
| /// | |
| /// The number of channels in a subband of supported channels. | |
| /// | |
| UINT8 NumberOfChannels; | |
| } EFI_80211_ELEMENT_SUPP_CHANNEL_TUPLE; | |
| /// | |
| /// EFI_80211_ELEMENT_SUPP_CHANNEL | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Indicates one or more tuples of (first channel, number of channels). | |
| /// | |
| EFI_80211_ELEMENT_SUPP_CHANNEL_TUPLE Subband[1]; | |
| } EFI_80211_ELEMENT_SUPP_CHANNEL; | |
| /// | |
| /// EFI_80211_ASSOCIATE_DATA | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity to associate with. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the requested operational capabilities to the AP in 2 octets. | |
| /// | |
| UINT16 CapabilityInfo; | |
| /// | |
| /// Specifies a time limit in TU, after which the associate procedure is terminated. | |
| /// | |
| UINT32 FailureTimeout; | |
| /// | |
| /// Specifies if in power save mode, how often the STA awakes and listens for the next | |
| /// beacon frame in TU. | |
| /// | |
| UINT32 ListenInterval; | |
| /// | |
| /// Indicates a list of channels in which the STA is capable of operating. | |
| /// | |
| EFI_80211_ELEMENT_SUPP_CHANNEL *Channels; | |
| /// | |
| /// The cipher suites and AKM suites selected by the STA. | |
| /// | |
| EFI_80211_ELEMENT_RSN RSN; | |
| /// | |
| /// Specifies the parameters within the Extended Capabilities element that are | |
| /// supported by the MAC entity. This is an optional parameter and may be NULL. | |
| /// | |
| EFI_80211_ELEMENT_EXT_CAP *ExtCapElement; | |
| /// | |
| /// Specifies zero or more elements. This is an optional parameter and may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_ASSOCIATE_DATA; | |
| /// | |
| /// EFI_80211_ELEMENT_TIMEOUT_VAL | |
| /// | |
| typedef struct { | |
| /// | |
| /// Common header of an element. | |
| /// | |
| EFI_80211_ELEMENT_HEADER Hdr; | |
| /// | |
| /// Specifies the timeout interval type. | |
| /// | |
| UINT8 Type; | |
| /// | |
| /// Specifies the timeout interval value. | |
| /// | |
| UINT32 Value; | |
| } EFI_80211_ELEMENT_TIMEOUT_VAL; | |
| /// | |
| /// EFI_80211_ASSOCIATE_RESULT | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity from which the association request | |
| /// was received. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the operational capabilities advertised by the AP. | |
| /// | |
| UINT16 CapabilityInfo; | |
| /// | |
| /// Specifies the association ID value assigned by the AP. | |
| /// | |
| UINT16 AssociationID; | |
| /// | |
| /// Indicates the measured RCPI of the corresponding association request frame. It is | |
| /// an optional parameter and is set to zero if unavailable. | |
| /// | |
| UINT8 RCPIValue; | |
| /// | |
| /// Indicates the measured RSNI at the time the corresponding association request | |
| /// frame was received. It is an optional parameter and is set to zero if unavailable. | |
| /// | |
| UINT8 RSNIValue; | |
| /// | |
| /// Specifies the parameters within the Extended Capabilities element that are | |
| /// supported by the MAC entity. This is an optional parameter and may be NULL. | |
| /// | |
| EFI_80211_ELEMENT_EXT_CAP *ExtCapElement; | |
| /// | |
| /// Specifies the timeout interval when the result code is AssociateRefusedTemporarily. | |
| /// | |
| EFI_80211_ELEMENT_TIMEOUT_VAL TimeoutInterval; | |
| /// | |
| /// Specifies zero or more elements. This is an optional parameter and may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_ASSOCIATE_RESULT; | |
| /// | |
| /// EFI_80211_ASSOCIATE_DATA_TOKEN | |
| /// | |
| typedef struct { | |
| /// | |
| /// This Event will be signaled after the Status field is updated by the EFI Wireless | |
| /// MAC Connection Protocol driver. The type of Event must be EFI_NOTIFY_SIGNAL. | |
| /// | |
| EFI_EVENT Event; | |
| /// | |
| /// Will be set to one of the following values: | |
| /// EFI_SUCCESS: Association operation completed successfully. | |
| /// EFI_DEVICE_ERROR: An unexpected network or system error occurred. | |
| /// | |
| EFI_STATUS Status; | |
| /// | |
| /// Pointer to the association data. | |
| /// | |
| EFI_80211_ASSOCIATE_DATA *Data; | |
| /// | |
| /// Indicates the association state. | |
| /// | |
| EFI_80211_ASSOCIATE_RESULT_CODE ResultCode; | |
| /// | |
| /// Indicates the association result. It is caller's responsibility to free this | |
| /// buffer. | |
| /// | |
| EFI_80211_ASSOCIATE_RESULT *Result; | |
| } EFI_80211_ASSOCIATE_DATA_TOKEN; | |
| /// | |
| /// EFI_80211_DISASSOCIATE_DATA | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity with which to perform the | |
| /// disassociation process. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the reason for initiating the disassociation process. | |
| /// | |
| EFI_80211_REASON_CODE ReasonCode; | |
| /// | |
| /// Zero or more elements, may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_DISASSOCIATE_DATA; | |
| /// | |
| /// EFI_80211_DISASSOCIATE_DATA_TOKEN | |
| /// | |
| typedef struct { | |
| /// | |
| /// This Event will be signaled after the Status field is updated by the EFI Wireless | |
| /// MAC Connection Protocol driver. The type of Event must be EFI_NOTIFY_SIGNAL. | |
| /// | |
| EFI_EVENT Event; | |
| /// | |
| /// Will be set to one of the following values: | |
| /// EFI_SUCCESS: Disassociation operation completed successfully. | |
| /// EFI_DEVICE_ERROR: An unexpected network or system error occurred. | |
| /// EFI_ACCESS_DENIED: The disassociation operation is not completed due to some | |
| /// underlying hardware or software state. | |
| /// EFI_NOT_READY: The disassociation operation is started but not yet completed. | |
| /// | |
| EFI_STATUS Status; | |
| /// | |
| /// Pointer to the disassociation data. | |
| /// | |
| EFI_80211_DISASSOCIATE_DATA *Data; | |
| /// | |
| /// Indicates the disassociation state. | |
| /// | |
| EFI_80211_DISASSOCIATE_RESULT_CODE ResultCode; | |
| } EFI_80211_DISASSOCIATE_DATA_TOKEN; | |
| /// | |
| /// EFI_80211_AUTHENTICATION_DATA | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity with which to perform the | |
| /// authentication process. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the type of authentication algorithm to use during the authentication | |
| /// process. | |
| /// | |
| EFI_80211_AUTHENTICATION_TYPE AuthType; | |
| /// | |
| /// Specifies a time limit in TU after which the authentication procedure is | |
| /// terminated. | |
| /// | |
| UINT32 FailureTimeout; | |
| /// | |
| /// Specifies the set of elements to be included in the first message of the FT | |
| /// authentication sequence, may be NULL. | |
| /// | |
| UINT8 *FTContent; | |
| /// | |
| /// Specifies the set of elements to be included in the SAE Commit Message or SAE | |
| /// Confirm Message, may be NULL. | |
| /// | |
| UINT8 *SAEContent; | |
| /// | |
| /// Zero or more elements, may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_AUTHENTICATE_DATA; | |
| /// | |
| /// EFI_80211_AUTHENTICATION_RESULT | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity from which the authentication request | |
| /// was received. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the set of elements to be included in the second message of the FT | |
| /// authentication sequence, may be NULL. | |
| /// | |
| UINT8 *FTContent; | |
| /// | |
| /// Specifies the set of elements to be included in the SAE Commit Message or SAE | |
| /// Confirm Message, may be NULL. | |
| /// | |
| UINT8 *SAEContent; | |
| /// | |
| /// Zero or more elements, may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_AUTHENTICATE_RESULT; | |
| /// | |
| /// EFI_80211_AUTHENTICATE_DATA_TOKEN | |
| /// | |
| typedef struct { | |
| /// | |
| /// This Event will be signaled after the Status field is updated by the EFI Wireless | |
| /// MAC Connection Protocol driver. The type of Event must be EFI_NOTIFY_SIGNAL. | |
| /// | |
| EFI_EVENT Event; | |
| /// | |
| /// Will be set to one of the following values: | |
| /// EFI_SUCCESS: Authentication operation completed successfully. | |
| /// EFI_PROTOCOL_ERROR: Peer MAC entity rejects the authentication. | |
| /// EFI_NO_RESPONSE: Peer MAC entity does not response the authentication request. | |
| /// EFI_DEVICE_ERROR: An unexpected network or system error occurred. | |
| /// EFI_ACCESS_DENIED: The authentication operation is not completed due to some | |
| /// underlying hardware or software state. | |
| /// EFI_NOT_READY: The authentication operation is started but not yet completed. | |
| /// | |
| EFI_STATUS Status; | |
| /// | |
| /// Pointer to the authentication data. | |
| /// | |
| EFI_80211_AUTHENTICATE_DATA *Data; | |
| /// | |
| /// Indicates the association state. | |
| /// | |
| EFI_80211_AUTHENTICATE_RESULT_CODE ResultCode; | |
| /// | |
| /// Indicates the association result. It is caller's responsibility to free this | |
| /// buffer. | |
| /// | |
| EFI_80211_AUTHENTICATE_RESULT *Result; | |
| } EFI_80211_AUTHENTICATE_DATA_TOKEN; | |
| /// | |
| /// EFI_80211_DEAUTHENTICATE_DATA | |
| /// | |
| typedef struct { | |
| /// | |
| /// Specifies the address of the peer MAC entity with which to perform the | |
| /// deauthentication process. | |
| /// | |
| EFI_80211_MAC_ADDRESS BSSId; | |
| /// | |
| /// Specifies the reason for initiating the deauthentication process. | |
| /// | |
| EFI_80211_REASON_CODE ReasonCode; | |
| /// | |
| /// Zero or more elements, may be NULL. | |
| /// | |
| UINT8 *VendorSpecificInfo; | |
| } EFI_80211_DEAUTHENTICATE_DATA; | |
| /// | |
| /// EFI_80211_DEAUTHENTICATE_DATA_TOKEN | |
| /// | |
| typedef struct { | |
| /// | |
| /// This Event will be signaled after the Status field is updated by the EFI Wireless | |
| /// MAC Connection Protocol driver. The type of Event must be EFI_NOTIFY_SIGNAL. | |
| /// | |
| EFI_EVENT Event; | |
| /// | |
| /// Will be set to one of the following values: | |
| /// EFI_SUCCESS: Deauthentication operation completed successfully. | |
| /// EFI_DEVICE_ERROR: An unexpected network or system error occurred. | |
| /// EFI_ACCESS_DENIED: The deauthentication operation is not completed due to some | |
| /// underlying hardware or software state. | |
| /// EFI_NOT_READY: The deauthentication operation is started but not yet | |
| /// completed. | |
| /// | |
| EFI_STATUS Status; | |
| /// | |
| /// Pointer to the deauthentication data. | |
| /// | |
| EFI_80211_DEAUTHENTICATE_DATA *Data; | |
| } EFI_80211_DEAUTHENTICATE_DATA_TOKEN; | |
| /** | |
| Request a survey of potential BSSs that administrator can later elect to try to join. | |
| The Scan() function returns the description of the set of BSSs detected by the scan | |
| process. Passive scan operation is performed by default. | |
| @param[in] This Pointer to the EFI_WIRELESS_MAC_CONNECTION_PROTOCOL | |
| instance. | |
| @param[in] Data Pointer to the scan token. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
| This is NULL. | |
| Data is NULL. | |
| Data->Data is NULL. | |
| @retval EFI_UNSUPPORTED One or more of the input parameters are not supported | |
| by this implementation. | |
| @retval EFI_ALREADY_STARTED The scan operation is already started. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_WIRELESS_MAC_CONNECTION_SCAN)( | |
| IN EFI_WIRELESS_MAC_CONNECTION_PROTOCOL *This, | |
| IN EFI_80211_SCAN_DATA_TOKEN *Data | |
| ); | |
| /** | |
| Request an association with a specified peer MAC entity that is within an AP. | |
| The Associate() function provides the capability for MAC layer to become associated | |
| with an AP. | |
| @param[in] This Pointer to the EFI_WIRELESS_MAC_CONNECTION_PROTOCOL | |
| instance. | |
| @param[in] Data Pointer to the association token. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
| This is NULL. | |
| Data is NULL. | |
| Data->Data is NULL. | |
| @retval EFI_UNSUPPORTED One or more of the input parameters are not supported | |
| by this implementation. | |
| @retval EFI_ALREADY_STARTED The association process is already started. | |
| @retval EFI_NOT_READY Authentication is not performed before this association | |
| process. | |
| @retval EFI_NOT_FOUND The specified peer MAC entity is not found. | |
| @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_WIRELESS_MAC_CONNECTION_ASSOCIATE)( | |
| IN EFI_WIRELESS_MAC_CONNECTION_PROTOCOL *This, | |
| IN EFI_80211_ASSOCIATE_DATA_TOKEN *Data | |
| ); | |
| /** | |
| Request a disassociation with a specified peer MAC entity. | |
| The Disassociate() function is invoked to terminate an existing association. | |
| Disassociation is a notification and cannot be refused by the receiving peer except | |
| when management frame protection is negotiated and the message integrity check fails. | |
| @param[in] This Pointer to the EFI_WIRELESS_MAC_CONNECTION_PROTOCOL | |
| instance. | |
| @param[in] Data Pointer to the disassociation token. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
| This is NULL. | |
| Data is NULL. | |
| @retval EFI_ALREADY_STARTED The disassociation process is already started. | |
| @retval EFI_NOT_READY The disassociation service is invoked to a | |
| nonexistent association relationship. | |
| @retval EFI_NOT_FOUND The specified peer MAC entity is not found. | |
| @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_WIRELESS_MAC_CONNECTION_DISASSOCIATE)( | |
| IN EFI_WIRELESS_MAC_CONNECTION_PROTOCOL *This, | |
| IN EFI_80211_DISASSOCIATE_DATA_TOKEN *Data | |
| ); | |
| /** | |
| Request the process of establishing an authentication relationship with a peer MAC | |
| entity. | |
| The Authenticate() function requests authentication with a specified peer MAC entity. | |
| This service might be time-consuming thus is designed to be invoked independently of | |
| the association service. | |
| @param[in] This Pointer to the EFI_WIRELESS_MAC_CONNECTION_PROTOCOL | |
| instance. | |
| @param[in] Data Pointer to the authentication token. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
| This is NULL. | |
| Data is NULL. | |
| Data.Data is NULL. | |
| @retval EFI_UNSUPPORTED One or more of the input parameters are not supported | |
| by this implementation. | |
| @retval EFI_ALREADY_STARTED The authentication process is already started. | |
| @retval EFI_NOT_FOUND The specified peer MAC entity is not found. | |
| @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_WIRELESS_MAC_CONNECTION_AUTHENTICATE)( | |
| IN EFI_WIRELESS_MAC_CONNECTION_PROTOCOL *This, | |
| IN EFI_80211_AUTHENTICATE_DATA_TOKEN *Data | |
| ); | |
| /** | |
| Invalidate the authentication relationship with a peer MAC entity. | |
| The Deauthenticate() function requests that the authentication relationship with a | |
| specified peer MAC entity be invalidated. Deauthentication is a notification and when | |
| it is sent out the association at the transmitting station is terminated. | |
| @param[in] This Pointer to the EFI_WIRELESS_MAC_CONNECTION_PROTOCOL | |
| instance. | |
| @param[in] Data Pointer to the deauthentication token. | |
| @retval EFI_SUCCESS The operation completed successfully. | |
| @retval EFI_INVALID_PARAMETER One or more of the following conditions is TRUE: | |
| This is NULL. | |
| Data is NULL. | |
| Data.Data is NULL. | |
| @retval EFI_ALREADY_STARTED The deauthentication process is already started. | |
| @retval EFI_NOT_READY The deauthentication service is invoked to a | |
| nonexistent association or authentication relationship. | |
| @retval EFI_NOT_FOUND The specified peer MAC entity is not found. | |
| @retval EFI_OUT_OF_RESOURCES Required system resources could not be allocated. | |
| **/ | |
| typedef | |
| EFI_STATUS | |
| (EFIAPI *EFI_WIRELESS_MAC_CONNECTION_DEAUTHENTICATE)( | |
| IN EFI_WIRELESS_MAC_CONNECTION_PROTOCOL *This, | |
| IN EFI_80211_DEAUTHENTICATE_DATA_TOKEN *Data | |
| ); | |
| /// | |
| /// The EFI_WIRELESS_MAC_CONNECTION_PROTOCOL is designed to provide management service | |
| /// interfaces for the EFI wireless network stack to establish wireless connection with | |
| /// AP. An EFI Wireless MAC Connection Protocol instance will be installed on each | |
| /// communication device that the EFI wireless network stack runs on. | |
| /// | |
| struct _EFI_WIRELESS_MAC_CONNECTION_PROTOCOL { | |
| EFI_WIRELESS_MAC_CONNECTION_SCAN Scan; | |
| EFI_WIRELESS_MAC_CONNECTION_ASSOCIATE Associate; | |
| EFI_WIRELESS_MAC_CONNECTION_DISASSOCIATE Disassociate; | |
| EFI_WIRELESS_MAC_CONNECTION_AUTHENTICATE Authenticate; | |
| EFI_WIRELESS_MAC_CONNECTION_DEAUTHENTICATE Deauthenticate; | |
| }; | |
| extern EFI_GUID gEfiWiFiProtocolGuid; | |
| #endif |