net/mlx5: fix chosen L3/L4 layer with tunnel
authorSuanming Mou <suanmingm@mellanox.com>
Thu, 21 Nov 2019 12:09:30 +0000 (14:09 +0200)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 26 Nov 2019 17:05:15 +0000 (18:05 +0100)
commit7c1852e48f75cebd0213698f4d7d4137a45d3a34
tree58dc96cd25a7489b7bdd892cd410f66bc16d24cd
parent7392ad06f5263e33f1583365ef0532ab435fce38
net/mlx5: fix chosen L3/L4 layer with tunnel

For tunnel mode, there may be two L3/L4 layer match pattern items, one
for inner and one for outer layers. The L3 TTL and L4 port header
modify actions should handle the outermost layer items.

Currently flow_dv_attr_init() doesn't distinguish between outer and
inner layers, since inner layer comes later than the outer layer, this
may cause inner layer values also set to the flow attributes and may
lead actions to use inner L3/L4 pattern items.

Adding a check in flow_dv_attr_init() to prevent inner layer to set the
flow attribute if the previous L3/L4 outer pattern exist.

Fixes: 4bb14c83df95 ("net/mlx5: support modify header using Direct Verbs")
Cc: stable@dpdk.org
Signed-off-by: Suanming Mou <suanmingm@mellanox.com>
Acked-by: Matan Azrad <matan@mellanox.com>
drivers/net/mlx5/mlx5_flow_dv.c