Lines Matching refs:MCTP
1 # OpenBMC in-kernel MCTP
5 Please refer to the [MCTP Overview](mctp.md) document for general MCTP design
8 This document describes a kernel-based implementation of MCTP infrastructure,
9 providing a sockets-based API for MCTP communication within an OpenBMC-based
14 - The MCTP messaging API should be an obvious application of the existing POSIX
17 - Configuration should be simple for a straightforward MCTP endpoint: a single
20 - Infrastructure should be flexible enough to allow for more complex MCTP
23 - each MCTP network (as defined by section 3.2.31 of DSP0236) may consist of
37 - An interface for userspace applications to send and receive MCTP messages: A
38 mapping of the sockets API to MCTP usage
40 - Infrastructure for control and configuration of the MCTP network(s),
46 In general, the kernel components cover the transport functionality of MCTP,
51 introduced socket API. This also includes the majority of the MCTP Control
52 Protocol implementation (DSP0236, section 11) - MCTP endpoints will typically
56 process. MCTP endpoints that require more than just single-endpoint
62 reception of MCTP packets on their associated hardware channels. Under Linux,
68 The kernel models the local MCTP topology through two items: interfaces and
71 An interface (or "link") is an instance of an MCTP physical transport binding
77 A network defines a unique address space for MCTP endpoints by endpoint-ID
92 We define a new address family (and corresponding protocol family) for MCTP:
99 MCTP sockets are created with the `socket()` syscall, specifying `AF_MCTP` as
109 MCTP Sockets opened with a protocol value of 0 will communicate directly at the
111 message data from reassembled MCTP packets, and will include the full message
132 /* MCTP network values */
135 /* MCTP EID values */
139 /* MCTP type values. Only the least-significant 7 bits of
145 /* MCTP tag defintions; used for smcp_tag field of sockaddr_mctp */
146 /* MCTP-spec-defined fields */
157 The following sections describe the MCTP-specific behaviours of the standard
178 This establishes the local address of the socket. Incoming MCTP messages that
224 transmission. Like other `SOCK_DGRAM` behaviour, this does not generate any MCTP
229 `MCTP_NET_ANY`, in which case the kernel will select a suitable MCTP network.
235 the MCTP broadcast EID (0xff).
253 #### `sendto()`, `sendmsg()`, `send()` & `write()`: transmit an MCTP message
255 An MCTP message is transmitted using one of the `sendto()`, `sendmsg()`,
321 #### `recvfrom()`, `recvmsg()`, `recv()` & `read()`: receive an MCTP message
323 An MCTP message can be received by an application using one of the `recvfrom()`,
338 /* We can expect addr to describe an MCTP address */
371 The following socket options are defined for MCTP sockets:
436 The following system calls are not implemented for MCTP, primarily as they are
460 messages, manage EID allocations, update local MCTP stack state. Will need
677 MCTP responders should use the EID and network values of an incoming request to
742 #### MCTP Control Protocol implementation
744 Aside from the "Resolve endpoint EID" message, the MCTP control protocol
747 EID allocations (for bus owner devices) and maintaining the MCTP route table
758 The packet-transmission behaviour of the MCTP infrastructure relies on a single
783 endpoint using the Resolve Endpoint ID command of the MCTP Control Protocol
787 This is the only kernel-internal usage of MCTP Control Protocol messages.
791 A small utility will be developed to control the state of the kernel MCTP stack.
846 first byte of the buffer. This corresponds to the definition of a MCTP message
853 However, the exact format of the MCTP message payload is not precisely defined
862 ## MCTP message-type specification: using `sockaddr_mctp.smctp_type` rather than protocol
886 This design proposes referencing networks by an integer index. The MCTP standard
891 Given that the Get Network ID message in the MCTP Control Protocol is
929 listening on that type, making it trivial to eavesdrop on MCTP data of other
938 However, MCTP protocols exist that do not have a 1:1 mapping of responses to
945 Broadcast MCTP request messages may have multiple replies from multiple