drivers/net/ethernet/mellanox/mlx5/core/steering/hws/definer.c

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

File Facts

System
Linux kernel
Corpus path
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/definer.c
Extension
.c
Size
75963 bytes
Lines
2330
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 mlx5hws_definer_sel_ctrl {
	u8 allowed_full_dw; /* Full DW selectors cover all offsets */
	u8 allowed_lim_dw;  /* Limited DW selectors cover offset < 64 */
	u8 allowed_bytes;   /* Bytes selectors, up to offset 255 */
	u8 used_full_dw;
	u8 used_lim_dw;
	u8 used_bytes;
	u8 full_dw_selector[DW_SELECTORS];
	u8 lim_dw_selector[DW_SELECTORS_LIMITED];
	u8 byte_selector[BYTE_SELECTORS];
};

struct mlx5hws_definer_conv_data {
	struct mlx5hws_context *ctx;
	struct mlx5hws_definer_fc *fc;
	/* enum mlx5hws_definer_match_flag */
	u32 match_flags;
};

#define HWS_DEFINER_ENTRY(name)[MLX5HWS_DEFINER_FNAME_##name] = #name

static const char * const hws_definer_fname_to_str[] = {
	HWS_DEFINER_ENTRY(ETH_SMAC_47_16_O),
	HWS_DEFINER_ENTRY(ETH_SMAC_47_16_I),
	HWS_DEFINER_ENTRY(ETH_SMAC_15_0_O),
	HWS_DEFINER_ENTRY(ETH_SMAC_15_0_I),
	HWS_DEFINER_ENTRY(ETH_DMAC_47_16_O),
	HWS_DEFINER_ENTRY(ETH_DMAC_47_16_I),
	HWS_DEFINER_ENTRY(ETH_DMAC_15_0_O),
	HWS_DEFINER_ENTRY(ETH_DMAC_15_0_I),
	HWS_DEFINER_ENTRY(ETH_TYPE_O),
	HWS_DEFINER_ENTRY(ETH_TYPE_I),
	HWS_DEFINER_ENTRY(ETH_L3_TYPE_O),
	HWS_DEFINER_ENTRY(ETH_L3_TYPE_I),
	HWS_DEFINER_ENTRY(VLAN_TYPE_O),
	HWS_DEFINER_ENTRY(VLAN_TYPE_I),
	HWS_DEFINER_ENTRY(VLAN_FIRST_PRIO_O),
	HWS_DEFINER_ENTRY(VLAN_FIRST_PRIO_I),
	HWS_DEFINER_ENTRY(VLAN_CFI_O),
	HWS_DEFINER_ENTRY(VLAN_CFI_I),
	HWS_DEFINER_ENTRY(VLAN_ID_O),
	HWS_DEFINER_ENTRY(VLAN_ID_I),
	HWS_DEFINER_ENTRY(VLAN_SECOND_TYPE_O),
	HWS_DEFINER_ENTRY(VLAN_SECOND_TYPE_I),
	HWS_DEFINER_ENTRY(VLAN_SECOND_PRIO_O),
	HWS_DEFINER_ENTRY(VLAN_SECOND_PRIO_I),
	HWS_DEFINER_ENTRY(VLAN_SECOND_CFI_O),
	HWS_DEFINER_ENTRY(VLAN_SECOND_CFI_I),
	HWS_DEFINER_ENTRY(VLAN_SECOND_ID_O),
	HWS_DEFINER_ENTRY(VLAN_SECOND_ID_I),
	HWS_DEFINER_ENTRY(IPV4_IHL_O),
	HWS_DEFINER_ENTRY(IPV4_IHL_I),
	HWS_DEFINER_ENTRY(IP_DSCP_O),
	HWS_DEFINER_ENTRY(IP_DSCP_I),
	HWS_DEFINER_ENTRY(IP_ECN_O),
	HWS_DEFINER_ENTRY(IP_ECN_I),
	HWS_DEFINER_ENTRY(IP_TTL_O),
	HWS_DEFINER_ENTRY(IP_TTL_I),
	HWS_DEFINER_ENTRY(IPV4_DST_O),
	HWS_DEFINER_ENTRY(IPV4_DST_I),
	HWS_DEFINER_ENTRY(IPV4_SRC_O),
	HWS_DEFINER_ENTRY(IPV4_SRC_I),
	HWS_DEFINER_ENTRY(IP_VERSION_O),
	HWS_DEFINER_ENTRY(IP_VERSION_I),
	HWS_DEFINER_ENTRY(IP_FRAG_O),
	HWS_DEFINER_ENTRY(IP_FRAG_I),
	HWS_DEFINER_ENTRY(IP_LEN_O),
	HWS_DEFINER_ENTRY(IP_LEN_I),
	HWS_DEFINER_ENTRY(IP_TOS_O),
	HWS_DEFINER_ENTRY(IP_TOS_I),
	HWS_DEFINER_ENTRY(IPV6_FLOW_LABEL_O),
	HWS_DEFINER_ENTRY(IPV6_FLOW_LABEL_I),
	HWS_DEFINER_ENTRY(IPV6_DST_127_96_O),
	HWS_DEFINER_ENTRY(IPV6_DST_95_64_O),
	HWS_DEFINER_ENTRY(IPV6_DST_63_32_O),
	HWS_DEFINER_ENTRY(IPV6_DST_31_0_O),
	HWS_DEFINER_ENTRY(IPV6_DST_127_96_I),
	HWS_DEFINER_ENTRY(IPV6_DST_95_64_I),
	HWS_DEFINER_ENTRY(IPV6_DST_63_32_I),
	HWS_DEFINER_ENTRY(IPV6_DST_31_0_I),
	HWS_DEFINER_ENTRY(IPV6_SRC_127_96_O),
	HWS_DEFINER_ENTRY(IPV6_SRC_95_64_O),
	HWS_DEFINER_ENTRY(IPV6_SRC_63_32_O),
	HWS_DEFINER_ENTRY(IPV6_SRC_31_0_O),
	HWS_DEFINER_ENTRY(IPV6_SRC_127_96_I),
	HWS_DEFINER_ENTRY(IPV6_SRC_95_64_I),
	HWS_DEFINER_ENTRY(IPV6_SRC_63_32_I),
	HWS_DEFINER_ENTRY(IPV6_SRC_31_0_I),
	HWS_DEFINER_ENTRY(IP_PROTOCOL_O),
	HWS_DEFINER_ENTRY(IP_PROTOCOL_I),

Annotation

Implementation Notes