mlx5io —
IOCTL
interface to manage Connect-X 4/5/6 Mellanox network adapters
#include
<dev/mlx5/mlx5io.h>
The
mlx5io interface is provided for management of
the Connect-X4, 5 and 6 network adapters in the aspects not covered by the
generic network configuration, mostly related to the PCIe attachment and
internal card working. Interface consists of the commands, which are passed by
means of
ioctl(2) on the file descriptor, opened
from the
/dev/mlx5ctl device node.
The following commands are implemented:
MLX5_FWDUMP_FORCE
- Take the snapshot of the firmware registers state and store
it in the kernel buffer. The buffer must be empty, in other words, no
dumps should be written so far, or existing dump cleared with the
MLX5_FWDUMP_RESET
command for the
specified device. The argument for the command should point to the
struct mlx5_tool_addr structure,
containing the PCIe bus address of the device.
MLX5_FWDUMP_RESET
- Clear the stored firmware dump, preparing the kernel buffer
for the next dump. The argument for the command should point to the
struct mlx5_tool_addr structure,
containing the PCIe bus address of the device.
MLX5_FWDUMP_GET
- Fetch the stored firmware dump into the user memory. The
argument to the command should point to the input/output
struct mlx5_fwdump_get structure. Its
devaddr
field specifies the address of
the device, the buf
fields points to
the array of struct mlx5_fwdump_reg of
records of the registers values, the size of the array is specified in the
reg_cnt
field.
On successfull return, the reg_filled
field reports the number of the buf
array elements actually filled with the registers values. If
buf
contains the
NULL
pointer, no registers are filled,
but reg_filled
still contains the
number of registers that should be passed for the complete dump.
The struct mlx5_fwdump_reg element contains
the address of the register in the field
addr
, and its value in the field
val
.
MLX5_FW_UPDATE
- Requests firmware update (flash) on the adapter specified
by the
devaddr
using the firmware image
in MFA2
format. The argument for the
ioctl command is the struct
mlx5_fw_update with the following definition.
Image address in memory is passed in
img_fw_data
, the length of the image is
specified in img_fw_data_len
field.
MLX5_FW_RESET
- Requests PCIe link-level reset on the device. The address
of the device is specified by the struct
mlx5_tool_addr structure, which should be passed as an
argument.
MLX5_EEPROM_GET
- Fetch EEPROM information. The argument to the command
should point to the input/output struct
mlx5_eeprom_get structure where, the
devaddr
field specifies the address of
the device.
On successfull return, the
eeprom_info_out_len
field reports the
length of the EEPROM information.
eeprom_info_buf
field contains the
actual EEPROM information.
eeprom_info_page_valid
field reports
the third page validity.
The
/dev/mlx5ctl
devfs(5) node is used to pass commands to the
driver.
If successful, the IOCTL returns zero. Otherwise, -1 is returned and the global
variable
errno is set to indicate the error.
errno(2),
ioctl(2),
mlx5en(4),
mlx5ib(4),
mlx5tool(8) and
pci(9).