> -----Original Message----- > From: Raslan Darawsheh <rasl...@mellanox.com> > Sent: Tuesday, May 5, 2020 12:42 > To: Slava Ovsiienko <viachesl...@mellanox.com>; Matan Azrad > <ma...@mellanox.com> > Cc: dev@dpdk.org; Ori Kam <or...@mellanox.com>; sta...@dpdk.org > Subject: [PATCH] net/mlx5: fix matching for UDP tunnels with verbs > > When creating flow rule with zero specs it will cause matching all UDP > packets like following: > eth / ipv4 / udp / vxlan / end > Such rule will match all udp packets. > > This change the behavior to match the dv flow engine which will > automatically set the match on relative outer UDP port if the user didn't > specify any. > > Fixes: 84c406e74524 ("net/mlx5: add flow translate function") > Cc: sta...@dpdk.org > > Signed-off-by: Raslan Darawsheh <rasl...@mellanox.com> Acked-by: Viacheslav Ovsiienko <viachesl...@mellanox.com>
> --- > drivers/net/mlx5/mlx5_flow_verbs.c | 20 ++++++++++++++++++++ > 1 file changed, 20 insertions(+) > > diff --git a/drivers/net/mlx5/mlx5_flow_verbs.c > b/drivers/net/mlx5/mlx5_flow_verbs.c > index 7efd97f54..9094fb70b 100644 > --- a/drivers/net/mlx5/mlx5_flow_verbs.c > +++ b/drivers/net/mlx5/mlx5_flow_verbs.c > @@ -680,6 +680,26 @@ flow_verbs_translate_item_udp(struct mlx5_flow > *dev_flow, > udp.val.src_port &= udp.mask.src_port; > udp.val.dst_port &= udp.mask.dst_port; > } > + > + if ((item + 1) != NULL && !(udp.val.dst_port & udp.mask.dst_port)) { > + switch((item + 1)->type) { > + case RTE_FLOW_ITEM_TYPE_VXLAN: > + udp.val.dst_port = > htons(MLX5_UDP_PORT_VXLAN); > + udp.mask.dst_port = 0xffff; > + break; > + case RTE_FLOW_ITEM_TYPE_VXLAN_GPE: > + udp.val.dst_port = > htons(MLX5_UDP_PORT_VXLAN_GPE); > + udp.mask.dst_port = 0xffff; > + break; > + case RTE_FLOW_ITEM_TYPE_MPLS: > + udp.val.dst_port = > htons(MLX5_UDP_PORT_MPLS); > + udp.mask.dst_port = 0xffff; > + break; > + default: > + break; > + } > + } > + > flow_verbs_spec_add(&dev_flow->verbs, &udp, size); } > > -- > 2.26.0