]> git.dujemihanovic.xyz Git - linux.git/commitdiff
net: Disable NETIF_F_HW_TLS_RX when RXCSUM is disabled
authorTariq Toukan <tariqt@nvidia.com>
Sun, 17 Jan 2021 15:15:38 +0000 (17:15 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 19 Jan 2021 23:58:05 +0000 (15:58 -0800)
With NETIF_F_HW_TLS_RX packets are decrypted in HW. This cannot be
logically done when RXCSUM offload is off.

Fixes: 14136564c8ee ("net: Add TLS RX offload feature")
Signed-off-by: Tariq Toukan <tariqt@nvidia.com>
Reviewed-by: Boris Pismenny <borisp@nvidia.com>
Link: https://lore.kernel.org/r/20210117151538.9411-1-tariqt@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Documentation/networking/tls-offload.rst
net/core/dev.c

index 9af3334d9ad080c1aaef9dca67f709a2fa8ef343..5f0dea3d571e359a2655defdcf9b7383b9801ba8 100644 (file)
@@ -534,3 +534,6 @@ offload. Hence, TLS TX device feature flag requires TX csum offload being set.
 Disabling the latter implies clearing the former. Disabling TX checksum offload
 should not affect old connections, and drivers should make sure checksum
 calculation does not break for them.
+Similarly, device-offloaded TLS decryption implies doing RXCSUM. If the user
+does not want to enable RX csum offload, TLS RX device feature is disabled
+as well.
index c360bb5367e240c228efadacf0e2c2ba4250e13a..a979b86dbacda9dfe31dd8b269024f7f0f5a8ef1 100644 (file)
@@ -9672,6 +9672,11 @@ static netdev_features_t netdev_fix_features(struct net_device *dev,
                }
        }
 
+       if ((features & NETIF_F_HW_TLS_RX) && !(features & NETIF_F_RXCSUM)) {
+               netdev_dbg(dev, "Dropping TLS RX HW offload feature since no RXCSUM feature.\n");
+               features &= ~NETIF_F_HW_TLS_RX;
+       }
+
        return features;
 }