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.
- 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.
- Allocates kernel memory; connect allocation flags and lifetime to context constraints.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
internal.h
Detected Declarations
struct mlx5hws_definer_sel_ctrlstruct mlx5hws_definer_conv_datafunction hws_definer_ones_setfunction hws_definer_generic_setfunction hws_definer_outer_vlan_type_setfunction hws_definer_inner_vlan_type_setfunction hws_definer_second_vlan_type_setfunction hws_definer_inner_second_vlan_type_setfunction hws_definer_outer_second_vlan_type_setfunction hws_definer_icmp_dw1_setfunction hws_definer_icmpv6_dw1_setfunction hws_definer_l3_type_setfunction hws_definer_set_source_port_gvmifunction hws_definer_set_source_gvmi_vhca_idfunction hws_definer_set_source_gvmifunction hws_definer_flex_parser_steering_ok_bits_handlerfunction hws_definer_flex_parser_handlerfunction hws_definer_misc4_fields_handlerfunction hws_definer_check_match_flagsfunction hws_definer_conv_outerfunction HWS_GET_MATCH_PARAMfunction hws_definer_conv_innerfunction HWS_GET_MATCH_PARAMfunction hws_definer_conv_miscfunction HWS_GET_MATCH_PARAMfunction hws_definer_conv_misc2function hws_definer_conv_misc3function HWS_IS_FLD_SET_SZfunction hws_definer_conv_misc4function hws_definer_conv_misc5function hws_definer_get_fc_sizefunction hws_definer_alloc_compressed_fcfunction hws_definer_set_hlfunction hws_definer_alloc_fcfunction hws_definer_conv_match_params_to_hlfunction hws_definer_find_byte_in_tagfunction hws_definer_fc_bindfunction hws_definer_best_hl_fit_recufunction hws_definer_copy_sel_ctrlfunction hws_definer_find_best_match_fitfunction hws_definer_create_tag_maskfunction mlx5hws_definer_create_tagfunction mlx5hws_definer_get_idfunction mlx5hws_definer_comparefunction mlx5hws_definer_calc_layoutfunction mlx5hws_definer_init_cachefunction mlx5hws_definer_uninit_cachefunction mlx5hws_definer_get_obj
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
- Immediate include surface: `internal.h`.
- Detected declarations: `struct mlx5hws_definer_sel_ctrl`, `struct mlx5hws_definer_conv_data`, `function hws_definer_ones_set`, `function hws_definer_generic_set`, `function hws_definer_outer_vlan_type_set`, `function hws_definer_inner_vlan_type_set`, `function hws_definer_second_vlan_type_set`, `function hws_definer_inner_second_vlan_type_set`, `function hws_definer_outer_second_vlan_type_set`, `function hws_definer_icmp_dw1_set`.
- Atlas domain: Driver Families / drivers/net.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.