]> git.droids-corp.org - dpdk.git/commit
net/mlx5: fix matcher priority with ICMP or ICMPv6
authorBing Zhao <bingz@nvidia.com>
Mon, 28 Feb 2022 11:41:49 +0000 (13:41 +0200)
committerRaslan Darawsheh <rasland@nvidia.com>
Wed, 2 Mar 2022 16:36:38 +0000 (17:36 +0100)
commitdfb8c448daaf29a10d6249fc045bd2eef9655684
treeb985e7767246fc484844c7a639d488f5d2f26811
parentcfe337e7157e7b8f9e3d136f5a1882d2af8a1dc0
net/mlx5: fix matcher priority with ICMP or ICMPv6

On TCP/IP-based layered network, ICMP is considered and implemented
as part of layer 3 IP protocol. Actually, it is a user of the IP
protocol and must be encapsulated within IP packets. There is no
layer 4 protocol over ICMP.

The rule with layer 4 should be matched prior to the rule only with
layer 3 pattern when:
  1. Both rules are created in the same table
  2. Both rules could be hit
  3. The rules has the same priority

The steering result of the packet is indeterministic if there are
rules with patterns IP and IP+ICMP in the same table with the same
priority. Like TCP / UDP, a packet should hit the rule with a longer
matching criterion.

By treating the priority of ICMP/ICMPv6 as a layer 4 priority in the
PMD internally, the IP+ICMP will be hit in prior to IP only.

Fixes: d53aa89aea91 ("net/mlx5: support matching on ICMP/ICMP6")
Cc: stable@dpdk.org
Signed-off-by: Bing Zhao <bingz@nvidia.com>
Acked-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>
drivers/net/mlx5/mlx5_flow_dv.c