Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
mlx5io(4)		 BSD Kernel Interfaces Manual		     mlx5io(4)

     mlx5io -- IOCTL interface to manage Connect-X 4/5/6 Mellanox network

     #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 con-
     figuration, mostly	related	to the PCIe attachment and internal card work-
     ing.  Interface consists of the commands, which are passed	by means of
     ioctl(2) on the file descriptor, opened from the /dev/mlx5ctl device

     The following commands are	implemented:

	     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 struc-
	     ture, containing the PCIe bus address of the device.

	     struct mlx5_tool_addr {
		     uint32_t domain;
		     uint8_t bus;
		     uint8_t slot;
		     uint8_t func;

	     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.

	     Fetch the stored firmware dump into the user memory.  The argu-
	     ment to the command should	point to the input/output struct
	     mlx5_fwdump_get structure.	 Its devaddr field specifies the ad-
	     dress 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.

	     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_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.

	     struct mlx5_fwdump_reg {
		     uint32_t addr;
		     uint32_t val;

	     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 fol-
	     lowing definition.

	     struct mlx5_fw_update {
		     struct mlx5_tool_addr devaddr;
		     void *img_fw_data;
		     size_t img_fw_data_len;
	     Image address in memory is	passed in img_fw_data, the length of
	     the image is specified in img_fw_data_len field.

	     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.

	     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.

	     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_len field reports the
	     length of the EEPROM information.	eeprom_info_buf	field contains
	     the actual	EEPROM information.  eeprom_info_page_valid field re-
	     ports 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).

BSD				October	2, 2019				   BSD


Want to link to this manual page? Use this URL:

home | help