xref: /linux/drivers/net/ethernet/mellanox/mlx5/core/steering/dr_ste_v2.c (revision 1ac731c529cd4d6adbce134754b51ff7d822b145)
16862c787SYevgeny Kliteynik // SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB
26862c787SYevgeny Kliteynik /* Copyright (c) 2022, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */
36862c787SYevgeny Kliteynik 
46862c787SYevgeny Kliteynik #include "dr_ste_v1.h"
56862c787SYevgeny Kliteynik 
66862c787SYevgeny Kliteynik enum {
76862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_0		= 0x00,
86862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1		= 0x01,
96862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_2		= 0x02,
106862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_0		= 0x08,
116862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_1		= 0x09,
126862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0		= 0x0e,
136862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0		= 0x18,
146862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_1		= 0x19,
156862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_0		= 0x40,
166862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_1		= 0x41,
176862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_0	= 0x44,
186862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_1	= 0x45,
196862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_2	= 0x46,
206862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_3	= 0x47,
216862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_0	= 0x4c,
226862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_1	= 0x4d,
236862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_2	= 0x4e,
246862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_3	= 0x4f,
256862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_0		= 0x5e,
266862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_1		= 0x5f,
276862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_0		= 0x6f,
286862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_1		= 0x70,
296862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_METADATA_2_CQE	= 0x7b,
306862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_GNRL_PURPOSE		= 0x7c,
316862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_0		= 0x90,
326862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_1		= 0x91,
336862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_0		= 0x92,
346862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_1		= 0x93,
356862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_0		= 0x94,
366862c787SYevgeny Kliteynik 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_1		= 0x95,
376862c787SYevgeny Kliteynik };
386862c787SYevgeny Kliteynik 
396862c787SYevgeny Kliteynik static const struct mlx5dr_ste_action_modify_field dr_ste_v2_action_modify_field_arr[] = {
406862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16] = {
416862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_0, .start = 0, .end = 31,
426862c787SYevgeny Kliteynik 	},
436862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0] = {
446862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_1, .start = 16, .end = 31,
456862c787SYevgeny Kliteynik 	},
466862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE] = {
476862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 0, .end = 15,
486862c787SYevgeny Kliteynik 	},
496862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16] = {
506862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_0, .start = 0, .end = 31,
516862c787SYevgeny Kliteynik 	},
526862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0] = {
536862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 16, .end = 31,
546862c787SYevgeny Kliteynik 	},
556862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_IP_DSCP] = {
566862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 18, .end = 23,
576862c787SYevgeny Kliteynik 	},
586862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS] = {
596862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_1, .start = 16, .end = 24,
606862c787SYevgeny Kliteynik 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
616862c787SYevgeny Kliteynik 	},
626862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT] = {
636862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,
646862c787SYevgeny Kliteynik 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
656862c787SYevgeny Kliteynik 	},
666862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT] = {
676862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,
686862c787SYevgeny Kliteynik 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
696862c787SYevgeny Kliteynik 	},
706862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_IP_TTL] = {
716862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,
726862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
736862c787SYevgeny Kliteynik 	},
746862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT] = {
756862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,
766862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
776862c787SYevgeny Kliteynik 	},
786862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT] = {
796862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,
806862c787SYevgeny Kliteynik 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,
816862c787SYevgeny Kliteynik 	},
826862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT] = {
836862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,
846862c787SYevgeny Kliteynik 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,
856862c787SYevgeny Kliteynik 	},
866862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96] = {
876862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_0, .start = 0, .end = 31,
886862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
896862c787SYevgeny Kliteynik 	},
906862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64] = {
916862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_1, .start = 0, .end = 31,
926862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
936862c787SYevgeny Kliteynik 	},
946862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32] = {
956862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_2, .start = 0, .end = 31,
966862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
976862c787SYevgeny Kliteynik 	},
986862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0] = {
996862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_3, .start = 0, .end = 31,
1006862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
1016862c787SYevgeny Kliteynik 	},
1026862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96] = {
1036862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_0, .start = 0, .end = 31,
1046862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
1056862c787SYevgeny Kliteynik 	},
1066862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64] = {
1076862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_1, .start = 0, .end = 31,
1086862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
1096862c787SYevgeny Kliteynik 	},
1106862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32] = {
1116862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_2, .start = 0, .end = 31,
1126862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
1136862c787SYevgeny Kliteynik 	},
1146862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0] = {
1156862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_3, .start = 0, .end = 31,
1166862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
1176862c787SYevgeny Kliteynik 	},
1186862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_SIPV4] = {
1196862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_0, .start = 0, .end = 31,
1206862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
1216862c787SYevgeny Kliteynik 	},
1226862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_DIPV4] = {
1236862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_1, .start = 0, .end = 31,
1246862c787SYevgeny Kliteynik 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
1256862c787SYevgeny Kliteynik 	},
1266862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_A] = {
1276862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_GNRL_PURPOSE, .start = 0, .end = 31,
1286862c787SYevgeny Kliteynik 	},
1296862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_B] = {
1306862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_METADATA_2_CQE, .start = 0, .end = 31,
1316862c787SYevgeny Kliteynik 	},
1326862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_0] = {
1336862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_0, .start = 0, .end = 31,
1346862c787SYevgeny Kliteynik 	},
1356862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_1] = {
1366862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_1, .start = 0, .end = 31,
1376862c787SYevgeny Kliteynik 	},
1386862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_2] = {
1396862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_0, .start = 0, .end = 31,
1406862c787SYevgeny Kliteynik 	},
1416862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_3] = {
1426862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_1, .start = 0, .end = 31,
1436862c787SYevgeny Kliteynik 	},
1446862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_4] = {
1456862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_0, .start = 0, .end = 31,
1466862c787SYevgeny Kliteynik 	},
1476862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_5] = {
1486862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_1, .start = 0, .end = 31,
1496862c787SYevgeny Kliteynik 	},
1506862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM] = {
1516862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_0, .start = 0, .end = 31,
1526862c787SYevgeny Kliteynik 	},
1536862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM] = {
1546862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_1, .start = 0, .end = 31,
1556862c787SYevgeny Kliteynik 	},
1566862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_FIRST_VID] = {
1576862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_2, .start = 0, .end = 15,
1586862c787SYevgeny Kliteynik 	},
1596862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_EMD_31_0] = {
1606862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_1, .start = 0, .end = 31,
1616862c787SYevgeny Kliteynik 	},
1626862c787SYevgeny Kliteynik 	[MLX5_ACTION_IN_FIELD_OUT_EMD_47_32] = {
1636862c787SYevgeny Kliteynik 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_0, .start = 0, .end = 15,
1646862c787SYevgeny Kliteynik 	},
1656862c787SYevgeny Kliteynik };
1666862c787SYevgeny Kliteynik 
1676862c787SYevgeny Kliteynik static struct mlx5dr_ste_ctx ste_ctx_v2 = {
1686862c787SYevgeny Kliteynik 	/* Builders */
1696862c787SYevgeny Kliteynik 	.build_eth_l2_src_dst_init	= &dr_ste_v1_build_eth_l2_src_dst_init,
1706862c787SYevgeny Kliteynik 	.build_eth_l3_ipv6_src_init	= &dr_ste_v1_build_eth_l3_ipv6_src_init,
1716862c787SYevgeny Kliteynik 	.build_eth_l3_ipv6_dst_init	= &dr_ste_v1_build_eth_l3_ipv6_dst_init,
1726862c787SYevgeny Kliteynik 	.build_eth_l3_ipv4_5_tuple_init	= &dr_ste_v1_build_eth_l3_ipv4_5_tuple_init,
1736862c787SYevgeny Kliteynik 	.build_eth_l2_src_init		= &dr_ste_v1_build_eth_l2_src_init,
1746862c787SYevgeny Kliteynik 	.build_eth_l2_dst_init		= &dr_ste_v1_build_eth_l2_dst_init,
1756862c787SYevgeny Kliteynik 	.build_eth_l2_tnl_init		= &dr_ste_v1_build_eth_l2_tnl_init,
1766862c787SYevgeny Kliteynik 	.build_eth_l3_ipv4_misc_init	= &dr_ste_v1_build_eth_l3_ipv4_misc_init,
1776862c787SYevgeny Kliteynik 	.build_eth_ipv6_l3_l4_init	= &dr_ste_v1_build_eth_ipv6_l3_l4_init,
1786862c787SYevgeny Kliteynik 	.build_mpls_init		= &dr_ste_v1_build_mpls_init,
1796862c787SYevgeny Kliteynik 	.build_tnl_gre_init		= &dr_ste_v1_build_tnl_gre_init,
1806862c787SYevgeny Kliteynik 	.build_tnl_mpls_init		= &dr_ste_v1_build_tnl_mpls_init,
1816862c787SYevgeny Kliteynik 	.build_tnl_mpls_over_udp_init	= &dr_ste_v1_build_tnl_mpls_over_udp_init,
1826862c787SYevgeny Kliteynik 	.build_tnl_mpls_over_gre_init	= &dr_ste_v1_build_tnl_mpls_over_gre_init,
1836862c787SYevgeny Kliteynik 	.build_icmp_init		= &dr_ste_v1_build_icmp_init,
1846862c787SYevgeny Kliteynik 	.build_general_purpose_init	= &dr_ste_v1_build_general_purpose_init,
1856862c787SYevgeny Kliteynik 	.build_eth_l4_misc_init		= &dr_ste_v1_build_eth_l4_misc_init,
1866862c787SYevgeny Kliteynik 	.build_tnl_vxlan_gpe_init	= &dr_ste_v1_build_flex_parser_tnl_vxlan_gpe_init,
1876862c787SYevgeny Kliteynik 	.build_tnl_geneve_init		= &dr_ste_v1_build_flex_parser_tnl_geneve_init,
1886862c787SYevgeny Kliteynik 	.build_tnl_geneve_tlv_opt_init	= &dr_ste_v1_build_flex_parser_tnl_geneve_tlv_opt_init,
1896862c787SYevgeny Kliteynik 	.build_tnl_geneve_tlv_opt_exist_init =
1906862c787SYevgeny Kliteynik 				  &dr_ste_v1_build_flex_parser_tnl_geneve_tlv_opt_exist_init,
1916862c787SYevgeny Kliteynik 	.build_register_0_init		= &dr_ste_v1_build_register_0_init,
1926862c787SYevgeny Kliteynik 	.build_register_1_init		= &dr_ste_v1_build_register_1_init,
1936862c787SYevgeny Kliteynik 	.build_src_gvmi_qpn_init	= &dr_ste_v1_build_src_gvmi_qpn_init,
1946862c787SYevgeny Kliteynik 	.build_flex_parser_0_init	= &dr_ste_v1_build_flex_parser_0_init,
1956862c787SYevgeny Kliteynik 	.build_flex_parser_1_init	= &dr_ste_v1_build_flex_parser_1_init,
1966862c787SYevgeny Kliteynik 	.build_tnl_gtpu_init		= &dr_ste_v1_build_flex_parser_tnl_gtpu_init,
1976862c787SYevgeny Kliteynik 	.build_tnl_header_0_1_init	= &dr_ste_v1_build_tnl_header_0_1_init,
1986862c787SYevgeny Kliteynik 	.build_tnl_gtpu_flex_parser_0_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_0_init,
1996862c787SYevgeny Kliteynik 	.build_tnl_gtpu_flex_parser_1_init = &dr_ste_v1_build_tnl_gtpu_flex_parser_1_init,
2006862c787SYevgeny Kliteynik 
2016862c787SYevgeny Kliteynik 	/* Getters and Setters */
2026862c787SYevgeny Kliteynik 	.ste_init			= &dr_ste_v1_init,
2036862c787SYevgeny Kliteynik 	.set_next_lu_type		= &dr_ste_v1_set_next_lu_type,
2046862c787SYevgeny Kliteynik 	.get_next_lu_type		= &dr_ste_v1_get_next_lu_type,
2051207a772SYevgeny Kliteynik 	.is_miss_addr_set		= &dr_ste_v1_is_miss_addr_set,
2066862c787SYevgeny Kliteynik 	.set_miss_addr			= &dr_ste_v1_set_miss_addr,
2076862c787SYevgeny Kliteynik 	.get_miss_addr			= &dr_ste_v1_get_miss_addr,
2086862c787SYevgeny Kliteynik 	.set_hit_addr			= &dr_ste_v1_set_hit_addr,
2096862c787SYevgeny Kliteynik 	.set_byte_mask			= &dr_ste_v1_set_byte_mask,
2106862c787SYevgeny Kliteynik 	.get_byte_mask			= &dr_ste_v1_get_byte_mask,
2116862c787SYevgeny Kliteynik 
2126862c787SYevgeny Kliteynik 	/* Actions */
2136862c787SYevgeny Kliteynik 	.actions_caps			= DR_STE_CTX_ACTION_CAP_TX_POP |
2146862c787SYevgeny Kliteynik 					  DR_STE_CTX_ACTION_CAP_RX_PUSH |
2156862c787SYevgeny Kliteynik 					  DR_STE_CTX_ACTION_CAP_RX_ENCAP,
2166862c787SYevgeny Kliteynik 	.set_actions_rx			= &dr_ste_v1_set_actions_rx,
2176862c787SYevgeny Kliteynik 	.set_actions_tx			= &dr_ste_v1_set_actions_tx,
2186862c787SYevgeny Kliteynik 	.modify_field_arr_sz		= ARRAY_SIZE(dr_ste_v2_action_modify_field_arr),
2196862c787SYevgeny Kliteynik 	.modify_field_arr		= dr_ste_v2_action_modify_field_arr,
2206862c787SYevgeny Kliteynik 	.set_action_set			= &dr_ste_v1_set_action_set,
2216862c787SYevgeny Kliteynik 	.set_action_add			= &dr_ste_v1_set_action_add,
2226862c787SYevgeny Kliteynik 	.set_action_copy		= &dr_ste_v1_set_action_copy,
2236862c787SYevgeny Kliteynik 	.set_action_decap_l3_list	= &dr_ste_v1_set_action_decap_l3_list,
224*2533e726SYevgeny Kliteynik 	.alloc_modify_hdr_chunk		= &dr_ste_v1_alloc_modify_hdr_ptrn_arg,
225*2533e726SYevgeny Kliteynik 	.dealloc_modify_hdr_chunk	= &dr_ste_v1_free_modify_hdr_ptrn_arg,
2266862c787SYevgeny Kliteynik 
2276862c787SYevgeny Kliteynik 	/* Send */
2286862c787SYevgeny Kliteynik 	.prepare_for_postsend		= &dr_ste_v1_prepare_for_postsend,
2296862c787SYevgeny Kliteynik };
2306862c787SYevgeny Kliteynik 
mlx5dr_ste_get_ctx_v2(void)2316862c787SYevgeny Kliteynik struct mlx5dr_ste_ctx *mlx5dr_ste_get_ctx_v2(void)
2326862c787SYevgeny Kliteynik {
2336862c787SYevgeny Kliteynik 	return &ste_ctx_v2;
2346862c787SYevgeny Kliteynik }
235