drivers/net/ethernet/mellanox/mlx5/core/fs_core.c

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

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/fs_core.c
Extension
.c
Size
114288 bytes
Lines
4307
Domain
Driver Families
Bucket
drivers/net
Inferred role
Driver Families: exported/initcall integration point
Status
integration 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 node_caps {
	size_t	arr_sz;
	long	*caps;
};

static struct init_tree_node {
	enum fs_node_type	type;
	struct init_tree_node *children;
	int ar_size;
	struct node_caps caps;
	int min_ft_level;
	int num_leaf_prios;
	int prio;
	int num_levels;
	enum mlx5_flow_table_miss_action def_miss_action;
} root_fs = {
	.type = FS_TYPE_NAMESPACE,
	.ar_size = 8,
	  .children = (struct init_tree_node[]){
		  ADD_PRIO(0, BY_PASS_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(MLX5_BY_PASS_NUM_PRIOS,
						    BY_PASS_PRIO_NUM_LEVELS))),
		  ADD_PRIO(0, KERNEL_RX_MACSEC_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(KERNEL_RX_MACSEC_NUM_PRIOS,
						    KERNEL_RX_MACSEC_NUM_LEVELS))),
		  ADD_PRIO(0, LAG_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(LAG_NUM_PRIOS,
						    LAG_PRIO_NUM_LEVELS))),
		  ADD_PRIO(0, OFFLOADS_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(OFFLOADS_NUM_PRIOS,
						    OFFLOADS_MAX_FT))),
		  ADD_PRIO(0, ETHTOOL_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(ETHTOOL_NUM_PRIOS,
						    ETHTOOL_PRIO_NUM_LEVELS))),
		  ADD_PRIO(0, KERNEL_MIN_LEVEL, 0, {},
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(KERNEL_NIC_TC_NUM_PRIOS,
						    KERNEL_NIC_TC_NUM_LEVELS),
				  ADD_MULTIPLE_PRIO(KERNEL_NIC_PROMISC_NUM_PRIOS,
						    KERNEL_NIC_PROMISC_NUM_LEVELS),
				  ADD_MULTIPLE_PRIO(KERNEL_NIC_NUM_PRIOS,
						    KERNEL_NIC_PRIO_NUM_LEVELS))),
		  ADD_PRIO(0, BY_PASS_MIN_LEVEL, 0, FS_CHAINING_CAPS,
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(LEFTOVERS_NUM_PRIOS,
						    LEFTOVERS_NUM_LEVELS))),
		  ADD_PRIO(0, ANCHOR_MIN_LEVEL, 0, {},
			   ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				  ADD_MULTIPLE_PRIO(ANCHOR_NUM_PRIOS,
						    ANCHOR_NUM_LEVELS))),
	}
};

static struct init_tree_node egress_root_fs = {
	.type = FS_TYPE_NAMESPACE,
	.ar_size = 3,
	.children = (struct init_tree_node[]) {
		ADD_PRIO(0, MLX5_BY_PASS_NUM_PRIOS, 0,
			 FS_CHAINING_CAPS_EGRESS,
			 ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				ADD_MULTIPLE_PRIO(MLX5_BY_PASS_NUM_PRIOS,
						  BY_PASS_PRIO_NUM_LEVELS))),
		ADD_PRIO(0, KERNEL_TX_IPSEC_MIN_LEVEL, 0,
			 FS_CHAINING_CAPS_EGRESS,
			 ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				ADD_MULTIPLE_PRIO(KERNEL_TX_IPSEC_NUM_PRIOS,
						  KERNEL_TX_IPSEC_NUM_LEVELS))),
		ADD_PRIO(0, KERNEL_TX_MACSEC_MIN_LEVEL, 0,
			 FS_CHAINING_CAPS_EGRESS,
			 ADD_NS(MLX5_FLOW_TABLE_MISS_ACTION_DEF,
				ADD_MULTIPLE_PRIO(KERNEL_TX_MACSEC_NUM_PRIOS,
						  KERNEL_TX_MACSEC_NUM_LEVELS))),
	}
};

enum {
	RDMA_RX_IPSEC_PRIO,
	RDMA_RX_MACSEC_PRIO,
	RDMA_RX_COUNTERS_PRIO,
	RDMA_RX_BYPASS_PRIO,
	RDMA_RX_KERNEL_PRIO,
};

#define RDMA_RX_IPSEC_NUM_PRIOS 1
#define RDMA_RX_IPSEC_NUM_LEVELS 4

Annotation

Implementation Notes