The Manageability KCS transport library needs to support requests both
from MCTP and IPMI transports. Currently the code only handles IPMI
case correctly.
In the MCTP case the communication should be based on the MCTP-over-KCS
specification (DSP0254). This specification defines a special KCS
binding header and trailer structures that need to be present in every
MCTP message.
The header structure contains a length field, therefore response packet
size is not needed to be known beforehand.
The trailer structure contains a PEC checksum that can be used to check
itegrity of the response message.
Modify Manageability KCS transport library code to check which message
is processed (IPMI or MCTP) and handle each case correctly based on its
own specification.
This patch is a result of a joint effort from the Konstantin Aladyshev
<aladyshev22@gmail.com> and Abner Chang <abner.chang@amd.com>.
Tested:
PLDM communication between the HOST and BMC was tested with both
components implemented via open-source software:
- The HOST (UEFI firmware) part was based one the edk2 [1] and
edk2-platforms [2] code,
- The BMC part was based on the openbmc [3] distribution.
The testing process and all the necessary utilities are described in
the [4] repository.
The provided changes keep IPMI over KCS stack working as reported by
Abner Chang.
[1]: https://github.com/tianocore/edk2
[2]: https://github.com/tianocore/edk2-platforms
[3]: https://github.com/openbmc/openbmc
[4]: https://github.com/Kostr/PLDM
Changes v1 -> v2:
- Add new patches with corrections for the PLDM protocol. The
resulting communication via EDKII_PLDM_PROTOCOL was successfully
tested.
Abner Chang (4):
ManageabilityPkg: Add PLDM terminus PCDs
PldmProtocolDxe: Correct TID argument usage
ManageabilityPkg/PldmProtocol: Remove PLDM command table
PldmSmbiosTransferDxe: Implement Set PLDM terminus ID API
Konstantin Aladyshev (11):
ManageabilityPkg: Add definition for the MCTP KCS TRAILER structure
ManageabilityPkg: Check MCTP EIDs for reserved values
ManageabilityPkg: Support both MCTP and IPMI in KCS tranport library
ManageabilityPkg: Check header fields in the MCTP response
ManageabilityPkg: Correct typo in MCTP destination EID field
ManageabilityPkg: Update the algorithm of using MCTP endpoint ID PCD
ManageabilityPkg: Correct value for the MCTP TAG_OWNER response bit
ManageabilityPkg: Don't check MCTP header fields if transfer has
failed
ManageabilityPkg: Use correct constants for PLDM header checks
ManageabilityPkg: Return error on multiple-packet MCTP responses
ManageabilityPkg: Return error on PLDM header check fails
.../Include/Library/BasePldmProtocolLib.h | 16 +
.../Library/ManageabilityTransportMctpLib.h | 9 +-
.../Include/Protocol/MctpProtocol.h | 12 +-
.../Include/Protocol/PldmProtocol.h | 18 +-
.../Protocol/PldmSmbiosTransferProtocol.h | 26 ++
.../Common/KcsCommon.c | 284 +++++++++++++++---
.../Dxe/ManageabilityTransportMctp.c | 4 +-
.../PldmProtocolLibrary/Dxe/PldmProtocolLib.c | 49 ++-
.../Dxe/PldmProtocolLib.inf | 6 +-
.../ManageabilityPkg/ManageabilityPkg.dec | 6 +
.../MctpProtocol/Common/MctpProtocolCommon.c | 129 +++++++-
.../Universal/MctpProtocol/Dxe/MctpProtocol.c | 51 +++-
.../PldmProtocol/Common/PldmProtocolCommon.c | 145 +++------
.../PldmProtocol/Common/PldmProtocolCommon.h | 25 +-
.../Universal/PldmProtocol/Dxe/PldmProtocol.c | 69 ++++-
.../PldmProtocol/Dxe/PldmProtocolDxe.inf | 4 -
.../PldmSmbiosTransferDxe.c | 28 ++
17 files changed, 688 insertions(+), 193 deletions(-)
--
2.34.1
-=-=-=-=-=-=-=-=-=-=-=-
Groups.io Links: You receive all messages sent to this group.
View/Reply Online (#109850): https://edk2.groups.io/g/devel/message/109850
Mute This Topic: https://groups.io/mt/102080227/1787277
Group Owner: devel+owner@edk2.groups.io
Unsubscribe: https://edk2.groups.io/g/devel/unsub [importer@patchew.org]
-=-=-=-=-=-=-=-=-=-=-=-