]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
net/mlx5: HWS, add definer function to get field name str
authorYevgeny Kliteynik <kliteyn@nvidia.com>
Sun, 11 May 2025 19:38:02 +0000 (22:38 +0300)
committerJakub Kicinski <kuba@kernel.org>
Tue, 13 May 2025 22:30:25 +0000 (15:30 -0700)
In preparation for complex matcher support, add function for
converting definer fname to str, which will be used in following
patches.

Signed-off-by: Yevgeny Kliteynik <kliteyn@nvidia.com>
Reviewed-by: Vlad Dogaru <vdogaru@nvidia.com>
Reviewed-by: Mark Bloch <mbloch@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Link: https://patch.msgid.link/1746992290-568936-3-git-send-email-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/definer.c
drivers/net/ethernet/mellanox/mlx5/core/steering/hws/definer.h

index 1061a46811ac08bea0c4b1a07727393116b60350..5cc0dc002ac1c646969d4412f59ec904948be488 100644 (file)
@@ -158,6 +158,218 @@ struct mlx5hws_definer_conv_data {
        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),
+       HWS_DEFINER_ENTRY(L4_SPORT_O),
+       HWS_DEFINER_ENTRY(L4_SPORT_I),
+       HWS_DEFINER_ENTRY(L4_DPORT_O),
+       HWS_DEFINER_ENTRY(L4_DPORT_I),
+       HWS_DEFINER_ENTRY(TCP_FLAGS_I),
+       HWS_DEFINER_ENTRY(TCP_FLAGS_O),
+       HWS_DEFINER_ENTRY(TCP_SEQ_NUM),
+       HWS_DEFINER_ENTRY(TCP_ACK_NUM),
+       HWS_DEFINER_ENTRY(GTP_TEID),
+       HWS_DEFINER_ENTRY(GTP_MSG_TYPE),
+       HWS_DEFINER_ENTRY(GTP_EXT_FLAG),
+       HWS_DEFINER_ENTRY(GTP_NEXT_EXT_HDR),
+       HWS_DEFINER_ENTRY(GTP_EXT_HDR_PDU),
+       HWS_DEFINER_ENTRY(GTP_EXT_HDR_QFI),
+       HWS_DEFINER_ENTRY(GTPU_DW0),
+       HWS_DEFINER_ENTRY(GTPU_FIRST_EXT_DW0),
+       HWS_DEFINER_ENTRY(GTPU_DW2),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_0),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_1),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_2),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_3),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_4),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_5),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_6),
+       HWS_DEFINER_ENTRY(FLEX_PARSER_7),
+       HWS_DEFINER_ENTRY(VPORT_REG_C_0),
+       HWS_DEFINER_ENTRY(VXLAN_FLAGS),
+       HWS_DEFINER_ENTRY(VXLAN_VNI),
+       HWS_DEFINER_ENTRY(VXLAN_GPE_FLAGS),
+       HWS_DEFINER_ENTRY(VXLAN_GPE_RSVD0),
+       HWS_DEFINER_ENTRY(VXLAN_GPE_PROTO),
+       HWS_DEFINER_ENTRY(VXLAN_GPE_VNI),
+       HWS_DEFINER_ENTRY(VXLAN_GPE_RSVD1),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_LEN),
+       HWS_DEFINER_ENTRY(GENEVE_OAM),
+       HWS_DEFINER_ENTRY(GENEVE_PROTO),
+       HWS_DEFINER_ENTRY(GENEVE_VNI),
+       HWS_DEFINER_ENTRY(SOURCE_QP),
+       HWS_DEFINER_ENTRY(SOURCE_GVMI),
+       HWS_DEFINER_ENTRY(REG_0),
+       HWS_DEFINER_ENTRY(REG_1),
+       HWS_DEFINER_ENTRY(REG_2),
+       HWS_DEFINER_ENTRY(REG_3),
+       HWS_DEFINER_ENTRY(REG_4),
+       HWS_DEFINER_ENTRY(REG_5),
+       HWS_DEFINER_ENTRY(REG_6),
+       HWS_DEFINER_ENTRY(REG_7),
+       HWS_DEFINER_ENTRY(REG_8),
+       HWS_DEFINER_ENTRY(REG_9),
+       HWS_DEFINER_ENTRY(REG_10),
+       HWS_DEFINER_ENTRY(REG_11),
+       HWS_DEFINER_ENTRY(REG_A),
+       HWS_DEFINER_ENTRY(REG_B),
+       HWS_DEFINER_ENTRY(GRE_KEY_PRESENT),
+       HWS_DEFINER_ENTRY(GRE_C),
+       HWS_DEFINER_ENTRY(GRE_K),
+       HWS_DEFINER_ENTRY(GRE_S),
+       HWS_DEFINER_ENTRY(GRE_PROTOCOL),
+       HWS_DEFINER_ENTRY(GRE_OPT_KEY),
+       HWS_DEFINER_ENTRY(GRE_OPT_SEQ),
+       HWS_DEFINER_ENTRY(GRE_OPT_CHECKSUM),
+       HWS_DEFINER_ENTRY(INTEGRITY_O),
+       HWS_DEFINER_ENTRY(INTEGRITY_I),
+       HWS_DEFINER_ENTRY(ICMP_DW1),
+       HWS_DEFINER_ENTRY(ICMP_DW2),
+       HWS_DEFINER_ENTRY(ICMP_DW3),
+       HWS_DEFINER_ENTRY(IPSEC_SPI),
+       HWS_DEFINER_ENTRY(IPSEC_SEQUENCE_NUMBER),
+       HWS_DEFINER_ENTRY(IPSEC_SYNDROME),
+       HWS_DEFINER_ENTRY(MPLS0_O),
+       HWS_DEFINER_ENTRY(MPLS1_O),
+       HWS_DEFINER_ENTRY(MPLS2_O),
+       HWS_DEFINER_ENTRY(MPLS3_O),
+       HWS_DEFINER_ENTRY(MPLS4_O),
+       HWS_DEFINER_ENTRY(MPLS0_I),
+       HWS_DEFINER_ENTRY(MPLS1_I),
+       HWS_DEFINER_ENTRY(MPLS2_I),
+       HWS_DEFINER_ENTRY(MPLS3_I),
+       HWS_DEFINER_ENTRY(MPLS4_I),
+       HWS_DEFINER_ENTRY(FLEX_PARSER0_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER1_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER2_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER3_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER4_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER5_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER6_OK),
+       HWS_DEFINER_ENTRY(FLEX_PARSER7_OK),
+       HWS_DEFINER_ENTRY(OKS2_MPLS0_O),
+       HWS_DEFINER_ENTRY(OKS2_MPLS1_O),
+       HWS_DEFINER_ENTRY(OKS2_MPLS2_O),
+       HWS_DEFINER_ENTRY(OKS2_MPLS3_O),
+       HWS_DEFINER_ENTRY(OKS2_MPLS4_O),
+       HWS_DEFINER_ENTRY(OKS2_MPLS0_I),
+       HWS_DEFINER_ENTRY(OKS2_MPLS1_I),
+       HWS_DEFINER_ENTRY(OKS2_MPLS2_I),
+       HWS_DEFINER_ENTRY(OKS2_MPLS3_I),
+       HWS_DEFINER_ENTRY(OKS2_MPLS4_I),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_0),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_1),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_2),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_3),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_4),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_5),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_6),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_OK_7),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_0),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_1),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_2),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_3),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_4),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_5),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_6),
+       HWS_DEFINER_ENTRY(GENEVE_OPT_DW_7),
+       HWS_DEFINER_ENTRY(IB_L4_OPCODE),
+       HWS_DEFINER_ENTRY(IB_L4_QPN),
+       HWS_DEFINER_ENTRY(IB_L4_A),
+       HWS_DEFINER_ENTRY(RANDOM_NUM),
+       HWS_DEFINER_ENTRY(PTYPE_L2_O),
+       HWS_DEFINER_ENTRY(PTYPE_L2_I),
+       HWS_DEFINER_ENTRY(PTYPE_L3_O),
+       HWS_DEFINER_ENTRY(PTYPE_L3_I),
+       HWS_DEFINER_ENTRY(PTYPE_L4_O),
+       HWS_DEFINER_ENTRY(PTYPE_L4_I),
+       HWS_DEFINER_ENTRY(PTYPE_L4_EXT_O),
+       HWS_DEFINER_ENTRY(PTYPE_L4_EXT_I),
+       HWS_DEFINER_ENTRY(PTYPE_FRAG_O),
+       HWS_DEFINER_ENTRY(PTYPE_FRAG_I),
+       HWS_DEFINER_ENTRY(TNL_HDR_0),
+       HWS_DEFINER_ENTRY(TNL_HDR_1),
+       HWS_DEFINER_ENTRY(TNL_HDR_2),
+       HWS_DEFINER_ENTRY(TNL_HDR_3),
+       [MLX5HWS_DEFINER_FNAME_MAX] = "DEFINER_FNAME_UNKNOWN",
+};
+
+const char *mlx5hws_definer_fname_to_str(enum mlx5hws_definer_fname fname)
+{
+       if (fname > MLX5HWS_DEFINER_FNAME_MAX)
+               fname = MLX5HWS_DEFINER_FNAME_MAX;
+       return hws_definer_fname_to_str[fname];
+}
+
 static void
 hws_definer_ones_set(struct mlx5hws_definer_fc *fc,
                     void *match_param,
index 5c1a2086efbac1d4595c4191340005f5638d8a5e..62da553893314c596f6865c95236a0b2bde982ee 100644 (file)
@@ -831,4 +831,6 @@ mlx5hws_definer_conv_match_params_to_compressed_fc(struct mlx5hws_context *ctx,
                                                   u32 *match_param,
                                                   int *fc_sz);
 
+const char *mlx5hws_definer_fname_to_str(enum mlx5hws_definer_fname fname);
+
 #endif /* HWS_DEFINER_H_ */