diff options
Diffstat (limited to 'net/core')
-rw-r--r-- | net/core/dev.c | 12 | ||||
-rw-r--r-- | net/core/ethtool.c | 2 |
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 | ||