Commit 57422dc5 authored by Michał Mirosław's avatar Michał Mirosław Committed by David S. Miller

net: Move check of checksum features to netdev_fix_features()

Signed-off-by: default avatarMichał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2505c548
...@@ -5215,6 +5215,23 @@ static void rollback_registered(struct net_device *dev) ...@@ -5215,6 +5215,23 @@ static void rollback_registered(struct net_device *dev)
unsigned long netdev_fix_features(unsigned long features, const char *name) unsigned long netdev_fix_features(unsigned long features, const char *name)
{ {
/* Fix illegal checksum combinations */
if ((features & NETIF_F_HW_CSUM) &&
(features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
if (name)
printk(KERN_NOTICE "%s: mixed HW and IP checksum settings.\n",
name);
features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
}
if ((features & NETIF_F_NO_CSUM) &&
(features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
if (name)
printk(KERN_NOTICE "%s: mixed no checksumming and other settings.\n",
name);
features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM);
}
/* Fix illegal SG+CSUM combinations. */ /* Fix illegal SG+CSUM combinations. */
if ((features & NETIF_F_SG) && if ((features & NETIF_F_SG) &&
!(features & NETIF_F_ALL_CSUM)) { !(features & NETIF_F_ALL_CSUM)) {
...@@ -5390,21 +5407,6 @@ int register_netdevice(struct net_device *dev) ...@@ -5390,21 +5407,6 @@ int register_netdevice(struct net_device *dev)
if (dev->iflink == -1) if (dev->iflink == -1)
dev->iflink = dev->ifindex; dev->iflink = dev->ifindex;
/* Fix illegal checksum combinations */
if ((dev->features & NETIF_F_HW_CSUM) &&
(dev->features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
printk(KERN_NOTICE "%s: mixed HW and IP checksum settings.\n",
dev->name);
dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM);
}
if ((dev->features & NETIF_F_NO_CSUM) &&
(dev->features & (NETIF_F_HW_CSUM|NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
printk(KERN_NOTICE "%s: mixed no checksumming and other settings.\n",
dev->name);
dev->features &= ~(NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM|NETIF_F_HW_CSUM);
}
dev->features = netdev_fix_features(dev->features, dev->name); dev->features = netdev_fix_features(dev->features, dev->name);
/* Enable software GSO if SG is supported. */ /* Enable software GSO if SG is supported. */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment