Hi, > -----Original Message----- > From: Shiri Kuzin <[email protected]> > Sent: Wednesday, January 22, 2020 4:38 PM > To: [email protected] > Cc: Matan Azrad <[email protected]>; Raslan Darawsheh > <[email protected]>; Ori Kam <[email protected]>; Slava Ovsiienko > <[email protected]>; Dekel Peled <[email protected]>; > [email protected] > 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: [email protected] > Cc: [email protected] > > Signed-off-by: Shiri Kuzin <[email protected]> > Acked-by: Viacheslav Ovsiienko <[email protected]> > > --- > 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

