LINKTYPE_IPMB_LINUX
Packet structure
+-------------------------+ | Bus number+event flag | | (1 Octet) | +-------------------------+ | Flags | | (4 Octets) | +-------------------------+ | Hardware address | | (1 Octet) | +-------------------------+ | Payload | . . . . . .
Description
The lower 7 bits of the bus number + event flag field contain the bus number; the upper bit indicates whether the packet is an event or a regular packet—if it's set, the packet is an event.
The flags are in network byte order (big-endian). The interpretation of the flags depends on whether the packet is a regular packet or an event.
If the packet is a regular packet, the flag bits are:
0x00000001
- if set, the packet is a read.
The upper 7 bits of the hardware address field contain the slave address for the packet. The payload is an IPMB packet.
If the packet is an event, the lower-order 16 bits indicate what type of event this is:
0x00000001
- promiscuous mode was enabled;0x00000002
- promiscuous mode was disabled;0x00000004
- the I2C controller went online;0x00000008
- the I2C controller went offline;0x00000010
- the I2C controller attached to an I2C bus;0x00000020
- the I2C controller detached from an I2C bus;0x00000040
- the promiscuous data buffer overflowed, and some data was lost;0x00000080
- the promiscuous data buffer is no longer full;0x00000100
- the incoming I2C data buffer overflowed, and some data was lost;0x00000200
- the incoming I2C data buffer is no longer full;
For the "I2C controller went offline" error, the upper-order 16 bits indicate that:
0x00010000
- the I2C controller is unable to drive data LO;0x00020000
- the I2C controller is unable to drive data HI;0x00040000
- the I2C controller is unable to drive clock LO;0x00080000
- the I2C controller is unable to drive clock HI;0x00100000
- the I2C controller got a clock low timeout;0x00200000
- the I2C controller was physically disconnected from the bus;0x00400000
- an undiagnosed failure occurred;