* [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions @ 2023-03-23 15:05 Chang, Abner 2023-03-23 22:23 ` Michael D Kinney 0 siblings, 1 reply; 3+ messages in thread From: Chang, Abner @ 2023-03-23 15:05 UTC (permalink / raw) To: devel Cc: Michael D Kinney, Liming Gao, Zhiguang Liu, Nickle Wang, Igor Kulchytskyy, Isaac Oram, Abdul Lateef Attar From: Abner Chang <abner.chang@amd.com> BZ #4355 This change adds definitions for DMTF MCTP base specification. Spec ref: https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.1.pdf Signed-off-by: Abner Chang <abner.chang@amd.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Cc: Liming Gao <gaoliming@byosoft.com.cn> Cc: Zhiguang Liu <zhiguang.liu@intel.com> Cc: Nickle Wang <nicklew@nvidia.com> Cc: Igor Kulchytskyy <igork@ami.com> Cc: Isaac Oram <isaac.w.oram@intel.com> Cc: Abdul Lateef Attar <AbdulLateef.Attar@amd.com> Acked-by: Isaac Oram <isaac.w.oram@intel.com> --- MdePkg/Include/IndustryStandard/Mctp.h | 138 +++++++++++++++++++++++++ 1 file changed, 138 insertions(+) create mode 100644 MdePkg/Include/IndustryStandard/Mctp.h diff --git a/MdePkg/Include/IndustryStandard/Mctp.h b/MdePkg/Include/IndustryStandard/Mctp.h new file mode 100644 index 00000000000..bfbc843c7f1 --- /dev/null +++ b/MdePkg/Include/IndustryStandard/Mctp.h @@ -0,0 +1,138 @@ +/** @file + + The definitions of DMTF Management Component Transport Protocol (MCTP) + Base Specification. + + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR> + SPDX-License-Identifier: BSD-2-Clause-Patent + + @par Revision Reference: + DMTF Management Component Transport Protocol (MCTP) Base Specification + Version 1.3.1 + https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.1.pdf +**/ + +#ifndef MCTP_H_ +#define MCTP_H_ + +/// +/// Definitions of endpoint ID +/// +#define MCTP_NULL_DESTINATION_ENDPOINT_ID 0 +#define MCTP_NULL_SOURCE_ENDPOINT_ID 0 +#define MCTP_RESERVED_ENDPOINT_START_ID 1 +#define MCTP_RESERVED_ENDPOINT_END_ID 7 +#define MCTP_BROADCAST_ENDPOINT_ID 0xFF + +/// Minimum transmission size is 64 bytes. +/// The value of 64 is defined in MCTP Base Specification. +#define MCTP_BASELINE_MINIMUM_UNIT_TRANSMISSION_SIZE 0x40 + +/// +/// The 32-bit Header of MCTP packet. +/// +typedef union { + struct { + UINT8 HeaderVersion : 4; ///< The version of header. + UINT8 Reserved : 4; ///< Reserved for future definitions. + UINT8 DestinationEndpointId : 8; ///< Destination endpoint Id (EID). + UINT8 SourceEndpointIdId : 8; ///< Source endpoint Id (EID) + UINT8 MessageTag : 3; ///< Check the MCTP Base specification for the + ///< usages. + UINT8 TagOwner : 1; ///< Tag owner identifies the message was + ///< originated by the source EID or + ///< destination EID. + UINT8 PacketSequence : 2; ///< Sequence number increments Modulo 4 on + ///< each packet. + UINT8 EndOfMessage : 1; ///< Indicates the last packet of message. + UINT8 StartOfMessage : 1; ///< Indicates the first packet of message. + } Bits; + UINT32 Header; +} MCTP_TRANSPORT_HEADER; + +/// +/// The 8-bit Message Header of MCTP packet. +/// +typedef union { + struct { + UINT8 MessageType : 7; + UINT8 ItegrityCheck : 1; + } Bits; + UINT8 MessageHeader; +} MCTP_MESSAGE_HEADER; + +/// +/// MCTP Control Commands +/// +#define MCTP_CONTROL_RESERVED 0x00 +#define MCTP_CONTROL_SET_ENDPOINT_ID 0x01 +#define MCTP_CONTROL_GET_ENDPOINT_ID 0x02 +#define MCTP_CONTROL_GET_ENDPOINT_UUID 0x03 +#define MCTP_CONTROL_GET_MCTP_VERSION_SUPPORT 0x04 +#define MCTP_CONTROL_GET_MESSAGE_TYPE_SUPPORT 0x05 +#define MCTP_CONTROL_GET_VENDOR_DEFINED_MESSAGE_SUPPORT 0x06 +#define MCTP_CONTROL_RESOLVE_ENDPOINT_ID 0x07 +#define MCTP_CONTROL_ALLOCATE_ENDPOINT_IDS 0x08 +#define MCTP_CONTROL_ROUTING_INFORMATION_UPDATE 0x09 +#define MCTP_CONTROL_GET_ROUTINE_TABLE_ENTRIES 0x0A +#define MCTP_CONTROL_PREPARE_FOR_ENDPOINT_DISCOVERY 0x0B +#define MCTP_CONTROL_ENDPOINT_DISCOVERY 0x0C +#define MCTP_CONTROL_DISCOVERY_NOTIFY 0x0D +#define MCTP_CONTROL_GET_NETWORK_ID 0x0E +#define MCTP_CONTROL_QUERY_HOP 0x0F +#define MCTP_CONTROL_RESOLVE_UUID 0x10 +#define MCTP_CONTROL_QUERY_RATE_LIMIT 0x11 +#define MCTP_CONTROL_REQUEST_TX_RATE_LIMIT 0x12 +#define MCTP_CONTROL_UPDATE_RATE_LIMIT 0x13 +#define MCTP_CONTROL_QUERY_SUPPORTED_INTERFACES 0x14 +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_START 0xF0 +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_END 0xFF + +/// +/// MCTP Control Message Completion Codes +/// +#define MCTP_CONTROL_COMPLETION_CODES_SUCCESS 0x00 +#define MCTP_CONTROL_COMPLETION_CODES_ERROR 0x01 +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_DATA 0x02 +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_LENGTH 0x03 +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_NOT_READY 0x04 +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_UNSUPPORTED_CMD 0x05 +#define MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_START 0x80 +#define MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_END 0xFF + +/// +/// MCTP Control Message Types +/// +#define MCTP_MESSAGE_TYPE_CONTROL 0x00 +#define MCTP_MESSAGE_TYPE_PLDM 0x01 +#define MCTP_MESSAGE_TYPE_NCSI 0x02 +#define MCTP_MESSAGE_TYPE_ETHERNET 0x03 +#define MCTP_MESSAGE_TYPE_NVME 0x04 +#define MCTP_MESSAGE_TYPE_SPDM 0x05 +#define MCTP_MESSAGE_TYPE_SECURE_MESSAGE 0x06 +#define MCTP_MESSAGE_TYPE_CXL_FM_API 0x07 +#define MCTP_MESSAGE_TYPE_CXL_CCI 0x08 +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_PCI 0x7E +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_IANA 0x7F + +#define MCTP_ENDPOINT_ID_NULL 0 +#define MCTP_ENDPOINT_ID_RESERVED_START 1 +#define MCTP_ENDPOINT_ID_RESERVED_END 7 +#define MCTP_ENDPOINT_ID_BROADCAST 0xff +/// +/// MCTP Control Message Format +/// +typedef struct { + struct { + UINT8 IntegrityCheck : 1; ///< Message integrity check. + UINT8 MessageType : 7; ///< Message type. + UINT8 RequestBit : 1; ///< Request bit. + UINT8 DatagramBit : 1; ///< Datagram bit. + UINT8 Reserved : 1; ///< Reserved bit. + UINT8 InstanceId : 5; ///< Instance ID. + UINT8 CommandCode : 8; ///< Command code of request message. + UINT8 CompletionCode : 8; ///< Completion code in response message. + } Bits; + UINT32 BodyHeader; +} MCTP_CONTROL_MESSAGE; +#endif -- 2.37.1.windows.1 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions 2023-03-23 15:05 [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions Chang, Abner @ 2023-03-23 22:23 ` Michael D Kinney 2023-03-24 3:00 ` Chang, Abner 0 siblings, 1 reply; 3+ messages in thread From: Michael D Kinney @ 2023-03-23 22:23 UTC (permalink / raw) To: abner.chang@amd.com, devel@edk2.groups.io Cc: Gao, Liming, Liu, Zhiguang, Nickle Wang, Igor Kulchytskyy, Oram, Isaac W, Abdul Lateef Attar, Kinney, Michael D > -----Original Message----- > From: abner.chang@amd.com <abner.chang@amd.com> > Sent: Thursday, March 23, 2023 8:05 AM > To: devel@edk2.groups.io > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; > Nickle Wang <nicklew@nvidia.com>; Igor Kulchytskyy <igork@ami.com>; Oram, Isaac W <isaac.w.oram@intel.com>; Abdul Lateef Attar > <AbdulLateef.Attar@amd.com> > Subject: [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions > > From: Abner Chang <abner.chang@amd.com> > > BZ #4355 > This change adds definitions for DMTF MCTP > base specification. > > Spec ref: > https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.1.pdf > > Signed-off-by: Abner Chang <abner.chang@amd.com> > Cc: Michael D Kinney <michael.d.kinney@intel.com> > Cc: Liming Gao <gaoliming@byosoft.com.cn> > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > Cc: Nickle Wang <nicklew@nvidia.com> > Cc: Igor Kulchytskyy <igork@ami.com> > Cc: Isaac Oram <isaac.w.oram@intel.com> > Cc: Abdul Lateef Attar <AbdulLateef.Attar@amd.com> > Acked-by: Isaac Oram <isaac.w.oram@intel.com> > --- > MdePkg/Include/IndustryStandard/Mctp.h | 138 +++++++++++++++++++++++++ > 1 file changed, 138 insertions(+) > create mode 100644 MdePkg/Include/IndustryStandard/Mctp.h > > diff --git a/MdePkg/Include/IndustryStandard/Mctp.h b/MdePkg/Include/IndustryStandard/Mctp.h > new file mode 100644 > index 00000000000..bfbc843c7f1 > --- /dev/null > +++ b/MdePkg/Include/IndustryStandard/Mctp.h > @@ -0,0 +1,138 @@ > +/** @file > + > + The definitions of DMTF Management Component Transport Protocol (MCTP) > + Base Specification. > + > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights reserved.<BR> > + SPDX-License-Identifier: BSD-2-Clause-Patent > + > + @par Revision Reference: > + DMTF Management Component Transport Protocol (MCTP) Base Specification > + Version 1.3.1 > + https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1.3.1.pdf > +**/ > + > +#ifndef MCTP_H_ > +#define MCTP_H_ > + > +/// > +/// Definitions of endpoint ID > +/// > +#define MCTP_NULL_DESTINATION_ENDPOINT_ID 0 > +#define MCTP_NULL_SOURCE_ENDPOINT_ID 0 > +#define MCTP_RESERVED_ENDPOINT_START_ID 1 > +#define MCTP_RESERVED_ENDPOINT_END_ID 7 > +#define MCTP_BROADCAST_ENDPOINT_ID 0xFF > + > +/// Minimum transmission size is 64 bytes. > +/// The value of 64 is defined in MCTP Base Specification. > +#define MCTP_BASELINE_MINIMUM_UNIT_TRANSMISSION_SIZE 0x40 > + > +/// > +/// The 32-bit Header of MCTP packet. > +/// > +typedef union { > + struct { > + UINT8 HeaderVersion : 4; ///< The version of header. > + UINT8 Reserved : 4; ///< Reserved for future definitions. > + UINT8 DestinationEndpointId : 8; ///< Destination endpoint Id (EID). > + UINT8 SourceEndpointIdId : 8; ///< Source endpoint Id (EID) > + UINT8 MessageTag : 3; ///< Check the MCTP Base specification for the > + ///< usages. > + UINT8 TagOwner : 1; ///< Tag owner identifies the message was > + ///< originated by the source EID or > + ///< destination EID. > + UINT8 PacketSequence : 2; ///< Sequence number increments Modulo 4 on > + ///< each packet. > + UINT8 EndOfMessage : 1; ///< Indicates the last packet of message. > + UINT8 StartOfMessage : 1; ///< Indicates the first packet of message. These bitfields should be type UINT32 > + } Bits; > + UINT32 Header; > +} MCTP_TRANSPORT_HEADER; > + > +/// > +/// The 8-bit Message Header of MCTP packet. > +/// > +typedef union { > + struct { > + UINT8 MessageType : 7; > + UINT8 ItegrityCheck : 1; > + } Bits; > + UINT8 MessageHeader; > +} MCTP_MESSAGE_HEADER; > + > +/// > +/// MCTP Control Commands > +/// > +#define MCTP_CONTROL_RESERVED 0x00 > +#define MCTP_CONTROL_SET_ENDPOINT_ID 0x01 > +#define MCTP_CONTROL_GET_ENDPOINT_ID 0x02 > +#define MCTP_CONTROL_GET_ENDPOINT_UUID 0x03 > +#define MCTP_CONTROL_GET_MCTP_VERSION_SUPPORT 0x04 > +#define MCTP_CONTROL_GET_MESSAGE_TYPE_SUPPORT 0x05 > +#define MCTP_CONTROL_GET_VENDOR_DEFINED_MESSAGE_SUPPORT 0x06 > +#define MCTP_CONTROL_RESOLVE_ENDPOINT_ID 0x07 > +#define MCTP_CONTROL_ALLOCATE_ENDPOINT_IDS 0x08 > +#define MCTP_CONTROL_ROUTING_INFORMATION_UPDATE 0x09 > +#define MCTP_CONTROL_GET_ROUTINE_TABLE_ENTRIES 0x0A > +#define MCTP_CONTROL_PREPARE_FOR_ENDPOINT_DISCOVERY 0x0B > +#define MCTP_CONTROL_ENDPOINT_DISCOVERY 0x0C > +#define MCTP_CONTROL_DISCOVERY_NOTIFY 0x0D > +#define MCTP_CONTROL_GET_NETWORK_ID 0x0E > +#define MCTP_CONTROL_QUERY_HOP 0x0F > +#define MCTP_CONTROL_RESOLVE_UUID 0x10 > +#define MCTP_CONTROL_QUERY_RATE_LIMIT 0x11 > +#define MCTP_CONTROL_REQUEST_TX_RATE_LIMIT 0x12 > +#define MCTP_CONTROL_UPDATE_RATE_LIMIT 0x13 > +#define MCTP_CONTROL_QUERY_SUPPORTED_INTERFACES 0x14 > +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_START 0xF0 > +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_END 0xFF > + > +/// > +/// MCTP Control Message Completion Codes > +/// > +#define MCTP_CONTROL_COMPLETION_CODES_SUCCESS 0x00 > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR 0x01 > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_DATA 0x02 > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_LENGTH 0x03 > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_NOT_READY 0x04 > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_UNSUPPORTED_CMD 0x05 > +#define MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_START 0x80 > +#define MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_END 0xFF > + > +/// > +/// MCTP Control Message Types > +/// > +#define MCTP_MESSAGE_TYPE_CONTROL 0x00 > +#define MCTP_MESSAGE_TYPE_PLDM 0x01 > +#define MCTP_MESSAGE_TYPE_NCSI 0x02 > +#define MCTP_MESSAGE_TYPE_ETHERNET 0x03 > +#define MCTP_MESSAGE_TYPE_NVME 0x04 > +#define MCTP_MESSAGE_TYPE_SPDM 0x05 > +#define MCTP_MESSAGE_TYPE_SECURE_MESSAGE 0x06 > +#define MCTP_MESSAGE_TYPE_CXL_FM_API 0x07 > +#define MCTP_MESSAGE_TYPE_CXL_CCI 0x08 > +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_PCI 0x7E > +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_IANA 0x7F > + > +#define MCTP_ENDPOINT_ID_NULL 0 > +#define MCTP_ENDPOINT_ID_RESERVED_START 1 > +#define MCTP_ENDPOINT_ID_RESERVED_END 7 > +#define MCTP_ENDPOINT_ID_BROADCAST 0xff > +/// > +/// MCTP Control Message Format > +/// > +typedef struct { > + struct { > + UINT8 IntegrityCheck : 1; ///< Message integrity check. > + UINT8 MessageType : 7; ///< Message type. > + UINT8 RequestBit : 1; ///< Request bit. > + UINT8 DatagramBit : 1; ///< Datagram bit. > + UINT8 Reserved : 1; ///< Reserved bit. > + UINT8 InstanceId : 5; ///< Instance ID. > + UINT8 CommandCode : 8; ///< Command code of request message. > + UINT8 CompletionCode : 8; ///< Completion code in response message. These bitfields should be type UINT32. > + } Bits; > + UINT32 BodyHeader; > +} MCTP_CONTROL_MESSAGE; > +#endif > -- > 2.37.1.windows.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions 2023-03-23 22:23 ` Michael D Kinney @ 2023-03-24 3:00 ` Chang, Abner 0 siblings, 0 replies; 3+ messages in thread From: Chang, Abner @ 2023-03-24 3:00 UTC (permalink / raw) To: Kinney, Michael D, devel@edk2.groups.io Cc: Gao, Liming, Liu, Zhiguang, Nickle Wang, Igor Kulchytskyy, Oram, Isaac W, Attar, AbdulLateef (Abdul Lateef) [AMD Official Use Only - General] Hi Mike, MCTP v4 was just sent. Thanks Abner > -----Original Message----- > From: Kinney, Michael D <michael.d.kinney@intel.com> > Sent: Friday, March 24, 2023 6:24 AM > To: Chang, Abner <Abner.Chang@amd.com>; devel@edk2.groups.io > Cc: Gao, Liming <gaoliming@byosoft.com.cn>; Liu, Zhiguang > <zhiguang.liu@intel.com>; Nickle Wang <nicklew@nvidia.com>; Igor > Kulchytskyy <igork@ami.com>; Oram, Isaac W <isaac.w.oram@intel.com>; > Attar, AbdulLateef (Abdul Lateef) <AbdulLateef.Attar@amd.com>; Kinney, > Michael D <michael.d.kinney@intel.com> > Subject: RE: [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions > > Caution: This message originated from an External Source. Use proper > caution when opening attachments, clicking links, or responding. > > > > -----Original Message----- > > From: abner.chang@amd.com <abner.chang@amd.com> > > Sent: Thursday, March 23, 2023 8:05 AM > > To: devel@edk2.groups.io > > Cc: Kinney, Michael D <michael.d.kinney@intel.com>; Gao, Liming > > <gaoliming@byosoft.com.cn>; Liu, Zhiguang <zhiguang.liu@intel.com>; > > Nickle Wang <nicklew@nvidia.com>; Igor Kulchytskyy <igork@ami.com>; > > Oram, Isaac W <isaac.w.oram@intel.com>; Abdul Lateef Attar > > <AbdulLateef.Attar@amd.com> > > Subject: [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions > > > > From: Abner Chang <abner.chang@amd.com> > > > > BZ #4355 > > This change adds definitions for DMTF MCTP base specification. > > > > Spec ref: > > > https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_1 > > .3.1.pdf > > > > Signed-off-by: Abner Chang <abner.chang@amd.com> > > Cc: Michael D Kinney <michael.d.kinney@intel.com> > > Cc: Liming Gao <gaoliming@byosoft.com.cn> > > Cc: Zhiguang Liu <zhiguang.liu@intel.com> > > Cc: Nickle Wang <nicklew@nvidia.com> > > Cc: Igor Kulchytskyy <igork@ami.com> > > Cc: Isaac Oram <isaac.w.oram@intel.com> > > Cc: Abdul Lateef Attar <AbdulLateef.Attar@amd.com> > > Acked-by: Isaac Oram <isaac.w.oram@intel.com> > > --- > > MdePkg/Include/IndustryStandard/Mctp.h | 138 > > +++++++++++++++++++++++++ > > 1 file changed, 138 insertions(+) > > create mode 100644 MdePkg/Include/IndustryStandard/Mctp.h > > > > diff --git a/MdePkg/Include/IndustryStandard/Mctp.h > > b/MdePkg/Include/IndustryStandard/Mctp.h > > new file mode 100644 > > index 00000000000..bfbc843c7f1 > > --- /dev/null > > +++ b/MdePkg/Include/IndustryStandard/Mctp.h > > @@ -0,0 +1,138 @@ > > +/** @file > > + > > + The definitions of DMTF Management Component Transport Protocol > > + (MCTP) Base Specification. > > + > > + Copyright (C) 2023 Advanced Micro Devices, Inc. All rights > > + reserved.<BR> > > + SPDX-License-Identifier: BSD-2-Clause-Patent > > + > > + @par Revision Reference: > > + DMTF Management Component Transport Protocol (MCTP) Base > > +Specification > > + Version 1.3.1 > > + > > > +https://www.dmtf.org/sites/default/files/standards/documents/DSP0236_ > > +1.3.1.pdf > > +**/ > > + > > +#ifndef MCTP_H_ > > +#define MCTP_H_ > > + > > +/// > > +/// Definitions of endpoint ID > > +/// > > +#define MCTP_NULL_DESTINATION_ENDPOINT_ID 0 > > +#define MCTP_NULL_SOURCE_ENDPOINT_ID 0 > > +#define MCTP_RESERVED_ENDPOINT_START_ID 1 > > +#define MCTP_RESERVED_ENDPOINT_END_ID 7 > > +#define MCTP_BROADCAST_ENDPOINT_ID 0xFF > > + > > +/// Minimum transmission size is 64 bytes. > > +/// The value of 64 is defined in MCTP Base Specification. > > +#define MCTP_BASELINE_MINIMUM_UNIT_TRANSMISSION_SIZE 0x40 > > + > > +/// > > +/// The 32-bit Header of MCTP packet. > > +/// > > +typedef union { > > + struct { > > + UINT8 HeaderVersion : 4; ///< The version of header. > > + UINT8 Reserved : 4; ///< Reserved for future definitions. > > + UINT8 DestinationEndpointId : 8; ///< Destination endpoint Id (EID). > > + UINT8 SourceEndpointIdId : 8; ///< Source endpoint Id (EID) > > + UINT8 MessageTag : 3; ///< Check the MCTP Base specification > for the > > + ///< usages. > > + UINT8 TagOwner : 1; ///< Tag owner identifies the message was > > + ///< originated by the source EID or > > + ///< destination EID. > > + UINT8 PacketSequence : 2; ///< Sequence number increments > Modulo 4 on > > + ///< each packet. > > + UINT8 EndOfMessage : 1; ///< Indicates the last packet of > message. > > + UINT8 StartOfMessage : 1; ///< Indicates the first packet of > message. > > These bitfields should be type UINT32 > > > + } Bits; > > + UINT32 Header; > > +} MCTP_TRANSPORT_HEADER; > > + > > +/// > > +/// The 8-bit Message Header of MCTP packet. > > +/// > > +typedef union { > > + struct { > > + UINT8 MessageType : 7; > > + UINT8 ItegrityCheck : 1; > > + } Bits; > > + UINT8 MessageHeader; > > +} MCTP_MESSAGE_HEADER; > > + > > +/// > > +/// MCTP Control Commands > > +/// > > +#define MCTP_CONTROL_RESERVED 0x00 > > +#define MCTP_CONTROL_SET_ENDPOINT_ID 0x01 > > +#define MCTP_CONTROL_GET_ENDPOINT_ID 0x02 > > +#define MCTP_CONTROL_GET_ENDPOINT_UUID 0x03 > > +#define MCTP_CONTROL_GET_MCTP_VERSION_SUPPORT 0x04 > > +#define MCTP_CONTROL_GET_MESSAGE_TYPE_SUPPORT 0x05 > > +#define MCTP_CONTROL_GET_VENDOR_DEFINED_MESSAGE_SUPPORT > 0x06 > > +#define MCTP_CONTROL_RESOLVE_ENDPOINT_ID 0x07 > > +#define MCTP_CONTROL_ALLOCATE_ENDPOINT_IDS 0x08 > > +#define MCTP_CONTROL_ROUTING_INFORMATION_UPDATE 0x09 > > +#define MCTP_CONTROL_GET_ROUTINE_TABLE_ENTRIES 0x0A > > +#define MCTP_CONTROL_PREPARE_FOR_ENDPOINT_DISCOVERY > 0x0B > > +#define MCTP_CONTROL_ENDPOINT_DISCOVERY 0x0C > > +#define MCTP_CONTROL_DISCOVERY_NOTIFY 0x0D > > +#define MCTP_CONTROL_GET_NETWORK_ID 0x0E > > +#define MCTP_CONTROL_QUERY_HOP 0x0F > > +#define MCTP_CONTROL_RESOLVE_UUID 0x10 > > +#define MCTP_CONTROL_QUERY_RATE_LIMIT 0x11 > > +#define MCTP_CONTROL_REQUEST_TX_RATE_LIMIT 0x12 > > +#define MCTP_CONTROL_UPDATE_RATE_LIMIT 0x13 > > +#define MCTP_CONTROL_QUERY_SUPPORTED_INTERFACES 0x14 > > +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_START 0xF0 > > +#define MCTP_CONTROL_TRANSPORT_SPECIFIC_END 0xFF > > + > > +/// > > +/// MCTP Control Message Completion Codes /// > > +#define MCTP_CONTROL_COMPLETION_CODES_SUCCESS 0x00 > > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR 0x01 > > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_DATA > 0x02 > > +#define > MCTP_CONTROL_COMPLETION_CODES_ERROR_INVALID_LENGTH 0x03 > > +#define MCTP_CONTROL_COMPLETION_CODES_ERROR_NOT_READY > 0x04 > > +#define > MCTP_CONTROL_COMPLETION_CODES_ERROR_UNSUPPORTED_CMD 0x05 > > +#define > MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_START 0x80 > > +#define > MCTP_CONTROL_COMPLETION_CODES_COMMAND_SPECIFIC_END 0xFF > > + > > +/// > > +/// MCTP Control Message Types > > +/// > > +#define MCTP_MESSAGE_TYPE_CONTROL 0x00 > > +#define MCTP_MESSAGE_TYPE_PLDM 0x01 > > +#define MCTP_MESSAGE_TYPE_NCSI 0x02 > > +#define MCTP_MESSAGE_TYPE_ETHERNET 0x03 > > +#define MCTP_MESSAGE_TYPE_NVME 0x04 > > +#define MCTP_MESSAGE_TYPE_SPDM 0x05 > > +#define MCTP_MESSAGE_TYPE_SECURE_MESSAGE 0x06 > > +#define MCTP_MESSAGE_TYPE_CXL_FM_API 0x07 > > +#define MCTP_MESSAGE_TYPE_CXL_CCI 0x08 > > +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_PCI 0x7E > > +#define MCTP_MESSAGE_TYPE_VENDOR_DEFINED_IANA 0x7F > > + > > +#define MCTP_ENDPOINT_ID_NULL 0 > > +#define MCTP_ENDPOINT_ID_RESERVED_START 1 > > +#define MCTP_ENDPOINT_ID_RESERVED_END 7 > > +#define MCTP_ENDPOINT_ID_BROADCAST 0xff > > +/// > > +/// MCTP Control Message Format > > +/// > > +typedef struct { > > + struct { > > + UINT8 IntegrityCheck : 1; ///< Message integrity check. > > + UINT8 MessageType : 7; ///< Message type. > > + UINT8 RequestBit : 1; ///< Request bit. > > + UINT8 DatagramBit : 1; ///< Datagram bit. > > + UINT8 Reserved : 1; ///< Reserved bit. > > + UINT8 InstanceId : 5; ///< Instance ID. > > + UINT8 CommandCode : 8; ///< Command code of request message. > > + UINT8 CompletionCode : 8; ///< Completion code in response > message. > > These bitfields should be type UINT32. > > > + } Bits; > > + UINT32 BodyHeader; > > +} MCTP_CONTROL_MESSAGE; > > +#endif > > -- > > 2.37.1.windows.1 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2023-03-24 3:00 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2023-03-23 15:05 [PATCH v3] MdePkg/Include: Add DMTF MCTP definitions Chang, Abner 2023-03-23 22:23 ` Michael D Kinney 2023-03-24 3:00 ` Chang, Abner
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox