alder_lake_bios/Intel/AlderLake/ClientOneSiliconPkg/Include/AsfMsgs.h

764 lines
24 KiB
C

/** @file
AMT/ASF Messages
@copyright
INTEL CONFIDENTIAL
Copyright 2015 - 2021 Intel Corporation.
The source code contained or described herein and all documents related to the
source code ("Material") are owned by Intel Corporation or its suppliers or
licensors. Title to the Material remains with Intel Corporation or its suppliers
and licensors. The Material may contain trade secrets and proprietary and
confidential information of Intel Corporation and its suppliers and licensors,
and is protected by worldwide copyright and trade secret laws and treaty
provisions. No part of the Material may be used, copied, reproduced, modified,
published, uploaded, posted, transmitted, distributed, or disclosed in any way
without Intel's prior express written permission.
No license under any patent, copyright, trade secret or other intellectual
property right is granted to or conferred upon you by disclosure or delivery
of the Materials, either expressly, by implication, inducement, estoppel or
otherwise. Any license under such intellectual property rights must be
express and approved by Intel in writing.
Unless otherwise agreed by Intel in writing, you may not remove or alter
this notice or any other notice embedded in Materials by Intel or
Intel's suppliers or licensors in any way.
This file contains an 'Intel Peripheral Driver' and is uniquely identified as
"Intel Reference Module" and is licensed for Intel CPUs and chipsets under
the terms of your license agreement with Intel or your vendor. This file may
be modified by the user, subject to additional terms of the license agreement.
@par Specification Reference:
**/
#ifndef _ASF_MSGS_H_
#define _ASF_MSGS_H_
#include <AmthiMsgs.h>
#include <Pi/PiStatusCode.h>
#include <IndustryStandardAsf.h>
#include <IntelAsfExtensions.h>
#pragma pack(1)
//
// Calculates Byte count of ASF MESSAGE structure
//
#define ASF_MESSAGE_BYTE_COUNT(a) (a-2)
//
// Always define the whole ASF message structure so you can use the macro for ByteCount calculation
//
#define ASF_MESSAGE_BYTE_COUNT_MAP(a) (ASF_MESSAGE_BYTE_COUNT(sizeof(a)))
///
/// Abstract ASF message header. This header is part of HECI message sent from BIOS to AMT/ASF ME Client
///
typedef union {
UINT32 Data;
struct {
UINT32 Command : 8; ///< ASF Message Command.
UINT32 ByteCount : 8; ///< ASF Message Bytes Count Beyond This Byte.
UINT32 SubCommand : 8; ///< ASF Message Sub-command.
UINT32 VersionNumber : 8; ///< ASF Specification Version.
} Fields;
} ASF_MESSAGE_HEADER;
//
// Management Control Command Definitions
//
///
/// Start Watchdog Timer Type
///
#define ASF_START_BIOS_WDT 0
#define ASF_START_OS_WDT 1
///
/// Start Watchdog Timer Message Structure.
/// This structure is only used for Starting Watchdog Timer Message.
/// Elements' description is based on Start Watchdog Timer.
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT8 TimeoutLow; ///< Low byte of watchdog timeout value in seconds.
UINT8 TimeoutHigh; ///< High byte of watchdog timeout value in seconds.
UINT8 EventSensorType; ///< Default value is 0x23 to indicate it is for Watchdog 2.
UINT8 EventType; ///< Default value is 0x6F to indicate it is Sensor specific.
UINT8 EventOffset; ///< Default value is 0x00 to indicate it is for Timer expired.
/**
Class of device or type of software that originated the event.
0x00: Platform firmware
0x48: OS vendor
**/
UINT8 EventSourceType;
UINT8 EventSeverity; ///< Default value is 0x10 to indicate it is Critical.
UINT8 SensorDevice; ///< Default value is 0xFF to indicate it is Unspecified.
UINT8 SensorNumber; ///< Default value is 0xFF to indicate it is Unspecified.
UINT8 Entity; ///< Default value is 0x00 to indicate it is Unspecified.
UINT8 EntityInstance; ///< Default value is 0x00 to indicate it is Unspecified.
/**
Additional parametric data byte.
BYTE 0: 0x40
BYTE 1: 0x02, BIOS POST WDT Timeout
0x04, OS WDT Timeout
BYTE 2-4: Not defined.
**/
UINT8 EventData[5];
} ASF_START_WDT;
///
/// Stop Watchdog Timer Message Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} ASF_STOP_WDT;
//
// ASF Configuration Command Definitions
//
///
/// Clear Boot Options Message Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} CLEAR_BOOT_OPTIONS;
///
/// Return Boot Options
/// Elements' description is based on Get Boot Options and No Boot Options Message.
///
typedef struct {
/**
ASF Message Sub-command.
0x16: Return boot option
0x17: No boot option
**/
UINT8 SubCommand;
UINT8 Version; ///< Default value is 0x10 to indicate ASF Specification Version.
/**
IANA-assigned Enterprise Number.
0x000011BE: IANA Enterprise Number for ASF
0x00000157: IANA Enterprise Number for Intel
**/
UINT32 IanaId;
/**
Defines commands to be processed by the managed client on the boot initiated by the ASF-RMCP message.
0x00: NOP
0x01: Force PXE Boot
0x02: Force Hard-drive Boot
0x03: Force Hard-drive Safe Mode Boot
0x04: Force Diagnostic Boot
0x05: Force CD/DVD Boot
0x06-0xBF: Reserved
0xC0-0xFF: OEM special commands
0xC1: Intel special command
**/
UINT8 SpecialCommand;
UINT8 SpecialCommandParamHighByte; ///< Defines a command parameter to augment the Special Command High Byte.
UINT8 SpecialCommandParamLowByte; ///< Defines a command parameter to augment the Special Command Low Byte.
UINT8 BootOptionsMaskByte1; ///< Defines a standard set of firmware operations.
UINT8 BootOptionsMaskByte2; ///< Defines a standard set of firmware operations.
UINT8 OemParameterByte1; ///< Defines parameters that further augment the Special Command definition.
UINT8 OemParameterByte2; ///< Defines parameters that further augment the Special Command definition.
} ASF_BOOT_OPTIONS;
///
/// Get Boot Options Response Structure
///
typedef struct {
UINT8 Command; ///< ASF Message Command.
UINT8 ByteCount; ///< ASF Message Bytes Count Beyond This Byte.
ASF_BOOT_OPTIONS AsfBootOptions; ///< ASF Return Boot Options.
} GET_BOOT_OPTIONS_RESPONSE;
///
/// Get Boot Options Request Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} GET_BOOT_OPTIONS;
///
/// Get Boot Options Union Buffer
///
typedef union {
GET_BOOT_OPTIONS Request;
GET_BOOT_OPTIONS_RESPONSE Response;
} GET_BOOT_OPTIONS_BUFFER;
//
// Get Remote Secure Erase Password
//
#define RSE_PASSWORD_MAX_LENGTH 32
///
/// Get RSE Password Response Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT16 PasswordLength; ///< Password length in bytes.
CHAR8 Password[RSE_PASSWORD_MAX_LENGTH]; ///< RSE Password.
} GET_RSE_PASSWORD_RESPONSE;
///
/// Get RSE Password Request Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} GET_RSE_PASSWORD;
///
/// Get RSE Password Union Buffer
///
typedef union {
GET_RSE_PASSWORD Request;
GET_RSE_PASSWORD_RESPONSE Response;
} GET_RSE_PASSWORD_BUFFER;
///
/// Report BIOS Status
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
union {
struct {
/**
Current BIOS Status.
0: Success
1: In Progress
2: Not reported
0xFFFF: Failed
**/
UINT16 BiosStatus;
/**
The Reason Causes Current BIOS Status.
0: BiosStatus is Success/InProgress
1: General Drive Failure
2: Drive Password/Authentication Failure
3: Feature is not supported
**/
UINT16 StatusCause;
} Field;
UINT32 Data;
} AsfBiosStatus;
} REPORT_BIOS_STATUS;
//
// AMT Boot Control Structure
//
typedef union {
// Individual bit fields
struct {
UINT32 Reserved : 1; ///< [0] Reserved
UINT32 AmtTrigBootToHttps : 1; ///< [1] AMT can trigger Https Boot
UINT32 AmtTrigBootToPba : 1; ///< [2] AMT can trigger PBA Boot
UINT32 AmtTrigBootToWinRe : 1; ///< [3] AMT can trigger WinRe Boot
UINT32 AmtAllowedToDisSecureBoot : 1; ///< [4] AMT is allowed to disable secure boot
UINT32 WifiProfileSync : 1; ///< [5] Wifi Profile Sync
UINT32 BiosPasswordAuthRequired : 1; ///< [6] BIOS password authorization required
UINT32 Reserved1 : 1; ///< [7] Reserved
UINT32 RemotePlatformErase : 1; ///< [8] Remote Platform Erase
UINT32 Reserved2 : 23; ///< [31:9] Reserved
} Bits;
UINT32 Uint32;
} AMT_BOOT_CONTROL;
//
// Set UEFI Boot Options State Message Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
AMT_BOOT_CONTROL AmtBootControl; ///< AMT Boot Control
} SET_UEFI_BOOT_OPTIONS_STATE;
//
// Set UEFI Boot Options State Response Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
AMT_STATUS Status; ///< AMT Status
} SET_UEFI_BOOT_OPTIONS_STATE_RESPONSE;
//
// Set UEFI Boot Options State Union Buffer
//
typedef union {
SET_UEFI_BOOT_OPTIONS_STATE Request;
SET_UEFI_BOOT_OPTIONS_STATE_RESPONSE Response;
} SET_UEFI_BOOT_OPTIONS_STATE_BUFFER;
//
// Get UEFI Boot Options State Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} GET_UEFI_BOOT_OPTIONS_STATE;
//
// Get UEFI Boot Options State Response Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
AMT_BOOT_CONTROL AmtBootControl; ///< AMT Boot Control
} GET_UEFI_BOOT_OPTIONS_STATE_RESPONSE;
//
// Get UEFI Boot Options State Union Buffer
//
typedef union {
GET_UEFI_BOOT_OPTIONS_STATE Request;
GET_UEFI_BOOT_OPTIONS_STATE_RESPONSE Response;
} GET_UEFI_BOOT_OPTIONS_STATE_BUFFER;
//
// Boot Options Types
//
typedef enum {
Https,
Pba,
WinRe
} BOOT_OPTION_TYPE;
// Max Description Length of UEFI Boot Option
#define MAX_UEFI_BOOT_OPTION_DESC_LENGTH 100
// Max Device Path Length of UEFI Boot Option
#define MAX_UEFI_BOOT_OPTION_DEV_PATH_LENGTH 300
// Max Number of UEFI Boot Options
#define MAX_UEFI_BOOT_OPTIONS 10
//
// UEFI Boot Option Stucture
//
typedef struct {
UINT32 UefiBootOptionType; ///< Type of UEFI Boot Option
UINT16 DescriptionLength; ///< Length of Description
UINT8 Description[MAX_UEFI_BOOT_OPTION_DESC_LENGTH]; ///< Description
UINT16 DevicePathLength; ///< Length of Device Path
UINT8 EfiDevicePath[MAX_UEFI_BOOT_OPTION_DEV_PATH_LENGTH]; ///< EFi Device Path
} UEFI_BOOT_OPTION;
//
// Update UEFI Boot Options Message Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
UINT16 NumOfUefiBootOptions; ///< Number of UEFI Boot Options
UEFI_BOOT_OPTION UefiBootOptions[0]; ///< UEFI Boot Options
} UPDATE_UEFI_BOOT_OPTIONS;
//
// Update UEFI Boot Options Response Structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
AMT_STATUS Status; ///< AMT Status
} UPDATE_UEFI_BOOT_OPTIONS_RESPONSE;
//
// Update UEFI Boot Options Union Buffer
//
typedef union {
UPDATE_UEFI_BOOT_OPTIONS Request;
UPDATE_UEFI_BOOT_OPTIONS_RESPONSE Response;
} UPDATE_UEFI_BOOT_OPTIONS_BUFFER;
//
// Get UEFI Boot Parameters Message structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
UINT32 Nonce; ///< Nonce
} GET_UEFI_BOOT_PARAMETERS;
// Max Size of UEFI Boot Parameter Array
#define MAX_UEFI_BOOT_PARAMETERS_ARRAY_SIZE 1024
//
// UEFI Boot Parameter Option Strcuture
//
typedef struct {
UINT32 UefiBootOptionType; ///< Type of UEFI Boot Option
UINT16 EfiDevicePathLen; ///< Length of EFI Device Path
UINT8 EfiDevicePath[MAX_UEFI_BOOT_OPTION_DEV_PATH_LENGTH]; ///< EFI Device Path
UINT32 NumberOfParams; ///< Number of Parameters
UINT32 LengthOfParamsArray; ///< Length of Parameter Array
UINT8 ParametersArray[MAX_UEFI_BOOT_PARAMETERS_ARRAY_SIZE]; ///< Parameter Array
} UEFI_BOOT_OPTION_PARAMETER;
//
// Get UEFI Boot Parameters Response structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
UINT32 Nonce; ///< Nonce
UEFI_BOOT_OPTION_PARAMETER UefiBootOptionWithParams; ///< Uefi Boot Option Parameters
} GET_UEFI_BOOT_OPTION_PARAMETERS_RESPONSE;
//
// Get UEFI Boot Parameters Union Buffer
//
typedef union {
GET_UEFI_BOOT_PARAMETERS Request;
GET_UEFI_BOOT_OPTION_PARAMETERS_RESPONSE Response;
} GET_UEFI_BOOT_OPTION_PARAMETERS_BUFFER;
//
// Get Root Certificate Authority(CA) Certificate Message structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
UINT32 Nonce; ///< Nonce
UINT32 RootCACertIndex; ///< Index of Root CA Certificate
} GET_ROOT_CA_CERTIFICATE;
// Max Number of Root Certificate Authority(CA) Certificate
#define MAX_NUM_ROOT_CA_CERTIFICATE 4
// Max Size of a Root Certificate Authority(CA) Certificate
#define MAX_ROOT_CA_CERTIFICATE_SIZE 4100
//
// Root Certificate Authority(CA) Certificate Stucture
//
typedef struct {
UINT32 CertSize; ///< Size of Certificate
UINT8 Cert[MAX_ROOT_CA_CERTIFICATE_SIZE]; ///< Certificate
UINT32 LastCert; ///< Is this the Last Certificate
} ROOT_CA_CERTIFICATE;
//
// Get Root Certificate Authority(CA) Certificate Response structure
//
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header
UINT32 Nonce; ///< Nonce
ROOT_CA_CERTIFICATE Cert; ///< Root CA Certificate
} GET_ROOT_CA_CERTIFICATE_RESPONSE;
//
// Get Root CA Certificate Union Buffer
//
typedef union {
GET_ROOT_CA_CERTIFICATE Request;
GET_ROOT_CA_CERTIFICATE_RESPONSE Response;
} GET_ROOT_CA_CERTIFICATE_BUFFER;
//
// Messaging Command Definitions
//
///
/// ASF Message
///
typedef struct {
UINT8 SubCommand; ///< ASF Message Sub-command.
UINT8 Version; ///< ASF Specification Version.
UINT8 EventSensorType; ///< The Event Sensor Type field indicates what types of events the sensor is monitoring.
UINT8 EventType; ///< Code indicating what type of transition/state change triggered the trap.
UINT8 EventOffset; ///< Indicates which particular event occurred for a given Event Type.
UINT8 EventSourceType; ///< Class of device or type of software that originated the event.
UINT8 EventSeverity; ///< Severity of the event.
UINT8 SensorDevice; ///< Identifies the instance of the device that holds the sensor that generated the event.
UINT8 SensorNumber; ///< Identify a given instance of a sensor relative to the Sensor Device.
UINT8 Entity; ///< Indicates the platform entity the event is associated with.
UINT8 EntityInstance; ///< Indicates which instance of the Entity the event is for.
UINT8 EventData1; ///< Additional parametric data 1.
UINT8 EventData2; ///< Additional parametric data 2.
} ASF_MESSAGE;
///
/// ASF Push Progress Code
///
typedef struct {
UINT8 Command; ///< ASF Message Command.
UINT8 ByteCount; ///< ASF Message Bytes Count Beyond This Byte.
ASF_MESSAGE AsfMessage; ///< ASF Message Instance.
UINT8 EventData[3]; ///< Additional parametric data.
} HECI_ASF_PUSH_PROGRESS_CODE;
///
/// ASF Framework Message
///
typedef struct {
ASF_FRAMEWORK_MESSAGE_TYPE MessageType; ///< ASF Message Type.
ASF_MESSAGE Message; ///< ASF Message Instance.
} ASF_FRAMEWORK_MESSAGE;
///
/// Data Hub of ASF Progress Status
///
typedef struct {
ASF_FRAMEWORK_MESSAGE_TYPE MessageType; ///< ASF Message Type.
EFI_STATUS_CODE_VALUE StatusCodeValue; ///< Platform Progress Status Code.
} ASF_DATA_HUB_MAP;
///
/// Platform Event Trap (PET) Alert To Indicate Which Event Causes The Alert.
/// This structure is used for sending Remote Secure Erase / Boot Audit Entry PET Message.
/// Elements' description is based on Remote Secure Erase / Boot Audit Entry.
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT8 EventSensorType; ///< Default value is 0x0F to indicate it is Firmware progress/error type.
UINT8 EventType; ///< Default value is 0x6F to indicate it is Sensor specific.
/**
Indicates which particular event occurred for a given Event Type.
For Remote Secure Erase:
0x03: OEM specific firmware error
0x05: OEM specific firmware progress
For Boot Audit Entry:
0x00: System Firmware Error
0x01: System Firmware Hang
0x02: System Firmware In Progress
**/
UINT8 EventOffset;
UINT8 EventSourceType; ///< Default value is 0x68 to indicate it is ASF 1.0.
/**
Severity of the event.
0x01: Monitor
0x02: Information
0x04: Ok
0x08: Non-critical
0x10: Critical
0x20: Non-Recoverable
**/
UINT8 EventSeverity;
UINT8 SensorDevice; ///< Default value is 0xFF to indicate it is Unspecified.
UINT8 Sensornumber; ///< Default value is 0xFF to indicate it is Unspecified.
/**
Indicates the platform device or subsystem associated with the event.
0x00: Unspecified
0x01: Other
0x02: Unknown
0x03: Processor
0x04: Disk
0x05: Peripheral
0x07: System Board
0x0A: Power Supply
0x0B: Add-in Card
0x20: Memory
0x22: BIOS
0x23: OS
**/
UINT8 Entity;
/**
Identifies which unique device is associated with the event when a system includes multiple device instances.
For Remote Secure Erase:
0xFF: Unspecified
For Boot Audit Entry:
0x00: Unspecified
**/
UINT8 EntityInstance;
/**
The Event Type determines the Event Data.
For Remote Secure Erase:
0xAA: Indicate EventData 2-5 set by OEM specification.
For Boot Audit Entry:
0x40: EventData 2 conforms ASF spec.
0xAA: Indicate EventData 2-5 set by OEM specification.
**/
UINT8 EventData1;
/**
Additional Event Data 2.
For Remote Secure Erase:
0x20: Indicate it is for Remote Secure Erase.
For Boot Audit Entry:
0x13: Performing system boot.
**/
UINT8 EventData2;
/**
Additional Event Data 3.
For Remote Secure Erase:
Success Case: 0x00 - Secure erase success
Failure Case: 0x01 - General failure
0x02 - Drive authentication failure
0x03 - Feature is not supported
0x04 - 0XFF - Reserved
For Boot Audit Entry (Boot Device Not Changed):
00: Not used.
For Boot Audit Entry (Boot Device Changed):
N/A: Most recent BAE queue entry.
**/
UINT8 EventData3;
/**
Additional Event Data 4.
For Remote Secure Erase:
N/A: Not used.
For Boot Audit Entry (Boot Device Not Changed):
N/A: Not used.
For Boot Audit Entry (Boot Device Changed):
N/A: Next most recent BAE queue entry.
**/
UINT8 EventData4;
/**
Additional Event Data 5.
For Remote Secure Erase:
N/A: Not used.
For Boot Audit Entry (Boot Device Not Changed):
N/A: Not used.
For Boot Audit Entry (Boot Device Changed):
N/A: Oldest BAE queue entry.
**/
UINT8 EventData5;
} PET_ALERT;
//
// LAN Command Definitions
//
///
/// Set Active LAN Interface Request Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT8 ActiveInterface; ///< 0:As defined in FIT; 1:Integrated LAN; 2:Discrete LAN.
} AMT_SET_ACTIVE_LAN_INTERFACE;
///
/// Set Active LAN Interface Response Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT32 Status; ///< Response status.
} AMT_SET_ACTIVE_LAN_INTERFACE_RESPONSE;
///
/// Set Active LAN Interface Union Buffer
///
typedef union {
AMT_SET_ACTIVE_LAN_INTERFACE Request;
AMT_SET_ACTIVE_LAN_INTERFACE_RESPONSE Response;
} AMT_SET_ACTIVE_LAN_INTERFACE_BUFFER;
///
/// Get Active LAN Interface Request Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
} AMT_GET_ACTIVE_LAN_INTERFACE;
///
/// Get Active LAN Interface Response Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT32 Status; ///< Response status.
UINT8 ActiveInterface; ///< 0:As defined in FIT; 1:Integrated LAN; 2:Discrete LAN.
UINT32 Reserved[4]; ///< Reserved for future use.
} AMT_GET_ACTIVE_LAN_INTERFACE_RESPONSE;
///
/// Get Active LAN Interface Union Buffer
///
typedef union {
AMT_GET_ACTIVE_LAN_INTERFACE Request;
AMT_GET_ACTIVE_LAN_INTERFACE_RESPONSE Response;
} AMT_GET_ACTIVE_LAN_INTERFACE_BUFFER;
//
// KVM Command Definitions
//
///
/// AMT Query KVM timer related definition
///
#define KVM_STALL_1_SECOND 1000000 ///< Stall 1 second
#define KVM_MAX_WAIT_TIME (60 * 8) ///< 8 Mins
///
/// Query KVM Response Type
///
typedef enum {
KvmSessionEstablished = 1,
KvmSessionCancelled
} RESPONSE_CODE;
///
/// Query KVM Response Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
/**
Response Code of KVM Session Status.
0x01: the KVM session established
0x02: the KVM session cancelled
**/
UINT32 ResponseCode;
} AMT_QUERY_KVM_RESPONSE;
///
/// Query KVM Type
///
typedef enum {
QueryRequest = 0,
CancelRequest
} QUERY_TYPE;
///
/// Query KVM Request Structure
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
/**
KVM Session Query Type.
0x00: Query the KVM session request
0x01: Cancel the KVM session request
**/
UINT32 QueryType;
} AMT_QUERY_KVM;
///
/// Query KVM Union Buffer
///
typedef union {
AMT_QUERY_KVM Request;
AMT_QUERY_KVM_RESPONSE Response;
} AMT_QUERY_KVM_BUFFER;
//
// MAC Command Definitions
//
///
/// Set MAC Passthrough
///
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT32 Status;
} AMT_SET_MAC_PASSTHROUGH_RESPONSE;
#define MAC_ADDRESS_SIZE 6
typedef struct {
ASF_MESSAGE_HEADER AsfHeader; ///< ASF Message Header.
UINT8 Enabled;
UINT8 MacAddress[MAC_ADDRESS_SIZE];
} AMT_SET_MAC_PASSTHROUGH;
///
/// Set MAC Passthrough Buffer
///
typedef union {
AMT_SET_MAC_PASSTHROUGH Request;
AMT_SET_MAC_PASSTHROUGH_RESPONSE Response;
} AMT_SET_MAC_PASSTHROUGH_BUFFER;
#pragma pack()
#endif // _ASF_MSGS_H