net: reduce and unify printk level in netdev_fix_features()
authorMichał Mirosław <mirq-linux@rere.qmqm.pl>
Mon, 24 Jan 2011 23:45:15 +0000 (15:45 -0800)
committerDavid S. Miller <davem@davemloft.net>
Mon, 24 Jan 2011 23:45:15 +0000 (15:45 -0800)
Reduce printk() levels to KERN_INFO in netdev_fix_features() as this will
be used by ethtool and might spam dmesg unnecessarily.

This converts the function to use netdev_info() instead of plain printk().

As a side effect, bonding and bridge devices will now log dropped features
on every slave device change.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/bonding/bond_main.c
include/linux/netdevice.h
net/bridge/br_if.c
net/core/dev.c

index 7047b406b8ba8b75fb853ab8fd0a5f40a0774113..1df9f0ea918444a6131e0532b18f06d355ab3dda 100644 (file)
@@ -1400,8 +1400,8 @@ static int bond_compute_features(struct bonding *bond)
 
 done:
        features |= (bond_dev->features & BOND_VLAN_FEATURES);
-       bond_dev->features = netdev_fix_features(features, NULL);
-       bond_dev->vlan_features = netdev_fix_features(vlan_features, NULL);
+       bond_dev->features = netdev_fix_features(bond_dev, features);
+       bond_dev->vlan_features = netdev_fix_features(bond_dev, vlan_features);
        bond_dev->hard_header_len = max_hard_header_len;
 
        return 0;
index 0de3c59720fa1543af48645244a09250caa4df17..8858422c5c5de894ec4a5a7b56bc3484eb7805fe 100644 (file)
@@ -2399,7 +2399,7 @@ extern char *netdev_drivername(const struct net_device *dev, char *buffer, int l
 extern void linkwatch_run_queue(void);
 
 u32 netdev_increment_features(u32 all, u32 one, u32 mask);
-u32 netdev_fix_features(u32 features, const char *name);
+u32 netdev_fix_features(struct net_device *dev, u32 features);
 
 void netif_stacked_transfer_operstate(const struct net_device *rootdev,
                                        struct net_device *dev);
index 52ce4a30f8b332d1c6e860d637d0e58927a9da94..2a6801d8b728ddfc185b9032b5262a162593d23b 100644 (file)
@@ -379,7 +379,7 @@ void br_features_recompute(struct net_bridge *br)
        }
 
 done:
-       br->dev->features = netdev_fix_features(features, NULL);
+       br->dev->features = netdev_fix_features(br->dev, features);
 }
 
 /* called with RTNL */
index 7103f89fde0c9446713e384a1fc52df38673d773..1b4c07fe295f021768e387027a68dc2f96d01a8f 100644 (file)
@@ -5213,58 +5213,49 @@ static void rollback_registered(struct net_device *dev)
        rollback_registered_many(&single);
 }
 
-u32 netdev_fix_features(u32 features, const char *name)
+u32 netdev_fix_features(struct net_device *dev, u32 features)
 {
        /* 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);
+               netdev_info(dev, "mixed HW and IP checksum settings.\n");
                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);
+               netdev_info(dev, "mixed no checksumming and other settings.\n");
                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)) {
-               if (name)
-                       printk(KERN_NOTICE "%s: Dropping NETIF_F_SG since no "
-                              "checksum feature.\n", name);
+               netdev_info(dev,
+                           "Dropping NETIF_F_SG since no checksum feature.\n");
                features &= ~NETIF_F_SG;
        }
 
        /* TSO requires that SG is present as well. */
        if ((features & NETIF_F_TSO) && !(features & NETIF_F_SG)) {
-               if (name)
-                       printk(KERN_NOTICE "%s: Dropping NETIF_F_TSO since no "
-                              "SG feature.\n", name);
+               netdev_info(dev, "Dropping NETIF_F_TSO since no SG feature.\n");
                features &= ~NETIF_F_TSO;
        }
 
+       /* UFO needs SG and checksumming */
        if (features & NETIF_F_UFO) {
                /* maybe split UFO into V4 and V6? */
                if (!((features & NETIF_F_GEN_CSUM) ||
                    (features & (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))
                            == (NETIF_F_IP_CSUM|NETIF_F_IPV6_CSUM))) {
-                       if (name)
-                               printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
-                                      "since no checksum offload features.\n",
-                                      name);
+                       netdev_info(dev,
+                               "Dropping NETIF_F_UFO since no checksum offload features.\n");
                        features &= ~NETIF_F_UFO;
                }
 
                if (!(features & NETIF_F_SG)) {
-                       if (name)
-                               printk(KERN_ERR "%s: Dropping NETIF_F_UFO "
-                                      "since no NETIF_F_SG feature.\n", name);
+                       netdev_info(dev,
+                               "Dropping NETIF_F_UFO since no NETIF_F_SG feature.\n");
                        features &= ~NETIF_F_UFO;
                }
        }
@@ -5407,7 +5398,7 @@ int register_netdevice(struct net_device *dev)
        if (dev->iflink == -1)
                dev->iflink = dev->ifindex;
 
-       dev->features = netdev_fix_features(dev->features, dev->name);
+       dev->features = netdev_fix_features(dev, dev->features);
 
        /* Enable software GSO if SG is supported. */
        if (dev->features & NETIF_F_SG)