ipmi: Add docs for IPMB direct addressing

Describe the addressing mechanism and how to use it.

Signed-off-by: Corey Minyard <minyard@acm.org>
Tested-by: Andrew Manley <andrew.manley@sealingtech.com>
Reviewed-by: Andrew Manley <andrew.manley@sealingtech.com>
This commit is contained in:
Corey Minyard 2021-09-30 17:06:48 -05:00 committed by Corey Minyard
parent 63c4eb3471
commit ddf58738f5

View File

@ -166,8 +166,8 @@ and the type is IPMI_SYSTEM_INTERFACE_ADDR_TYPE. This is used for talking
straight to the BMC on the current card. The channel must be straight to the BMC on the current card. The channel must be
IPMI_BMC_CHANNEL. IPMI_BMC_CHANNEL.
Messages that are destined to go out on the IPMB bus use the Messages that are destined to go out on the IPMB bus going through the
IPMI_IPMB_ADDR_TYPE address type. The format is:: BMC use the IPMI_IPMB_ADDR_TYPE address type. The format is::
struct ipmi_ipmb_addr struct ipmi_ipmb_addr
{ {
@ -181,6 +181,23 @@ The "channel" here is generally zero, but some devices support more
than one channel, it corresponds to the channel as defined in the IPMI than one channel, it corresponds to the channel as defined in the IPMI
spec. spec.
There is also an IPMB direct address for a situation where the sender
is directly on an IPMB bus and doesn't have to go through the BMC.
You can send messages to a specific management controller (MC) on the
IPMB using the IPMI_IPMB_DIRECT_ADDR_TYPE with the following format::
struct ipmi_ipmb_direct_addr
{
int addr_type;
short channel;
unsigned char slave_addr;
unsigned char rq_lun;
unsigned char rs_lun;
};
The channel is always zero. You can also receive commands from other
MCs that you have registered to handle and respond to them, so you can
use this to implement a management controller on a bus..
Messages Messages
-------- --------
@ -348,6 +365,10 @@ user may be registered for each netfn/cmd/channel, but different users
may register for different commands, or the same command if the may register for different commands, or the same command if the
channel bitmasks do not overlap. channel bitmasks do not overlap.
To respond to a received command, set the response bit in the returned
netfn, use the address from the received message, and use the same
msgid that you got in the receive message.
From userland, equivalent IOCTLs are provided to do these functions. From userland, equivalent IOCTLs are provided to do these functions.