aboutsummaryrefslogtreecommitdiffstats
path: root/net/core
diff options
context:
space:
mode:
Diffstat (limited to 'net/core')
-rw-r--r--net/core/dev.c12
-rw-r--r--net/core/ethtool.c2
2 files changed, 13 insertions, 1 deletions
diff --git a/net/core/dev.c b/net/core/dev.c
index 02f56376fe99..5d0b4f6f1a72 100644
--- a/net/core/dev.c
+++ b/net/core/dev.c
@@ -5425,6 +5425,14 @@ int register_netdevice(struct net_device *dev)
5425 dev->features &= ~NETIF_F_GSO; 5425 dev->features &= ~NETIF_F_GSO;
5426 } 5426 }
5427 5427
5428 /* Turn on no cache copy if HW is doing checksum */
5429 dev->hw_features |= NETIF_F_NOCACHE_COPY;
5430 if ((dev->features & NETIF_F_ALL_CSUM) &&
5431 !(dev->features & NETIF_F_NO_CSUM)) {
5432 dev->wanted_features |= NETIF_F_NOCACHE_COPY;
5433 dev->features |= NETIF_F_NOCACHE_COPY;
5434 }
5435
5428 /* Enable GRO and NETIF_F_HIGHDMA for vlans by default, 5436 /* Enable GRO and NETIF_F_HIGHDMA for vlans by default,
5429 * vlan_dev_init() will do the dev->features check, so these features 5437 * vlan_dev_init() will do the dev->features check, so these features
5430 * are enabled only if supported by underlying device. 5438 * are enabled only if supported by underlying device.
@@ -6182,6 +6190,10 @@ u32 netdev_increment_features(u32 all, u32 one, u32 mask)
6182 } 6190 }
6183 } 6191 }
6184 6192
6193 /* If device can't no cache copy, don't do for all */
6194 if (!(one & NETIF_F_NOCACHE_COPY))
6195 all &= ~NETIF_F_NOCACHE_COPY;
6196
6185 one |= NETIF_F_ALL_CSUM; 6197 one |= NETIF_F_ALL_CSUM;
6186 6198
6187 one |= all & NETIF_F_ONE_FOR_ALL; 6199 one |= all & NETIF_F_ONE_FOR_ALL;
diff --git a/net/core/ethtool.c b/net/core/ethtool.c
index 439e4b0e1312..719670ae199c 100644
--- a/net/core/ethtool.c
+++ b/net/core/ethtool.c
@@ -359,7 +359,7 @@ static const char netdev_features_strings[ETHTOOL_DEV_FEATURE_WORDS * 32][ETH_GS
359 /* NETIF_F_NTUPLE */ "rx-ntuple-filter", 359 /* NETIF_F_NTUPLE */ "rx-ntuple-filter",
360 /* NETIF_F_RXHASH */ "rx-hashing", 360 /* NETIF_F_RXHASH */ "rx-hashing",
361 /* NETIF_F_RXCSUM */ "rx-checksum", 361 /* NETIF_F_RXCSUM */ "rx-checksum",
362 "", 362 /* NETIF_F_NOCACHE_COPY */ "tx-nocache-copy"
363 "", 363 "",
364}; 364};
365 365