net: Prevent HW-GRO and LRO features operate together
authorBen Ben-ishay <benishay@nvidia.com>
Wed, 16 Dec 2020 10:32:24 +0000 (12:32 +0200)
committerSaeed Mahameed <saeedm@nvidia.com>
Wed, 27 Oct 2021 02:30:38 +0000 (19:30 -0700)
LRO and HW-GRO are mutually exclusive, this commit adds this restriction
in netdev_fix_feature. HW-GRO is preferred, that means in case both
HW-GRO and LRO features are requested, LRO is cleared.

Signed-off-by: Ben Ben-ishay <benishay@nvidia.com>
Reviewed-by: Tariq Toukan <tariqt@nvidia.com>
Signed-off-by: Saeed Mahameed <saeedm@nvidia.com>
net/core/dev.c

index 4e3d19a..e875456 100644 (file)
@@ -9922,6 +9922,11 @@ static netdev_features_t netdev_fix_features(struct net_device *dev,
                }
        }
 
+       if ((features & NETIF_F_GRO_HW) && (features & NETIF_F_LRO)) {
+               netdev_dbg(dev, "Dropping LRO feature since HW-GRO is requested.\n");
+               features &= ~NETIF_F_LRO;
+       }
+
        if (features & NETIF_F_HW_TLS_TX) {
                bool ip_csum = (features & (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM)) ==
                        (NETIF_F_IP_CSUM | NETIF_F_IPV6_CSUM);