]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
net/mlx5e: Fix IPsec tunnel mode offload feature check
authorRahul Rameshbabu <rrameshbabu@nvidia.com>
Wed, 22 May 2024 19:26:56 +0000 (22:26 +0300)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sun, 16 Jun 2024 11:39:49 +0000 (13:39 +0200)
[ Upstream commit 9a52f6d44f4521773b4699b4ed34b8e21d5a175c ]

Remove faulty check disabling checksum offload and GSO for offload of
simple IPsec tunnel L4 traffic. Comment previously describing the deleted
code incorrectly claimed the check prevented double tunnel (or three layers
of ip headers).

Fixes: f1267798c980 ("net/mlx5: Fix checksum issue of VXLAN and IPsec crypto offload")
Signed-off-by: Rahul Rameshbabu <rrameshbabu@nvidia.com>
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Simon Horman <horms@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/net/ethernet/mellanox/mlx5/core/en_accel/ipsec_rxtx.h

index 428881e0adcbeae1d5d70a84c27427986958972e..6621f6cd431518f6e5f5830c6ae8aa8eff589726 100644 (file)
@@ -105,18 +105,11 @@ mlx5e_ipsec_feature_check(struct sk_buff *skb, netdev_features_t features)
                if (!x || !x->xso.offload_handle)
                        goto out_disable;
 
-               if (xo->inner_ipproto) {
-                       /* Cannot support tunnel packet over IPsec tunnel mode
-                        * because we cannot offload three IP header csum
-                        */
-                       if (x->props.mode == XFRM_MODE_TUNNEL)
-                               goto out_disable;
-
-                       /* Only support UDP or TCP L4 checksum */
-                       if (xo->inner_ipproto != IPPROTO_UDP &&
-                           xo->inner_ipproto != IPPROTO_TCP)
-                               goto out_disable;
-               }
+               /* Only support UDP or TCP L4 checksum */
+               if (xo->inner_ipproto &&
+                   xo->inner_ipproto != IPPROTO_UDP &&
+                   xo->inner_ipproto != IPPROTO_TCP)
+                       goto out_disable;
 
                return features;