* Re: MCTP Sockets related questions
[not found] ` <8ae8365a-ff09-4f4a-9445-17898487cb29@www.fastmail.com>
@ 2020-04-17 4:04 ` Andrew Jeffery
2020-04-22 8:33 ` Bhat, Sumanth
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Jeffery @ 2020-04-17 4:04 UTC (permalink / raw)
To: Bhat, Sumanth, Jeremy Kerr, openbmc
Cc: Thomaiyar, Richard Marian, Winiarska, Iwona
+openbmc@lists.ozlabs.org
On Fri, 17 Apr 2020, at 13:18, Andrew Jeffery wrote:
> Hi Sumanth
>
> On Fri, 17 Apr 2020, at 01:48, Bhat, Sumanth wrote:
> >
> > Hi Jeremy, Andrew,
> >
> > I have tried to capture our questions and concerns related to MCTP
> > Sockets in the PMCI WorkGroup page under the topic – MCTP Socket
> > Interfaces; link here -
> > https://github.com/openbmc/openbmc/wiki/OpenBMC-PMCI-WG. Hope you can
> > have a look at it.
>
> Thanks for getting these written down, they are all great questions. It's
> hard to have a conversation via a wiki, so I'm pasting the questions below:
>
> > Here are few questions for socket based implementation –
> >
> > Bus Owner / Bridging / Endpoint roles:
> > The current demux-daemon supports only static EIDs. How do we extend ‘Bus Owner”,
> > ‘Endpoint’ and ‘Bridging Device’ concepts to demux-daemon?
>
> I think it probably needs to be made clear that the role of the
> mctp-demux-daemon is nothing more than to transform the interface for MCTP
> messages from direct calls to libmctp to use of sockets, as this will make
> migration to the planned kernel interface easier. Applications wanting to talk
> over MCTP should connect to the mctp-demux-daemon socket and send messages this
> way. This includes the application that will handle MCTP control messages
> defined in the base specification.
>
> Now, there is the issue that MCTP control commands affect the binding
> associated with an endpoint, and as above the mctp-demux-daemon doesn't handle
> any commands itself. What's missing from mctp-demux-daemon is an out-of-band
> interface to manipulate the binding in response to control messages. Elements
> of this out-of-band interface are being proposed in the
> phosphor-dbus-interfaces patch that is currently under review[1].
>
> Regarding the planned kernel interface for MCTP, it will come in two parts:
>
> 1. A common socket-based interface for exchanging messages between endpoints
> 2. A netlink interface to control configuration of MCTP networks and endpoints
> connected to the system.
>
> Control messages in the kernel implementation will also be handled in userspace
> (possibly except for binding-defined messages). The daemon handling control
> messages responds by poking the netlink interface to reconfigure the kernel as
> appropriate. Note that we have an alignment between the kernel interface
> proposed here and the need for the out-of-band interfaces on the
> mctp-demux-daemon outlined above (netlink is also out-of-band). As part of the
> eventual transition away from the mctp-demux-daemon to the kernel-based socket
> implementation it's a possibility that we could wrap the netlink interface with
> the D-Bus interface, which should mean minimal changes for applications already
> using the D-Bus interface (though realistically this should just impact the
> daemon handling control messages).
>
> Returning to your question about the three operational modes in light of the
> above, a few points:
>
> 1. Endpoint-mode needs to respond to e.g. `Set EID` messages. A `Set EID`
> message would be received by the MCTP control daemon connected to the
> mctp-demux-daemon, and the MCTP control daemon would e.g. call a SetEID()
> method on the mctp-demux-daemon object's D-Bus interface to reconfigure the
> endpoint.
>
> 2. I think Bus-owner mode is mainly a consideration of how the MCTP control
> daemon operates (i.e. sending messages rather than simply responding to them as
> in Endpoint-mode).
>
> 3. Bridging is handled in two parts: The binding together of endpoints may
> occur in the mctp-demux-daemon if the design is such that the bridge has a
> singled EID rather than an EID per binding instance. Alternatively, if an EID
> is provided per-endpoint, multiple mctp-demux-daemons could be run with a
> separate daemon subscribing to each mctp-demux-daemon socket participating in
> the bridge.
>
> Point 3. requires some rework of the mctp-demux-daemon to provide a
> deterministic abstract-socket naming scheme to enable multiple concurrent
> mctp-demux-daemon instances to exist, and the work is similar to what I've
> recently done for the obmc-console package. The naming-scheme may be defined by
> the system configuration (as is the case with obmc-console).
>
> [1]
> https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-dbus-interfaces/+/30139
>
> > Also, when the sockets
> > move to Kernel, what would be the way for a user to configure a certain physical
> > binding in “Bus Owner” mode and another binding in “Endpoint” mode ?
>
> As mentioned above, this isn't a property of the endpoint so much as how the
> endpoint is used by applications (such as the MCTP control daemon). The kernel
> will be agnostic to how an endpoint is used beyond configuring bindings and
> endpoints as directed by userspace via the netlink interface.
>
> > We will have cases
> > where BMC will be Bus Owner on a certain bus and Endpoint on another bus simultaneously.
>
> That's fine, it's a use-case I anticipated (and again it partly comes back to
> how endpoints are used by applications rather than a property of the endpoint
> itself).
>
> >
> > Multiple MCTP Daemon instantiations:
> >
> > The rate of transmission and reception of MCTP messages will be limited by the
> > underlying physical binding. Having one instance of MCTP transport
> > interface per physical port would speed up the TX and RX. How can
> > this be achieved in demux daemon?
>
> This is enabled by deterministic naming of abstract sockets that I talked about
> above.
>
> > And how would this be addressed
> > in Kernel based sockets ?
>
> Messages are sent in process context, so concurrency is as wide as the number
> of threads available assuming you're sending across different interfaces.
>
> > How can a user specify the physical bindings
> > he/she is going to need and instances for the same ?
>
> Via the netlink interface.
>
> >
> > Support for upper layer protocols:
> > In Intel’s usecases, most of the upper layer protocols like PLDM/Intel Vendor
> > Defined Messaging Type/SPDM etc. are going to be “Requesters” i.e. they are going
> > to send out request packets to a connected device on the platform (ex: Add-In Cards)
> > using MCTP. These protocols will not have prior knowledge about
> > the EIDs and thus need a way to query the existing EIDs and the
> > message types supported by the EIDs from the MCTP layer in order
> > to start their communication. The D-Bus proposal handles this by
> > creating D-Bus objects for the EIDs. How would we achieve the
> > same in demux daemon ?
>
> This is resolved by e.g. the mctp-demux-daemon implementing the D-Bus
> interfaces your proposing (aside from the Rx/Tx methods) as the out-of-band
> information/event mechanism.
>
> > How would Kernel based sockets handle this ?
>
> The netlink interface allows userspace to query the topology of the network,
> which will be set up by the MCTP control daemon.
>
> As to what message types are supported by endpoints, I didn't have any plan to
> cache this information on the BMC. I figured the application wanting to talk to
> the endpoint would query the endpoint for this information directly. These
> queries operate at multiple levels, e.g:
>
> * What MCTP control commands are supported?
> * What PLDM constructs are supported?
> * What SPDM concepts are supported?
>
> None of this information belongs in the kernel. Whether userspace should expose
> it in some generic fashion is up for debate but as mentioned I feel the answer
> is probably not, just leave it to specific applications.
>
> >
> > Discovery of MCTP capable devices:
> >
> > We would need to modify the demux-daemon to cater for the discovery mechanisms.
> > When BMC acts as a Bus Owner, it would have to go ahead and discover other
> > end points on the bus and this discovery mechanism varies according to the bus,
> > and the role: For example: How a PCIe device discovers other endpoints is totally
> > different from how a SMBus device would do.
>
> But this is binding-implementation specific. The logic should live in the
> binding, no? Device hotplug notifications are binding-specific but there is a
> the Discovery Notify message that bindings can propagate up the stack to notify
> e.g. the MCTP control daemon that a device has appeared, and this is generic.
>
> > Similarly, how BMC as PCIe bus owner
> > would discover other endpoints (Endpoint Discovery control commands) is different
> > from how BMC as PCIe endpoint would discover other endpoints(Get Routing Table update).
> > And discovered endpoints need to have a representation (ex: D-Bus objects) so that upper
> > layer protocols can discover them. How would this be handled in demux daemon/Kernel approach ?
>
> Userspace interacting with the endpoint at an MCTP-control level will know
> which mode it's operating in, and so will know what method it needs to use to
> construct the routing table (as a means to know the other endpoints in the
> network).
>
> It sounds like what you're after is an abstraction that presents the network to
> applications that do not care which mode in which the endpoints are operating?
> If so, this is something I brought up on the phosphor-dbus-interfaces patch: We
> should come up with an abstract representation of the network for applications
> to consume.
>
> >
> > Control commands:
> >
> > Most control commands couple tightly with the binding and mctp layer itself; for example,
> > when Set EID is used by the BMC to allocate EID to another device, it needs to use
> > Special EID 0 + physical address of the device.
>
> Okay, so I had a bit of a bag of tricks planned here that mean we don't need to
> embed physical addresses into e.g. `Set EID` packets. There's no allowance for
> this in the spec anyway.
>
> The main insight for e.g. `Set EID` is that commands like this are only sent by
> bus-owners who must be controlling their own route table. The MCTP route table
> is effectively the combination of the ARP table and route table concepts from
> IP networks, and so the intent with the kernel-based MCTP implementation is to
> expose the route table to userspace just like the ARP table, including the
> ability to inject entries into the table (like the ARP table).
>
> From there we maintain state for each entry that describes whether or not the
> EID has been assigned by userspace, akin to the `discovered` flag that we
> maintain for the endpoint itself: This is set when the endpoint ID has been
> successfully assigned (i.e. we see a `SUCCESS` completion code to for a `Set
> EID` message).
>
> Further, EIDs must be unique in the network, so the route table must not
> contain the same EID assigned to multiple devices. This means that the EID is
> unambiguous in identifying the device.
>
> The trick is that EIDs unambiguously identifying devices is true regardless of
> the state of the `discovered` flag associated with the entry in the route
> table. So the plan is that in order to send a `Set EID` to a discovered
> endpoint, we take the following steps:
>
> For static networks:
>
> 1. The MCTP control daemon injects an entry into the route table, setting the
> *proposed* EID, the bus and the physical address. The `discovered` bit
> associated with this entry remains clear.
>
> 2. The MCTP control daemon constructs a `Set EID` message with an MCTP header
> containing the destination EID set to the *proposed* EID (setting the
> destination EID to the *proposed* EID is purely for routing purposes, the
> message does not go onto the wire in this state).
>
> 3. The MCTP control daemon sends the `Set EID` message via the socket interface.
>
> 4. The kernel receives the message and parses the MCTP header to resolve the
> route.
>
> 5. The kernel discovers from the routing table that the `discovered` flag is
> _not_ set for the destination EID and introspects the packet for the `Set EID`
> MCTP command.
>
> 6. The kernel _modifies_ the packet, replacing destination EID with Special EID
> 0 for the `Set EID` packet.
>
> 7. The kernel passes the modified message onto the binding implementation
> (resolved via the route table) for transmission to the target endpoint.
>
> 8. The target endpoint responds to the `Set EID` message.
>
> 9. The kernel passes the response back to the userspace process associated with
> the sending socket.
>
> 10. The MCTP control daemon receives the response to the `Set EID` command. If
> the command is successful the MCTP control daemon sets the `discovered` flag in
> the route table and no further EID replacement is performed for packets routed
> to that device. If the command failed then the discovered flag remains clear.
> Further, the response may indicate the device has already received a
> _different_ endpoint ID from a previous `Set EID` command, in which case the
> route table is updated with the returned EID and the discovered flag is set.
>
> For dynamic networks the process is largely the same, though the route table is
> updated to contain the device bus address when we receive the binding-specific
> `Discovery Notify` signal. This signal is translated to a Discovery Notify
> message to trigger userspace probing of the bus for new devices and to perform
> address assignment. Userspace can inspect the route table for devices with the
> `discovered` flag cleared to determine what devices need address assignment.
>
> > Get EID command needs to return
> > binding specific information as a part of its response.
>
> Rather, `Get EID` returns the EID for the device at a particular physical
> address. This is subject to the same sequence outlined above.
>
> > Get UUID command needs to
> > return same UUID across all physical bindings.
>
> This is tied to how bridging will be implemented. Again, bridging is handled by
> commands through the netlink interface in the case of the proposed kernel
> implementation, and we just need to associate the one UUID with each of the
> endpoints participating in the bridge.
>
> > And so on. Thus how would control
> > commands be handled in demux daemon? How would it look like when Kernel based
> > sockets are introduced ?
>
> We may need to translate some of these concepts to designs that we could
> implement on the mctp-demux-daemon, but otherwise I think your two questions
> here are largely answered by the descriptions above.
>
> Hope that helps!
>
> Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
* RE: MCTP Sockets related questions
2020-04-17 4:04 ` MCTP Sockets related questions Andrew Jeffery
@ 2020-04-22 8:33 ` Bhat, Sumanth
2020-04-23 4:57 ` Andrew Jeffery
0 siblings, 1 reply; 5+ messages in thread
From: Bhat, Sumanth @ 2020-04-22 8:33 UTC (permalink / raw)
To: Andrew Jeffery, Jeremy Kerr, openbmc
Cc: Thomaiyar, Richard Marian, Winiarska, Iwona
Hi Andrew,
Thanks a lot for taking the time out for answering our questions on MCTP sockets in detail. Do you have plans of pushing a Kernel based MCTP implementation proposal to gerrit ?
Thanks,
Sumanth
-----Original Message-----
From: Andrew Jeffery <andrew@aj.id.au>
Sent: Friday, April 17, 2020 9:35 AM
To: Bhat, Sumanth <sumanth.bhat@intel.com>; Jeremy Kerr <jk@ozlabs.org>; openbmc@lists.ozlabs.org
Cc: Thomaiyar, Richard Marian <richard.marian.thomaiyar@intel.com>; Winiarska, Iwona <iwona.winiarska@intel.com>
Subject: Re: MCTP Sockets related questions
+openbmc@lists.ozlabs.org
On Fri, 17 Apr 2020, at 13:18, Andrew Jeffery wrote:
> Hi Sumanth
>
> On Fri, 17 Apr 2020, at 01:48, Bhat, Sumanth wrote:
> >
> > Hi Jeremy, Andrew,
> >
> > I have tried to capture our questions and concerns related to MCTP
> > Sockets in the PMCI WorkGroup page under the topic – MCTP Socket
> > Interfaces; link here -
> > https://github.com/openbmc/openbmc/wiki/OpenBMC-PMCI-WG. Hope you
> > can have a look at it.
>
> Thanks for getting these written down, they are all great questions.
> It's hard to have a conversation via a wiki, so I'm pasting the questions below:
>
> > Here are few questions for socket based implementation –
> >
> > Bus Owner / Bridging / Endpoint roles:
> > The current demux-daemon supports only static EIDs. How do we extend
> > ‘Bus Owner”, ‘Endpoint’ and ‘Bridging Device’ concepts to demux-daemon?
>
> I think it probably needs to be made clear that the role of the
> mctp-demux-daemon is nothing more than to transform the interface for
> MCTP messages from direct calls to libmctp to use of sockets, as this
> will make migration to the planned kernel interface easier.
> Applications wanting to talk over MCTP should connect to the
> mctp-demux-daemon socket and send messages this way. This includes the
> application that will handle MCTP control messages defined in the base specification.
>
> Now, there is the issue that MCTP control commands affect the binding
> associated with an endpoint, and as above the mctp-demux-daemon
> doesn't handle any commands itself. What's missing from
> mctp-demux-daemon is an out-of-band interface to manipulate the
> binding in response to control messages. Elements of this out-of-band
> interface are being proposed in the phosphor-dbus-interfaces patch that is currently under review[1].
>
> Regarding the planned kernel interface for MCTP, it will come in two parts:
>
> 1. A common socket-based interface for exchanging messages between
> endpoints 2. A netlink interface to control configuration of MCTP networks and endpoints
> connected to the system.
>
> Control messages in the kernel implementation will also be handled in
> userspace (possibly except for binding-defined messages). The daemon
> handling control messages responds by poking the netlink interface to
> reconfigure the kernel as appropriate. Note that we have an alignment
> between the kernel interface proposed here and the need for the
> out-of-band interfaces on the mctp-demux-daemon outlined above
> (netlink is also out-of-band). As part of the eventual transition away
> from the mctp-demux-daemon to the kernel-based socket implementation
> it's a possibility that we could wrap the netlink interface with the
> D-Bus interface, which should mean minimal changes for applications
> already using the D-Bus interface (though realistically this should just impact the daemon handling control messages).
>
> Returning to your question about the three operational modes in light
> of the above, a few points:
>
> 1. Endpoint-mode needs to respond to e.g. `Set EID` messages. A `Set
> EID` message would be received by the MCTP control daemon connected to
> the mctp-demux-daemon, and the MCTP control daemon would e.g. call a
> SetEID() method on the mctp-demux-daemon object's D-Bus interface to
> reconfigure the endpoint.
>
> 2. I think Bus-owner mode is mainly a consideration of how the MCTP
> control daemon operates (i.e. sending messages rather than simply
> responding to them as in Endpoint-mode).
>
> 3. Bridging is handled in two parts: The binding together of endpoints
> may occur in the mctp-demux-daemon if the design is such that the
> bridge has a singled EID rather than an EID per binding instance.
> Alternatively, if an EID is provided per-endpoint, multiple
> mctp-demux-daemons could be run with a separate daemon subscribing to
> each mctp-demux-daemon socket participating in the bridge.
>
> Point 3. requires some rework of the mctp-demux-daemon to provide a
> deterministic abstract-socket naming scheme to enable multiple
> concurrent mctp-demux-daemon instances to exist, and the work is
> similar to what I've recently done for the obmc-console package. The
> naming-scheme may be defined by the system configuration (as is the case with obmc-console).
>
> [1]
> https://gerrit.openbmc-project.xyz/c/openbmc/phosphor-dbus-interfaces/
> +/30139
>
> > Also, when the sockets
> > move to Kernel, what would be the way for a user to configure a
> > certain physical binding in “Bus Owner” mode and another binding in “Endpoint” mode ?
>
> As mentioned above, this isn't a property of the endpoint so much as
> how the endpoint is used by applications (such as the MCTP control
> daemon). The kernel will be agnostic to how an endpoint is used beyond
> configuring bindings and endpoints as directed by userspace via the netlink interface.
>
> > We will have cases
> > where BMC will be Bus Owner on a certain bus and Endpoint on another bus simultaneously.
>
> That's fine, it's a use-case I anticipated (and again it partly comes
> back to how endpoints are used by applications rather than a property
> of the endpoint itself).
>
> >
> > Multiple MCTP Daemon instantiations:
> >
> > The rate of transmission and reception of MCTP messages will be
> > limited by the underlying physical binding. Having one instance of
> > MCTP transport interface per physical port would speed up the TX and
> > RX. How can this be achieved in demux daemon?
>
> This is enabled by deterministic naming of abstract sockets that I
> talked about above.
>
> > And how would this be addressed
> > in Kernel based sockets ?
>
> Messages are sent in process context, so concurrency is as wide as the
> number of threads available assuming you're sending across different interfaces.
>
> > How can a user specify the physical bindings he/she is going to need
> > and instances for the same ?
>
> Via the netlink interface.
>
> >
> > Support for upper layer protocols:
> > In Intel’s usecases, most of the upper layer protocols like
> > PLDM/Intel Vendor Defined Messaging Type/SPDM etc. are going to be
> > “Requesters” i.e. they are going to send out request packets to a
> > connected device on the platform (ex: Add-In Cards) using MCTP.
> > These protocols will not have prior knowledge about the EIDs and
> > thus need a way to query the existing EIDs and the message types
> > supported by the EIDs from the MCTP layer in order to start their
> > communication. The D-Bus proposal handles this by creating D-Bus
> > objects for the EIDs. How would we achieve the same in demux daemon ?
>
> This is resolved by e.g. the mctp-demux-daemon implementing the D-Bus
> interfaces your proposing (aside from the Rx/Tx methods) as the
> out-of-band information/event mechanism.
>
> > How would Kernel based sockets handle this ?
>
> The netlink interface allows userspace to query the topology of the
> network, which will be set up by the MCTP control daemon.
>
> As to what message types are supported by endpoints, I didn't have any
> plan to cache this information on the BMC. I figured the application
> wanting to talk to the endpoint would query the endpoint for this
> information directly. These queries operate at multiple levels, e.g:
>
> * What MCTP control commands are supported?
> * What PLDM constructs are supported?
> * What SPDM concepts are supported?
>
> None of this information belongs in the kernel. Whether userspace
> should expose it in some generic fashion is up for debate but as
> mentioned I feel the answer is probably not, just leave it to specific applications.
>
> >
> > Discovery of MCTP capable devices:
> >
> > We would need to modify the demux-daemon to cater for the discovery mechanisms.
> > When BMC acts as a Bus Owner, it would have to go ahead and discover
> > other end points on the bus and this discovery mechanism varies
> > according to the bus, and the role: For example: How a PCIe device
> > discovers other endpoints is totally different from how a SMBus device would do.
>
> But this is binding-implementation specific. The logic should live in
> the binding, no? Device hotplug notifications are binding-specific but
> there is a the Discovery Notify message that bindings can propagate up
> the stack to notify e.g. the MCTP control daemon that a device has appeared, and this is generic.
>
> > Similarly, how BMC as PCIe bus owner would discover other endpoints
> > (Endpoint Discovery control commands) is different from how BMC as
> > PCIe endpoint would discover other endpoints(Get Routing Table update).
> > And discovered endpoints need to have a representation (ex: D-Bus
> > objects) so that upper layer protocols can discover them. How would this be handled in demux daemon/Kernel approach ?
>
> Userspace interacting with the endpoint at an MCTP-control level will
> know which mode it's operating in, and so will know what method it
> needs to use to construct the routing table (as a means to know the
> other endpoints in the network).
>
> It sounds like what you're after is an abstraction that presents the
> network to applications that do not care which mode in which the endpoints are operating?
> If so, this is something I brought up on the phosphor-dbus-interfaces
> patch: We should come up with an abstract representation of the
> network for applications to consume.
>
> >
> > Control commands:
> >
> > Most control commands couple tightly with the binding and mctp layer
> > itself; for example, when Set EID is used by the BMC to allocate EID
> > to another device, it needs to use Special EID 0 + physical address of the device.
>
> Okay, so I had a bit of a bag of tricks planned here that mean we
> don't need to embed physical addresses into e.g. `Set EID` packets.
> There's no allowance for this in the spec anyway.
>
> The main insight for e.g. `Set EID` is that commands like this are
> only sent by bus-owners who must be controlling their own route table.
> The MCTP route table is effectively the combination of the ARP table
> and route table concepts from IP networks, and so the intent with the
> kernel-based MCTP implementation is to expose the route table to
> userspace just like the ARP table, including the ability to inject entries into the table (like the ARP table).
>
> From there we maintain state for each entry that describes whether or
> not the EID has been assigned by userspace, akin to the `discovered`
> flag that we maintain for the endpoint itself: This is set when the
> endpoint ID has been successfully assigned (i.e. we see a `SUCCESS`
> completion code to for a `Set EID` message).
>
> Further, EIDs must be unique in the network, so the route table must
> not contain the same EID assigned to multiple devices. This means that
> the EID is unambiguous in identifying the device.
>
> The trick is that EIDs unambiguously identifying devices is true
> regardless of the state of the `discovered` flag associated with the
> entry in the route table. So the plan is that in order to send a `Set
> EID` to a discovered endpoint, we take the following steps:
>
> For static networks:
>
> 1. The MCTP control daemon injects an entry into the route table,
> setting the
> *proposed* EID, the bus and the physical address. The `discovered` bit
> associated with this entry remains clear.
>
> 2. The MCTP control daemon constructs a `Set EID` message with an MCTP
> header containing the destination EID set to the *proposed* EID
> (setting the destination EID to the *proposed* EID is purely for
> routing purposes, the message does not go onto the wire in this state).
>
> 3. The MCTP control daemon sends the `Set EID` message via the socket interface.
>
> 4. The kernel receives the message and parses the MCTP header to
> resolve the route.
>
> 5. The kernel discovers from the routing table that the `discovered`
> flag is _not_ set for the destination EID and introspects the packet
> for the `Set EID` MCTP command.
>
> 6. The kernel _modifies_ the packet, replacing destination EID with
> Special EID
> 0 for the `Set EID` packet.
>
> 7. The kernel passes the modified message onto the binding
> implementation (resolved via the route table) for transmission to the target endpoint.
>
> 8. The target endpoint responds to the `Set EID` message.
>
> 9. The kernel passes the response back to the userspace process
> associated with the sending socket.
>
> 10. The MCTP control daemon receives the response to the `Set EID`
> command. If the command is successful the MCTP control daemon sets the
> `discovered` flag in the route table and no further EID replacement is
> performed for packets routed to that device. If the command failed then the discovered flag remains clear.
> Further, the response may indicate the device has already received a
> _different_ endpoint ID from a previous `Set EID` command, in which
> case the route table is updated with the returned EID and the discovered flag is set.
>
> For dynamic networks the process is largely the same, though the route
> table is updated to contain the device bus address when we receive the
> binding-specific `Discovery Notify` signal. This signal is translated
> to a Discovery Notify message to trigger userspace probing of the bus
> for new devices and to perform address assignment. Userspace can
> inspect the route table for devices with the `discovered` flag cleared to determine what devices need address assignment.
>
> > Get EID command needs to return
> > binding specific information as a part of its response.
>
> Rather, `Get EID` returns the EID for the device at a particular
> physical address. This is subject to the same sequence outlined above.
>
> > Get UUID command needs to
> > return same UUID across all physical bindings.
>
> This is tied to how bridging will be implemented. Again, bridging is
> handled by commands through the netlink interface in the case of the
> proposed kernel implementation, and we just need to associate the one
> UUID with each of the endpoints participating in the bridge.
>
> > And so on. Thus how would control
> > commands be handled in demux daemon? How would it look like when
> > Kernel based sockets are introduced ?
>
> We may need to translate some of these concepts to designs that we
> could implement on the mctp-demux-daemon, but otherwise I think your
> two questions here are largely answered by the descriptions above.
>
> Hope that helps!
>
> Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MCTP Sockets related questions
2020-04-22 8:33 ` Bhat, Sumanth
@ 2020-04-23 4:57 ` Andrew Jeffery
2020-05-21 7:22 ` Nancy Yuen
0 siblings, 1 reply; 5+ messages in thread
From: Andrew Jeffery @ 2020-04-23 4:57 UTC (permalink / raw)
To: Bhat, Sumanth, Jeremy Kerr, openbmc
Cc: Thomaiyar, Richard Marian, Winiarska, Iwona
On Wed, 22 Apr 2020, at 18:03, Bhat, Sumanth wrote:
> Hi Andrew,
> Thanks a lot for taking the time out for answering our questions on
> MCTP sockets in detail. Do you have plans of pushing a Kernel based
> MCTP implementation proposal to gerrit ?
>
Yes I do! I'll try to get something together in the next week or so.
Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MCTP Sockets related questions
2020-04-23 4:57 ` Andrew Jeffery
@ 2020-05-21 7:22 ` Nancy Yuen
2020-05-22 1:21 ` Andrew Jeffery
0 siblings, 1 reply; 5+ messages in thread
From: Nancy Yuen @ 2020-05-21 7:22 UTC (permalink / raw)
To: Andrew Jeffery
Cc: Bhat, Sumanth, Jeremy Kerr, openbmc, Thomaiyar, Richard Marian,
Winiarska, Iwona
[-- Attachment #1: Type: text/plain, Size: 580 bytes --]
Hey Andrew,
Have you pushed a proposal for kernel based MCTP implementation? I didn't
see one... I'd be interested in reading it!
----------
Nancy
On Wed, Apr 22, 2020 at 9:57 PM Andrew Jeffery <andrew@aj.id.au> wrote:
>
>
> On Wed, 22 Apr 2020, at 18:03, Bhat, Sumanth wrote:
> > Hi Andrew,
> > Thanks a lot for taking the time out for answering our questions on
> > MCTP sockets in detail. Do you have plans of pushing a Kernel based
> > MCTP implementation proposal to gerrit ?
> >
>
> Yes I do! I'll try to get something together in the next week or so.
>
> Andrew
>
[-- Attachment #2: Type: text/html, Size: 1071 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: MCTP Sockets related questions
2020-05-21 7:22 ` Nancy Yuen
@ 2020-05-22 1:21 ` Andrew Jeffery
0 siblings, 0 replies; 5+ messages in thread
From: Andrew Jeffery @ 2020-05-22 1:21 UTC (permalink / raw)
To: Nancy Yuen
Cc: Bhat, Sumanth, Jeremy Kerr, openbmc, Thomaiyar, Richard Marian,
Winiarska, Iwona
On Thu, 21 May 2020, at 16:52, Nancy Yuen wrote:
> Hey Andrew,
>
> Have you pushed a proposal for kernel based MCTP implementation? I
> didn't see one... I'd be interested in reading it!
I started putting something together but I haven't yet posted anything.
The eternal problem of not having enough time due to internal priorities.
Is anyone willing to help out? Happy to have a chat about the ideas in lieu
of getting them written down.
Andrew
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2020-05-22 1:21 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <1504A9E7C77EF44697F386AD61B1626015342605@BGSMSX105.gar.corp.intel.com>
[not found] ` <8ae8365a-ff09-4f4a-9445-17898487cb29@www.fastmail.com>
2020-04-17 4:04 ` MCTP Sockets related questions Andrew Jeffery
2020-04-22 8:33 ` Bhat, Sumanth
2020-04-23 4:57 ` Andrew Jeffery
2020-05-21 7:22 ` Nancy Yuen
2020-05-22 1:21 ` Andrew Jeffery
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.