Hi, > -----Original Message----- > From: Shiri Kuzin <shi...@mellanox.com> > Sent: Wednesday, January 22, 2020 4:38 PM > To: dev@dpdk.org > Cc: Matan Azrad <ma...@mellanox.com>; Raslan Darawsheh > <rasl...@mellanox.com>; Ori Kam <or...@mellanox.com>; Slava Ovsiienko > <viachesl...@mellanox.com>; Dekel Peled <dek...@mellanox.com>; > sta...@dpdk.org > Subject: [PATCH] net/mlx5: fix icmpv6 header rewrite actions > > the ConnectX-5 HW cannot calculate the checksum for ICMPv6, therefore > flows with pattern 'ipv6 proto is 58' with actions that change the header > should be rejected. the actions that change the header in this type of flow > are 'set_ipv6_src' and 'set_ipv6_dst'. > > Fixes: 4bb14c83df95 ("net/mlx5: support modify header using Direct Verbs") > Cc: dek...@mellanox.com > Cc: sta...@dpdk.org > > Signed-off-by: Shiri Kuzin <shi...@mellanox.com> > Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com> > > --- > drivers/net/mlx5/mlx5_flow_dv.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/net/mlx5/mlx5_flow_dv.c > b/drivers/net/mlx5/mlx5_flow_dv.c index 26dbaaf329..2475ff336e 100644 > --- a/drivers/net/mlx5/mlx5_flow_dv.c > +++ b/drivers/net/mlx5/mlx5_flow_dv.c > @@ -4447,6 +4447,7 @@ flow_dv_validate(struct rte_eth_dev *dev, const > struct rte_flow_attr *attr, > uint8_t next_protocol = 0xff; > uint16_t ether_type = 0; > int actions_n = 0; > + uint8_t item_ipv6_proto = 0; > const struct rte_flow_item *gre_item = NULL; > struct rte_flow_item_tcp nic_tcp_mask = { > .hdr = { > @@ -4554,6 +4555,9 @@ flow_dv_validate(struct rte_eth_dev *dev, const > struct rte_flow_attr *attr, > if (items->mask != NULL && > ((const struct rte_flow_item_ipv6 *) > items->mask)->hdr.proto) { > + item_ipv6_proto = > + ((const struct rte_flow_item_ipv6 *) > + items->spec)->hdr.proto; > next_protocol = > ((const struct rte_flow_item_ipv6 *) > items->spec)->hdr.proto; > @@ -4926,6 +4930,12 @@ flow_dv_validate(struct rte_eth_dev *dev, const > struct rte_flow_attr *attr, > error); > if (ret < 0) > return ret; > + if (item_ipv6_proto == IPPROTO_ICMPV6) > + return rte_flow_error_set(error, ENOTSUP, > + RTE_FLOW_ERROR_TYPE_ACTION, > + actions, > + "Can't change header " > + "with ICMPv6 proto"); > /* Count all modify-header actions as one action. */ > if (!(action_flags & > MLX5_FLOW_MODIFY_HDR_ACTIONS)) > ++actions_n; > -- > 2.18.1
Patch applied to next-net-mlx, Kindest regards, Raslan Darawsheh