Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 236687
b: refs/heads/master
c: 57422dc
h: refs/heads/master
i:
  236685: 9a6a838
  236683: fba04a0
  236679: 6be331b
  236671: 5655514
v: v3
  • Loading branch information
Michał Mirosław authored and David S. Miller committed Jan 24, 2011
1 parent 36ae099 commit b92cf87
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 16 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 2505c5483137aa630806df9cd08a82d1cac72cc9
refs/heads/master: 57422dc530115e427dff464cc0a32bcd0efb5008
32 changes: 17 additions & 15 deletions trunk/net/core/dev.c
Original file line number Diff line number Diff line change
Expand Up @@ -5215,6 +5215,23 @@ static void rollback_registered(struct net_device *dev)

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. */
if ((features & NETIF_F_SG) &&
!(features & NETIF_F_ALL_CSUM)) {
Expand Down Expand Up @@ -5390,21 +5407,6 @@ int register_netdevice(struct net_device *dev)
if (dev->iflink == -1)
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);

/* Enable software GSO if SG is supported. */
Expand Down

0 comments on commit b92cf87

Please sign in to comment.