net/mlx5e: IPsec: Fix crypto offload for non TCP/UDP encapsulated traffic
authorRaed Salem <raeds@nvidia.com>
Thu, 2 Dec 2021 15:43:50 +0000 (17:43 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 8 Mar 2022 18:12:40 +0000 (19:12 +0100)
commit82a82ad92746e8672c6212fc0f94e02cae1885d2
tree8499108da5ed62e6c91b02f4f6b7c579ba99c920
parent748438b4e62c79b0e6fe14cde29f5795288a80e2
net/mlx5e: IPsec: Fix crypto offload for non TCP/UDP encapsulated traffic

[ Upstream commit 5352859b3bfa0ca188b2f1d2c1436fddc781e3b6 ]

IPsec crypto offload always set the ethernet segment checksum flags with
the inner L4 header checksum flag enabled for encapsulated IPsec offloaded
packet regardless of the encapsulated L4 header type, and even if it
doesn't exists in the first place, this breaks non TCP/UDP traffic as
such.

Set the inner L4 checksum flag only when the encapsulated L4 header
protocol is TCP/UDP using software parser swp_inner_l4_offset field as
indication.

Fixes: 5cfb540ef27b ("net/mlx5e: Set IPsec WAs only in IP's non checksum partial case.")
Signed-off-by: Raed Salem <raeds@nvidia.com>
Reviewed-by: Maor Dickman <maord@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h