Skip to content

Commit

Permalink
ipmi: Add docs for IPMB direct addressing
Browse files Browse the repository at this point in the history
Describe the addressing mechanism and how to use it.

Signed-off-by: Corey Minyard <[email protected]>
Tested-by: Andrew Manley <[email protected]>
Reviewed-by: Andrew Manley <[email protected]>
  • Loading branch information
cminyard committed Oct 5, 2021
1 parent 63c4eb3 commit ddf5873
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions Documentation/driver-api/ipmi.rst
Original file line number Diff line number Diff line change
Expand Up @@ -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
IPMI_BMC_CHANNEL.

Messages that are destined to go out on the IPMB bus use the
IPMI_IPMB_ADDR_TYPE address type. The format is::
Messages that are destined to go out on the IPMB bus going through the
BMC use the IPMI_IPMB_ADDR_TYPE address type. The format is::

struct ipmi_ipmb_addr
{
Expand All @@ -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
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
--------
Expand Down Expand Up @@ -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
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.


Expand Down

0 comments on commit ddf5873

Please sign in to comment.