table of contents
| mlx5io(4) | Device Drivers Manual | mlx5io(4) |
NAME¶
mlx5io — IOCTL
interface to manage Connect-X 4/5/6 Mellanox network adapters
SYNOPSIS¶
#include
<dev/mlx5/mlx5io.h>
DESCRIPTION¶
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_RESETcommand 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.struct mlx5_tool_addr { uint32_t domain; uint8_t bus; uint8_t slot; uint8_t func; }; 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
devaddrfield specifies the address of the device, thebuffields points to the array of struct mlx5_fwdump_reg of records of the registers values, the size of the array is specified in thereg_cntfield.struct mlx5_fwdump_get { struct mlx5_tool_addr devaddr; struct mlx5_fwdump_reg *buf; size_t reg_cnt; size_t reg_filled; /* out */ };On successfull return, the
reg_filledfield reports the number of thebufarray elements actually filled with the registers values. Ifbufcontains theNULLpointer, no registers are filled, butreg_filledstill 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 fieldval.struct mlx5_fwdump_reg { uint32_t addr; uint32_t val; }; MLX5_FW_UPDATE- Requests firmware update (flash) on the adapter specified by the
devaddrusing the firmware image inMFA2format. The argument for the ioctl command is the struct mlx5_fw_update with the following definition.Image address in memory is passed instruct mlx5_fw_update { struct mlx5_tool_addr devaddr; void *img_fw_data; size_t img_fw_data_len; };img_fw_data, the length of the image is specified inimg_fw_data_lenfield. 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
devaddrfield specifies the address of the device.struct mlx5_eeprom_get { struct mlx5_tool_addr devaddr; size_t eeprom_info_page_valid; uint32_t *eeprom_info_buf; size_t eeprom_info_out_len; };On successfull return, the
eeprom_info_out_lenfield reports the length of the EEPROM information.eeprom_info_buffield contains the actual EEPROM information.eeprom_info_page_validfield reports the third page validity.
FILES¶
The /dev/mlx5ctl devfs(5) node is used to pass commands to the driver.
RETURN VALUES¶
If successful, the IOCTL returns zero. Otherwise, -1 is returned and the global variable errno is set to indicate the error.
SEE ALSO¶
errno(2), ioctl(2), mlx5en(4), mlx5ib(4), mlx5tool(8) and pci(9).
| October 2, 2019 | Debian |