Add modify IPv4 protocol implementation for mlx5 PMD. Signed-off-by: Viacheslav Ovsiienko <viachesl...@nvidia.com> Acked-by: Dariusz Sosnowski <dsosnow...@nvidia.com> --- doc/guides/rel_notes/release_24_03.rst | 1 + drivers/common/mlx5/mlx5_prm.h | 1 + drivers/net/mlx5/mlx5_flow_dv.c | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-)
diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index 99981ae2ea..c9a4809254 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -108,6 +108,7 @@ New Features * Added HW steering support for modify field ``RTE_FLOW_FIELD_GENEVE_OPT_TYPE`` flow action. * Added HW steering support for modify field ``RTE_FLOW_FIELD_GENEVE_OPT_CLASS`` flow action. * Added HW steering support for modify field ``RTE_FLOW_FIELD_GENEVE_OPT_DATA`` flow action. + * Added HW steering support for modify field ``RTE_FLOW_FIELD_IPV4_PROTO`` flow action. Removed Items diff --git a/drivers/common/mlx5/mlx5_prm.h b/drivers/common/mlx5/mlx5_prm.h index abff8e4dc3..3168ce76a5 100644 --- a/drivers/common/mlx5/mlx5_prm.h +++ b/drivers/common/mlx5/mlx5_prm.h @@ -839,6 +839,7 @@ enum mlx5_modification_field { MLX5_MODI_IN_MPLS_LABEL_2, MLX5_MODI_IN_MPLS_LABEL_3, MLX5_MODI_IN_MPLS_LABEL_4, + MLX5_MODI_OUT_IP_PROTOCOL = 0x4A, MLX5_MODI_OUT_IPV6_NEXT_HDR = 0x4A, MLX5_MODI_META_REG_C_8 = 0x8F, MLX5_MODI_META_REG_C_9 = 0x90, diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index a4ed7b1444..eb7cbf808c 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1384,6 +1384,7 @@ mlx5_flow_item_field_width(struct rte_eth_dev *dev, case RTE_FLOW_FIELD_IPV4_DSCP: return 6; case RTE_FLOW_FIELD_IPV4_TTL: + case RTE_FLOW_FIELD_IPV4_PROTO: return 8; case RTE_FLOW_FIELD_IPV4_SRC: case RTE_FLOW_FIELD_IPV4_DST: @@ -2194,10 +2195,11 @@ mlx5_flow_field_id_to_modify_info info[idx].offset = data->offset; } break; + case RTE_FLOW_FIELD_IPV4_PROTO: /* Fall-through. */ case RTE_FLOW_FIELD_IPV6_PROTO: MLX5_ASSERT(data->offset + width <= 8); off_be = 8 - (data->offset + width); - info[idx] = (struct field_modify_info){1, 0, MLX5_MODI_OUT_IPV6_NEXT_HDR}; + info[idx] = (struct field_modify_info){1, 0, MLX5_MODI_OUT_IP_PROTOCOL}; if (mask) mask[idx] = flow_modify_info_mask_8(width, off_be); else -- 2.18.1