The MAC addresses fields are 48 bit wide and are processed by mlx5 PMD as two words. There the bug was introduced for the offset, causing wrong action translation if action field offset was not zero. Fixes: 40c8fb1fd3b3 ("net/mlx5: update modify field action") Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 3da122cbb9..4834c752d9 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1503,7 +1503,7 @@ mlx5_flow_field_id_to_modify_info if (data->offset < 16) info[idx++] = (struct field_modify_info){2, 0, MLX5_MODI_OUT_DMAC_15_0}; - info[idx] = (struct field_modify_info){4, 0, + info[idx] = (struct field_modify_info){4, off, MLX5_MODI_OUT_DMAC_47_16}; } break; @@ -1533,7 +1533,7 @@ mlx5_flow_field_id_to_modify_info if (data->offset < 16) info[idx++] = (struct field_modify_info){2, 0, MLX5_MODI_OUT_SMAC_15_0}; - info[idx] = (struct field_modify_info){4, 0, + info[idx] = (struct field_modify_info){4, off, MLX5_MODI_OUT_SMAC_47_16}; } break; -- 2.18.1
The MAC addresses fields are 48 bit wide and are processed by mlx5 PMD as two words. There the bug was introduced for the offset, causing malfunction of MODIFY_FIELD action with MAC address fields as source or destination and with non zero field offset. Fixes: 40c8fb1fd3b3 ("net/mlx5: update modify field action") Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> --- drivers/net/mlx5/mlx5_flow_dv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c index 3da122cbb9..4834c752d9 100644 --- a/drivers/net/mlx5/mlx5_flow_dv.c +++ b/drivers/net/mlx5/mlx5_flow_dv.c @@ -1503,7 +1503,7 @@ mlx5_flow_field_id_to_modify_info if (data->offset < 16) info[idx++] = (struct field_modify_info){2, 0, MLX5_MODI_OUT_DMAC_15_0}; - info[idx] = (struct field_modify_info){4, 0, + info[idx] = (struct field_modify_info){4, off, MLX5_MODI_OUT_DMAC_47_16}; } break; @@ -1533,7 +1533,7 @@ mlx5_flow_field_id_to_modify_info if (data->offset < 16) info[idx++] = (struct field_modify_info){2, 0, MLX5_MODI_OUT_SMAC_15_0}; - info[idx] = (struct field_modify_info){4, 0, + info[idx] = (struct field_modify_info){4, off, MLX5_MODI_OUT_SMAC_47_16}; } break; -- 2.18.1
Hi, > -----Original Message----- > From: Slava Ovsiienko <viacheslavo@nvidia.com> > Sent: Friday, November 26, 2021 3:10 PM > To: dev@dpdk.org > Cc: ferruh.yigit@intel.com; NBU-Contact-Thomas Monjalon (EXTERNAL) > <thomas@monjalon.net>; Matan Azrad <matan@nvidia.com>; Raslan > Darawsheh <rasland@nvidia.com> > Subject: [PATCH v2] net/mlx5: fix modify field MAC address offset > > The MAC addresses fields are 48 bit wide and are processed > by mlx5 PMD as two words. There the bug was introduced for > the offset, causing malfunction of MODIFY_FIELD action > with MAC address fields as source or destination and > with non zero field offset. > > Fixes: 40c8fb1fd3b3 ("net/mlx5: update modify field action") > added Cc: stable@dpdk.org > Signed-off-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com> Patch applied to next-net-mlx, Kindest regards, Raslan Darawsheh