OEM IPMI EthStats
Vernon Mauery
vernon.mauery at linux.intel.com
Sat Sep 1 05:39:19 AEST 2018
On 30-Aug-2018 02:15 PM, Patrick Venture wrote:
>Out of a desire to export link health information, we implemented an
>OEM IPMI command that lets one grab ethernet statistics from a named
>ethernet device on the BMC. (The NCSI statistics IPMI commands were a
>bit clunky and didn't do what we needed).
>
>The OEM IPMI commands spec is pretty short on this one:
>
>### Ethernet Statistics Command (0x30) {#ethernet-statistics-command-0x30}
I would say that this command could be useful to the entire OpenBMC
community, so registering it under the OpenBMC OEM table would be good.
>There is the need to read a specific ethernet-level statistic value
>from the BMC. This is driven primarily to detect link errors that
>require hardware swaps during manufacturing.
>
>This command will be well structured such that there is a request and
>response which mirror to some extent.
>
>The request will specify the ethernet interface by name, as a
>length-prepended string, and the field they're requesting by
>identifier (an unsigned byte).
>
>If the command is not supported, the IPMI OEM handler will respond
>accordingly, however, if the field is not supported or not recognized,
>the command will return 0xcc (invalid field).
>
>The current ethernet statistics available (all future additions must append):
>
>|Identifier |Human Readable Name
>|-----------|--------------------
>|0 |rx_bytes
>|1 |rx_compressed
>|2 |rx_crc_errors
>|3 |rx_dropped
>|4 |rx_errors
>|5 |rx_fifo_errors
>|6 |rx_frame_errors
>|7 |rx_length_errors
>|8 |rx_missed_errors
>|9 |rx_nohandler
>|10 |rx_over_errors
>|11 |rx_packets
>|12 |tx_aborted_errors
>|13 |tx_bytes
>|14 |tx_carrier_errors
>|15 |tx_compressed
>|16 |tx_dropped
>|17 |tx_errors
>|18 |tx_fifo_errors
>|19 |tx_heartbeat_errors
>|20 |tx_packets
>|21 |tx_window_errors
>
>Request
>
>|Byte(s) |Value |Data
>|--------|------|----
>|0x00 |Statistic ID |The identifier of the desired statistic
>|0x01 |Length |Where you expect the cable, eth0 or eth1, etc
>|0x02.. |The name |The string, not null-terminated
Rather than using actual ethernet device names, it might be better to
use IPMI channel numbers or 0..N-1 for the Nth ethernet device. Other
than that, the interface looks good to me.
--Vernon
>Response
>
>|Byte(s) |Value |Data
>|--------|-------|----
>|0x00 |Stat ID|The identifier of the desired statistic
>|0x01....|Uint64 |The value. Because these are counters we don't
>anticipate negative values, and we don't expect overflow.
More information about the openbmc
mailing list