[dpdk-dev] [PATCH] net/mlx5: fix ipv6 type icmp6 header rewrite actions

Shiri Kuzin shirik at mellanox.com
Tue Feb 18 12:52:54 CET 2020

ICMPv6 header contains the checksum field, that includes the IP
addresses from IP header.

The ConnectX-5 hardware does not support ICMPv6 checksum calculation
and in case of IP header modification the checksum will contain
the wrong value.

The patch rejects the header modification actions related to IP
addresses if ICMPv6 protocol is detected in pattern.
This issue was also partly fixed in commit [1] which rejects
flows with the pattern "ipv6 proto is 58".

[1] commit b1632bd0c1e3 ("net/mlx5: fix ICMPv6 header rewrite actions")

Fixes: 4bb14c83df95 ("net/mlx5: support modify header using Direct Verbs")
Cc: stable at dpdk.org

Signed-off-by: Shiri Kuzin <shirik at mellanox.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo at mellanox.com>
Acked-by: Matan Azrad <matan at mellanox.com>
 drivers/net/mlx5/mlx5_flow_dv.c | 1 +
 1 file changed, 1 insertion(+)

diff --git a/drivers/net/mlx5/mlx5_flow_dv.c b/drivers/net/mlx5/mlx5_flow_dv.c
index a9bb0b4..e5862bd 100644
--- a/drivers/net/mlx5/mlx5_flow_dv.c
+++ b/drivers/net/mlx5/mlx5_flow_dv.c
@@ -4621,6 +4621,7 @@ struct field_modify_info modify_tcp[] = {
 			if (ret < 0)
 				return ret;
+			item_ipv6_proto = IPPROTO_ICMPV6;
 			last_item = MLX5_FLOW_LAYER_ICMP6;

More information about the dev mailing list