drivers/net/ethernet/mellanox/mlx5/core/lib/nv_param.c

Source file repositories/reference/linux-study-clean/drivers/net/ethernet/mellanox/mlx5/core/lib/nv_param.c

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/lib/nv_param.c
Extension
.c
Size
22692 bytes
Lines
800
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct mlx5_ifc_configuration_item_type_class_global_bits {
	u8         type_class[0x8];
	u8         parameter_index[0x18];
};

struct mlx5_ifc_configuration_item_type_class_per_host_pf_bits {
	u8         type_class[0x8];
	u8         pf_index[0x6];
	u8         pci_bus_index[0x8];
	u8         parameter_index[0xa];
};

union mlx5_ifc_config_item_type_auto_bits {
	struct mlx5_ifc_configuration_item_type_class_global_bits
				configuration_item_type_class_global;
	struct mlx5_ifc_configuration_item_type_class_per_host_pf_bits
				configuration_item_type_class_per_host_pf;
	u8 reserved_at_0[0x20];
};

enum {
	MLX5_ACCESS_MODE_NEXT = 0,
	MLX5_ACCESS_MODE_CURRENT,
	MLX5_ACCESS_MODE_DEFAULT,
};

struct mlx5_ifc_config_item_bits {
	u8         valid[0x2];
	u8         priority[0x2];
	u8         header_type[0x2];
	u8         ovr_en[0x1];
	u8         rd_en[0x1];
	u8         access_mode[0x2];
	u8         reserved_at_a[0x1];
	u8         writer_id[0x5];
	u8         version[0x4];
	u8         reserved_at_14[0x2];
	u8         host_id_valid[0x1];
	u8         length[0x9];

	union mlx5_ifc_config_item_type_auto_bits type;

	u8         reserved_at_40[0x10];
	u8         crc16[0x10];
};

struct mlx5_ifc_mnvda_reg_bits {
	struct mlx5_ifc_config_item_bits configuration_item_header;

	u8         configuration_item_data[64][0x20];
};

struct mlx5_ifc_nv_global_pci_conf_bits {
	u8         sriov_valid[0x1];
	u8         reserved_at_1[0x10];
	u8         per_pf_total_vf[0x1];
	u8         reserved_at_12[0xe];

	u8         sriov_en[0x1];
	u8         reserved_at_21[0xf];
	u8         total_vfs[0x10];

	u8         reserved_at_40[0x20];
};

struct mlx5_ifc_nv_global_pci_cap_bits {
	u8         max_vfs_per_pf_valid[0x1];
	u8         reserved_at_1[0x13];
	u8         per_pf_total_vf_supported[0x1];
	u8         reserved_at_15[0xb];

	u8         sriov_support[0x1];
	u8         reserved_at_21[0xf];
	u8         max_vfs_per_pf[0x10];

	u8         reserved_at_40[0x60];
};

struct mlx5_ifc_nv_pf_pci_conf_bits {
	u8         reserved_at_0[0x9];
	u8         pf_total_vf_en[0x1];
	u8         reserved_at_a[0x16];

	u8         reserved_at_20[0x20];

	u8         reserved_at_40[0x10];
	u8         total_vf[0x10];

	u8         reserved_at_60[0x20];
};

Annotation

Implementation Notes