diff options
| -rw-r--r-- | drivers/net/sfc/nic.c | 7 | ||||
| -rw-r--r-- | drivers/net/vmxnet3/vmxnet3_ethtool.c | 3 | ||||
| -rw-r--r-- | net/core/dev.c | 22 | ||||
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_app.c | 2 | ||||
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_conn.c | 4 | ||||
| -rw-r--r-- | net/netfilter/ipvs/ip_vs_ctl.c | 6 |
6 files changed, 24 insertions, 20 deletions
diff --git a/drivers/net/sfc/nic.c b/drivers/net/sfc/nic.c index 10f1cb79c147..9b29a8d7c449 100644 --- a/drivers/net/sfc/nic.c +++ b/drivers/net/sfc/nic.c | |||
| @@ -1937,6 +1937,13 @@ void efx_nic_get_regs(struct efx_nic *efx, void *buf) | |||
| 1937 | 1937 | ||
| 1938 | size = min_t(size_t, table->step, 16); | 1938 | size = min_t(size_t, table->step, 16); |
| 1939 | 1939 | ||
| 1940 | if (table->offset >= efx->type->mem_map_size) { | ||
| 1941 | /* No longer mapped; return dummy data */ | ||
| 1942 | memcpy(buf, "\xde\xc0\xad\xde", 4); | ||
| 1943 | buf += table->rows * size; | ||
| 1944 | continue; | ||
| 1945 | } | ||
| 1946 | |||
| 1940 | for (i = 0; i < table->rows; i++) { | 1947 | for (i = 0; i < table->rows; i++) { |
| 1941 | switch (table->step) { | 1948 | switch (table->step) { |
| 1942 | case 4: /* 32-bit register or SRAM */ | 1949 | case 4: /* 32-bit register or SRAM */ |
diff --git a/drivers/net/vmxnet3/vmxnet3_ethtool.c b/drivers/net/vmxnet3/vmxnet3_ethtool.c index 51f2ef142a5b..976467253d20 100644 --- a/drivers/net/vmxnet3/vmxnet3_ethtool.c +++ b/drivers/net/vmxnet3/vmxnet3_ethtool.c | |||
| @@ -311,6 +311,9 @@ vmxnet3_set_flags(struct net_device *netdev, u32 data) | |||
| 311 | /* toggle the LRO feature*/ | 311 | /* toggle the LRO feature*/ |
| 312 | netdev->features ^= NETIF_F_LRO; | 312 | netdev->features ^= NETIF_F_LRO; |
| 313 | 313 | ||
| 314 | /* Update private LRO flag */ | ||
| 315 | adapter->lro = lro_requested; | ||
| 316 | |||
| 314 | /* update harware LRO capability accordingly */ | 317 | /* update harware LRO capability accordingly */ |
| 315 | if (lro_requested) | 318 | if (lro_requested) |
| 316 | adapter->shared->devRead.misc.uptFeatures |= | 319 | adapter->shared->devRead.misc.uptFeatures |= |
diff --git a/net/core/dev.c b/net/core/dev.c index 92009440d28b..b624fe4d9bd7 100644 --- a/net/core/dev.c +++ b/net/core/dev.c | |||
| @@ -5186,27 +5186,27 @@ u32 netdev_fix_features(struct net_device *dev, u32 features) | |||
| 5186 | /* Fix illegal checksum combinations */ | 5186 | /* Fix illegal checksum combinations */ |
| 5187 | if ((features & NETIF_F_HW_CSUM) && | 5187 | if ((features & NETIF_F_HW_CSUM) && |
| 5188 | (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { | 5188 | (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { |
| 5189 | netdev_info(dev, "mixed HW and IP checksum settings.\n"); | 5189 | netdev_warn(dev, "mixed HW and IP checksum settings.\n"); |
| 5190 | features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); | 5190 | features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM); |
| 5191 | } | 5191 | } |
| 5192 | 5192 | ||
| 5193 | if ((features & NETIF_F_NO_CSUM) && | 5193 | if ((features & NETIF_F_NO_CSUM) && |
| 5194 | (features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { | 5194 | (features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { |
| 5195 | netdev_info(dev, "mixed no checksumming and other settings.\n"); | 5195 | netdev_warn(dev, "mixed no checksumming and other settings.\n"); |
| 5196 | features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM); | 5196 | features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM); |
| 5197 | } | 5197 | } |
| 5198 | 5198 | ||
| 5199 | /* Fix illegal SG+CSUM combinations. */ | 5199 | /* Fix illegal SG+CSUM combinations. */ |
| 5200 | if ((features & NETIF_F_SG) && | 5200 | if ((features & NETIF_F_SG) && |
| 5201 | !(features & NETIF_F_ALL_CSUM)) { | 5201 | !(features & NETIF_F_ALL_CSUM)) { |
| 5202 | netdev_info(dev, | 5202 | netdev_dbg(dev, |
| 5203 | "Dropping NETIF_F_SG since no checksum feature.\n"); | 5203 | "Dropping NETIF_F_SG since no checksum feature.\n"); |
| 5204 | features &= ~NETIF_F_SG; | 5204 | features &= ~NETIF_F_SG; |
| 5205 | } | 5205 | } |
| 5206 | 5206 | ||
| 5207 | /* TSO requires that SG is present as well. */ | 5207 | /* TSO requires that SG is present as well. */ |
| 5208 | if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) { | 5208 | if ((features & NETIF_F_ALL_TSO) && !(features & NETIF_F_SG)) { |
| 5209 | netdev_info(dev, "Dropping TSO features since no SG feature.\n"); | 5209 | netdev_dbg(dev, "Dropping TSO features since no SG feature.\n"); |
| 5210 | features &= ~NETIF_F_ALL_TSO; | 5210 | features &= ~NETIF_F_ALL_TSO; |
| 5211 | } | 5211 | } |
| 5212 | 5212 | ||
| @@ -5216,7 +5216,7 @@ u32 netdev_fix_features(struct net_device *dev, u32 features) | |||
| 5216 | 5216 | ||
| 5217 | /* Software GSO depends on SG. */ | 5217 | /* Software GSO depends on SG. */ |
| 5218 | if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) { | 5218 | if ((features & NETIF_F_GSO) && !(features & NETIF_F_SG)) { |
| 5219 | netdev_info(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); | 5219 | netdev_dbg(dev, "Dropping NETIF_F_GSO since no SG feature.\n"); |
| 5220 | features &= ~NETIF_F_GSO; | 5220 | features &= ~NETIF_F_GSO; |
| 5221 | } | 5221 | } |
| 5222 | 5222 | ||
| @@ -5226,13 +5226,13 @@ u32 netdev_fix_features(struct net_device *dev, u32 features) | |||
| 5226 | if (!((features & NETIF_F_GEN_CSUM) || | 5226 | if (!((features & NETIF_F_GEN_CSUM) || |
| 5227 | (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM)) | 5227 | (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM)) |
| 5228 | == (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { | 5228 | == (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) { |
| 5229 | netdev_info(dev, | 5229 | netdev_dbg(dev, |
| 5230 | "Dropping NETIF_F_UFO since no checksum offload features.\n"); | 5230 | "Dropping NETIF_F_UFO since no checksum offload features.\n"); |
| 5231 | features &= ~NETIF_F_UFO; | 5231 | features &= ~NETIF_F_UFO; |
| 5232 | } | 5232 | } |
| 5233 | 5233 | ||
| 5234 | if (!(features & NETIF_F_SG)) { | 5234 | if (!(features & NETIF_F_SG)) { |
| 5235 | netdev_info(dev, | 5235 | netdev_dbg(dev, |
| 5236 | "Dropping NETIF_F_UFO since no NETIF_F_SG feature.\n"); | 5236 | "Dropping NETIF_F_UFO since no NETIF_F_SG feature.\n"); |
| 5237 | features &= ~NETIF_F_UFO; | 5237 | features &= ~NETIF_F_UFO; |
| 5238 | } | 5238 | } |
| @@ -5414,12 +5414,6 @@ int register_netdevice(struct net_device *dev) | |||
| 5414 | dev->features |= NETIF_F_SOFT_FEATURES; | 5414 | dev->features |= NETIF_F_SOFT_FEATURES; |
| 5415 | dev->wanted_features = dev->features & dev->hw_features; | 5415 | dev->wanted_features = dev->features & dev->hw_features; |
| 5416 | 5416 | ||
| 5417 | /* Avoid warning from netdev_fix_features() for GSO without SG */ | ||
| 5418 | if (!(dev->wanted_features & NETIF_F_SG)) { | ||
| 5419 | dev->wanted_features &= ~NETIF_F_GSO; | ||
| 5420 | dev->features &= ~NETIF_F_GSO; | ||
| 5421 | } | ||
| 5422 | |||
| 5423 | /* Enable GRO and NETIF_F_HIGHDMA for vlans by default, | 5417 | /* Enable GRO and NETIF_F_HIGHDMA for vlans by default, |
| 5424 | * vlan_dev_init() will do the dev->features check, so these features | 5418 | * vlan_dev_init() will do the dev->features check, so these features |
| 5425 | * are enabled only if supported by underlying device. | 5419 | * are enabled only if supported by underlying device. |
diff --git a/net/netfilter/ipvs/ip_vs_app.c b/net/netfilter/ipvs/ip_vs_app.c index 51f3af7c4743..059af3120be7 100644 --- a/net/netfilter/ipvs/ip_vs_app.c +++ b/net/netfilter/ipvs/ip_vs_app.c | |||
| @@ -572,7 +572,7 @@ static const struct file_operations ip_vs_app_fops = { | |||
| 572 | .open = ip_vs_app_open, | 572 | .open = ip_vs_app_open, |
| 573 | .read = seq_read, | 573 | .read = seq_read, |
| 574 | .llseek = seq_lseek, | 574 | .llseek = seq_lseek, |
| 575 | .release = seq_release, | 575 | .release = seq_release_net, |
| 576 | }; | 576 | }; |
| 577 | #endif | 577 | #endif |
| 578 | 578 | ||
diff --git a/net/netfilter/ipvs/ip_vs_conn.c b/net/netfilter/ipvs/ip_vs_conn.c index d3fd91bbba49..bf28ac2fc99b 100644 --- a/net/netfilter/ipvs/ip_vs_conn.c +++ b/net/netfilter/ipvs/ip_vs_conn.c | |||
| @@ -1046,7 +1046,7 @@ static const struct file_operations ip_vs_conn_fops = { | |||
| 1046 | .open = ip_vs_conn_open, | 1046 | .open = ip_vs_conn_open, |
| 1047 | .read = seq_read, | 1047 | .read = seq_read, |
| 1048 | .llseek = seq_lseek, | 1048 | .llseek = seq_lseek, |
| 1049 | .release = seq_release, | 1049 | .release = seq_release_net, |
| 1050 | }; | 1050 | }; |
| 1051 | 1051 | ||
| 1052 | static const char *ip_vs_origin_name(unsigned flags) | 1052 | static const char *ip_vs_origin_name(unsigned flags) |
| @@ -1114,7 +1114,7 @@ static const struct file_operations ip_vs_conn_sync_fops = { | |||
| 1114 | .open = ip_vs_conn_sync_open, | 1114 | .open = ip_vs_conn_sync_open, |
| 1115 | .read = seq_read, | 1115 | .read = seq_read, |
| 1116 | .llseek = seq_lseek, | 1116 | .llseek = seq_lseek, |
| 1117 | .release = seq_release, | 1117 | .release = seq_release_net, |
| 1118 | }; | 1118 | }; |
| 1119 | 1119 | ||
| 1120 | #endif | 1120 | #endif |
diff --git a/net/netfilter/ipvs/ip_vs_ctl.c b/net/netfilter/ipvs/ip_vs_ctl.c index ea722810faf3..37890f228b19 100644 --- a/net/netfilter/ipvs/ip_vs_ctl.c +++ b/net/netfilter/ipvs/ip_vs_ctl.c | |||
| @@ -2066,7 +2066,7 @@ static const struct file_operations ip_vs_info_fops = { | |||
| 2066 | .open = ip_vs_info_open, | 2066 | .open = ip_vs_info_open, |
| 2067 | .read = seq_read, | 2067 | .read = seq_read, |
| 2068 | .llseek = seq_lseek, | 2068 | .llseek = seq_lseek, |
| 2069 | .release = seq_release_private, | 2069 | .release = seq_release_net, |
| 2070 | }; | 2070 | }; |
| 2071 | 2071 | ||
| 2072 | #endif | 2072 | #endif |
| @@ -2109,7 +2109,7 @@ static const struct file_operations ip_vs_stats_fops = { | |||
| 2109 | .open = ip_vs_stats_seq_open, | 2109 | .open = ip_vs_stats_seq_open, |
| 2110 | .read = seq_read, | 2110 | .read = seq_read, |
| 2111 | .llseek = seq_lseek, | 2111 | .llseek = seq_lseek, |
| 2112 | .release = single_release, | 2112 | .release = single_release_net, |
| 2113 | }; | 2113 | }; |
| 2114 | 2114 | ||
| 2115 | static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v) | 2115 | static int ip_vs_stats_percpu_show(struct seq_file *seq, void *v) |
| @@ -2178,7 +2178,7 @@ static const struct file_operations ip_vs_stats_percpu_fops = { | |||
| 2178 | .open = ip_vs_stats_percpu_seq_open, | 2178 | .open = ip_vs_stats_percpu_seq_open, |
| 2179 | .read = seq_read, | 2179 | .read = seq_read, |
| 2180 | .llseek = seq_lseek, | 2180 | .llseek = seq_lseek, |
| 2181 | .release = single_release, | 2181 | .release = single_release_net, |
| 2182 | }; | 2182 | }; |
| 2183 | #endif | 2183 | #endif |
| 2184 | 2184 | ||
