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