1 /* SPDX-License-Identifier: GPL-2.0 OR Linux-OpenIB */
2 /* Copyright (c) 2024, NVIDIA CORPORATION & AFFILIATES. All rights reserved. */
3 
4 #ifndef	_DR_STE_V2_
5 #define	_DR_STE_V2_
6 
7 enum {
8 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_0		= 0x00,
9 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1		= 0x01,
10 	DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_2		= 0x02,
11 	DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_0		= 0x08,
12 	DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_1		= 0x09,
13 	DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0		= 0x0e,
14 	DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0		= 0x18,
15 	DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_1		= 0x19,
16 	DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_0		= 0x40,
17 	DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_1		= 0x41,
18 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_0	= 0x44,
19 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_1	= 0x45,
20 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_2	= 0x46,
21 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_3	= 0x47,
22 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_0	= 0x4c,
23 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_1	= 0x4d,
24 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_2	= 0x4e,
25 	DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_3	= 0x4f,
26 	DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_0		= 0x5e,
27 	DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_1		= 0x5f,
28 	DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_0		= 0x6f,
29 	DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_1		= 0x70,
30 	DR_STE_V2_ACTION_MDFY_FLD_METADATA_2_CQE	= 0x7b,
31 	DR_STE_V2_ACTION_MDFY_FLD_GNRL_PURPOSE		= 0x7c,
32 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_0		= 0x90,
33 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_1		= 0x91,
34 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_0		= 0x92,
35 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_1		= 0x93,
36 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_0		= 0x94,
37 	DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_1		= 0x95,
38 };
39 
40 static const struct mlx5dr_ste_action_modify_field dr_ste_v2_action_modify_field_arr[] = {
41 	[MLX5_ACTION_IN_FIELD_OUT_SMAC_47_16] = {
42 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_0, .start = 0, .end = 31,
43 	},
44 	[MLX5_ACTION_IN_FIELD_OUT_SMAC_15_0] = {
45 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_SRC_L2_OUT_1, .start = 16, .end = 31,
46 	},
47 	[MLX5_ACTION_IN_FIELD_OUT_ETHERTYPE] = {
48 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 0, .end = 15,
49 	},
50 	[MLX5_ACTION_IN_FIELD_OUT_DMAC_47_16] = {
51 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_0, .start = 0, .end = 31,
52 	},
53 	[MLX5_ACTION_IN_FIELD_OUT_DMAC_15_0] = {
54 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_1, .start = 16, .end = 31,
55 	},
56 	[MLX5_ACTION_IN_FIELD_OUT_IP_DSCP] = {
57 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 18, .end = 23,
58 	},
59 	[MLX5_ACTION_IN_FIELD_OUT_TCP_FLAGS] = {
60 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_1, .start = 16, .end = 24,
61 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
62 	},
63 	[MLX5_ACTION_IN_FIELD_OUT_TCP_SPORT] = {
64 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,
65 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
66 	},
67 	[MLX5_ACTION_IN_FIELD_OUT_TCP_DPORT] = {
68 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,
69 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_TCP,
70 	},
71 	[MLX5_ACTION_IN_FIELD_OUT_IP_TTL] = {
72 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,
73 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
74 	},
75 	[MLX5_ACTION_IN_FIELD_OUT_IPV6_HOPLIMIT] = {
76 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L3_OUT_0, .start = 8, .end = 15,
77 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
78 	},
79 	[MLX5_ACTION_IN_FIELD_OUT_UDP_SPORT] = {
80 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 16, .end = 31,
81 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,
82 	},
83 	[MLX5_ACTION_IN_FIELD_OUT_UDP_DPORT] = {
84 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L4_OUT_0, .start = 0, .end = 15,
85 		.l4_type = DR_STE_ACTION_MDFY_TYPE_L4_UDP,
86 	},
87 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_127_96] = {
88 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_0, .start = 0, .end = 31,
89 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
90 	},
91 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_95_64] = {
92 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_1, .start = 0, .end = 31,
93 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
94 	},
95 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_63_32] = {
96 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_2, .start = 0, .end = 31,
97 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
98 	},
99 	[MLX5_ACTION_IN_FIELD_OUT_SIPV6_31_0] = {
100 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_SRC_OUT_3, .start = 0, .end = 31,
101 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
102 	},
103 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_127_96] = {
104 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_0, .start = 0, .end = 31,
105 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
106 	},
107 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_95_64] = {
108 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_1, .start = 0, .end = 31,
109 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
110 	},
111 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_63_32] = {
112 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_2, .start = 0, .end = 31,
113 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
114 	},
115 	[MLX5_ACTION_IN_FIELD_OUT_DIPV6_31_0] = {
116 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV6_DST_OUT_3, .start = 0, .end = 31,
117 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV6,
118 	},
119 	[MLX5_ACTION_IN_FIELD_OUT_SIPV4] = {
120 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_0, .start = 0, .end = 31,
121 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
122 	},
123 	[MLX5_ACTION_IN_FIELD_OUT_DIPV4] = {
124 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_IPV4_OUT_1, .start = 0, .end = 31,
125 		.l3_type = DR_STE_ACTION_MDFY_TYPE_L3_IPV4,
126 	},
127 	[MLX5_ACTION_IN_FIELD_METADATA_REG_A] = {
128 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_GNRL_PURPOSE, .start = 0, .end = 31,
129 	},
130 	[MLX5_ACTION_IN_FIELD_METADATA_REG_B] = {
131 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_METADATA_2_CQE, .start = 0, .end = 31,
132 	},
133 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_0] = {
134 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_0, .start = 0, .end = 31,
135 	},
136 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_1] = {
137 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_0_1, .start = 0, .end = 31,
138 	},
139 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_2] = {
140 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_0, .start = 0, .end = 31,
141 	},
142 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_3] = {
143 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_1_1, .start = 0, .end = 31,
144 	},
145 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_4] = {
146 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_0, .start = 0, .end = 31,
147 	},
148 	[MLX5_ACTION_IN_FIELD_METADATA_REG_C_5] = {
149 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_REGISTER_2_1, .start = 0, .end = 31,
150 	},
151 	[MLX5_ACTION_IN_FIELD_OUT_TCP_SEQ_NUM] = {
152 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_0, .start = 0, .end = 31,
153 	},
154 	[MLX5_ACTION_IN_FIELD_OUT_TCP_ACK_NUM] = {
155 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_TCP_MISC_1, .start = 0, .end = 31,
156 	},
157 	[MLX5_ACTION_IN_FIELD_OUT_FIRST_VID] = {
158 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_L2_OUT_2, .start = 0, .end = 15,
159 	},
160 	[MLX5_ACTION_IN_FIELD_OUT_EMD_31_0] = {
161 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_1, .start = 0, .end = 31,
162 	},
163 	[MLX5_ACTION_IN_FIELD_OUT_EMD_47_32] = {
164 		.hw_field = DR_STE_V2_ACTION_MDFY_FLD_CFG_HDR_0_0, .start = 0, .end = 15,
165 	},
166 };
167 
168 #endif  /* _DR_STE_V2_ */
169