xref: /openbmc/phosphor-dbus-interfaces/yaml/xyz/openbmc_project/MCTP/README.md (revision 921791c73008a3edfc6507afb5bc15e48963d295)
1388b58f9SPatrick Williams# Overview
2e123c461STom Joseph
3a1347418SPatrick WilliamsMCTP D-Bus interfaces are implemented by the MCTP control process daemon alias
4a1347418SPatrick Williamsmcptd and aids in the discovery of MCTP enabled devices by application layer
5a1347418SPatrick Williamsprotocols (like PLDM, SPDM) which are implemented in the userspace. Application
6a1347418SPatrick Williamslayer protocols will rely on the discovery of
7e123c461STom Joseph`xyz.openbmc_project.MCTP.Endpoint` D-Bus interface to discover MCTP endpoints.
8e123c461STom JosephThe supported MCTP message types in an endpoint are exposed by the
9e123c461STom Joseph`SupportedMessageTypes` property in the `xyz.openbmc_project.MCTP.Endpoint`
10e123c461STom Josephinterface. For example, if the endpoint supports PLDM then pldm daemon will
11e123c461STom Josephcomplete the PLDM discovery flow with the MCTP endpoint. Also mctpd discovers
12e123c461STom Josephthe removal of the MCTP endpoints and removes the D-Bus objects corresponding to
13e123c461STom Josephthose endpoints. MCTP bridges are not modelled in the D-Bus.
14e123c461STom Joseph
15388b58f9SPatrick Williams## D-Bus object modelling
16e123c461STom Joseph
17e123c461STom JosephThe root D-Bus object path for the mctpd is `/xyz/openbmc_project/mctp`. There
18a1347418SPatrick Williamswill be a D-Bus object for every endpoint that is discovered by the mctpd. The
19a1347418SPatrick Williamslifetime of the D-Bus object is the lifetime of the connected MCTP device.
20e123c461STom Joseph
21e123c461STom JosephThe D-Bus object path for MCTP endpoints are named
22e123c461STom Joseph`xyz/openbmc_project/mctp/<NetworkId>/<EID>` where NetworkId is the locally
23*921791c7SManojkiran Edadefined [network identifier][1] the endpoint is part of and EID is the endpoint
24e123c461STom JosephID. This aids in the enumeration of the endpoints belonging to an MCTP network.
25e123c461STom JosephThe D-Bus object implements the `xyz.openbmc_project.MCTP.Endpoint` interface.
26e123c461STom JosephThe object may also optionally implement `xyz.openbmc_project.Common.UUID`
27e123c461STom Josephinterface to address the requirement for devices with multiple endpoints and for
28e123c461STom Josephhot-plug devices.
29e123c461STom Joseph
30e123c461STom JosephAn MCTP Network may provide an optional MCTP Network ID that can be used to
31e123c461STom Josephdifferentiate different MCTP Networks when more than one MCTP Network can be
32e123c461STom Josephaccessed by an entity . The Network ID is also used when an entity has more than
33e123c461STom Josephone point of access to the MCTP Network. The MCTP Network ID enables the entity
34e123c461STom Josephto tell whether the access points provide access to the same MCTP Network or to
35e123c461STom Josephdifferent MCTP Networks. If the implementation supports the optional MCTP
36e123c461STom Josephnetwork ID then it is exposed on the D-Bus. The D-Bus object path is
37a1347418SPatrick Williams`xyz/openbmc_project/mctp/<NetworkId>` where NetworkId is the locally defined
38*921791c7SManojkiran Eda[network identifier][1] and implements the `xyz.openbmc_project.Common.UUID`
39a1347418SPatrick Williamsinterface and the UUID property is the MCTP network ID.
40e123c461STom Joseph
41a1347418SPatrick Williams[1]:
42a1347418SPatrick Williams  https://github.com/openbmc/docs/blob/master/designs/mctp/mctp-kernel.md#addressing
43