diff options
author | Maor Dickman <maord@nvidia.com> | 2022-01-06 14:10:18 +0200 |
---|---|---|
committer | Saeed Mahameed <saeedm@nvidia.com> | 2022-02-23 16:08:18 -0800 |
commit | c63741b426e11062631b013c3396f5452bbc0034 (patch) | |
tree | 0a773ad4b4015cc58014b473b6e3a86d64094b0f /drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c | |
parent | 7fac0529038021919ef56a9c3218d8012f187cbb (diff) | |
download | linux-stable-c63741b426e11062631b013c3396f5452bbc0034.tar.gz linux-stable-c63741b426e11062631b013c3396f5452bbc0034.tar.bz2 linux-stable-c63741b426e11062631b013c3396f5452bbc0034.zip |
net/mlx5e: Fix MPLSoUDP encap to use MPLS action information
Currently the MPLSoUDP encap builds the MPLS header using encap action
information (tunnel id, ttl and tos) instead of the MPLS action
information (label, ttl, tc and bos) which is wrong.
Fix by storing the MPLS action information during the flow action
parse and later using it to create the encap MPLS header.
Fixes: f828ca6a2fb6 ("net/mlx5e: Add support for hw encapsulation of MPLS over UDP")
Signed-off-by: Maor Dickman <maord@nvidia.com>
Reviewed-by: Roi Dayan <roid@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Diffstat (limited to 'drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c')
-rw-r--r-- | drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c index c614fc7fdc9c..2e615e0ba972 100644 --- a/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c +++ b/drivers/net/ethernet/mellanox/mlx5/core/en/tc/act/mirred.c @@ -177,6 +177,12 @@ parse_mirred_encap(struct mlx5e_tc_act_parse_state *parse_state, return -ENOMEM; parse_state->encap = false; + + if (parse_state->mpls_push) { + memcpy(&parse_attr->mpls_info[esw_attr->out_count], + &parse_state->mpls_info, sizeof(parse_state->mpls_info)); + parse_state->mpls_push = false; + } esw_attr->dests[esw_attr->out_count].flags |= MLX5_ESW_DEST_ENCAP; esw_attr->out_count++; /* attr->dests[].rep is resolved when we handle encap */ |