Same as LRO, hardware GRO cannot be enabled with RX-FCS.
When both are requested, hardware GRO will be dropped.

Suggested-by: David Miller <da...@davemloft.net>
Signed-off-by: Gal Pressman <g...@mellanox.com>
---
 net/core/dev.c | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/net/core/dev.c b/net/core/dev.c
index 1bc3792..fd87c2c 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -7542,10 +7542,17 @@ static netdev_features_t netdev_fix_features(struct 
net_device *dev,
                }
        }
 
-       /* LRO feature cannot be combined with RX-FCS */
-       if ((features & NETIF_F_LRO) && (features & NETIF_F_RXFCS)) {
-               netdev_dbg(dev, "Dropping LRO feature since RX-FCS is 
requested.\n");
-               features &= ~NETIF_F_LRO;
+       /* LRO/HW-GRO features cannot be combined with RX-FCS */
+       if (features & NETIF_F_RXFCS) {
+               if (features & NETIF_F_LRO) {
+                       netdev_dbg(dev, "Dropping LRO feature since RX-FCS is 
requested.\n");
+                       features &= ~NETIF_F_LRO;
+               }
+
+               if (features & NETIF_F_GRO_HW) {
+                       netdev_dbg(dev, "Dropping HW-GRO feature since RX-FCS 
is requested.\n");
+                       features &= ~NETIF_F_GRO_HW;
+               }
        }
 
        return features;
-- 
2.7.4

Reply via email to