net: Print num_rx_queues imbalance warning only when there are allocated queues
[pandora-kernel.git] / net / core / dev.c
index 07a48e2..14a8568 100644 (file)
@@ -1006,15 +1006,10 @@ int dev_change_name(struct net_device *dev, const char *newname)
                return err;
 
 rollback:
-       /* For now only devices in the initial network namespace
-        * are in sysfs.
-        */
-       if (net_eq(net, &init_net)) {
-               ret = device_rename(&dev->dev, dev->name);
-               if (ret) {
-                       memcpy(dev->name, oldname, IFNAMSIZ);
-                       return ret;
-               }
+       ret = device_rename(&dev->dev, dev->name);
+       if (ret) {
+               memcpy(dev->name, oldname, IFNAMSIZ);
+               return ret;
        }
 
        write_lock_bh(&dev_base_lock);
@@ -2258,11 +2253,9 @@ static int get_rps_cpu(struct net_device *dev, struct sk_buff *skb,
        if (skb_rx_queue_recorded(skb)) {
                u16 index = skb_get_rx_queue(skb);
                if (unlikely(index >= dev->num_rx_queues)) {
-                       if (net_ratelimit()) {
-                               pr_warning("%s received packet on queue "
-                                       "%u, but number of RX queues is %u\n",
-                                       dev->name, index, dev->num_rx_queues);
-                       }
+                       WARN_ONCE(dev->num_rx_queues > 1, "%s received packet "
+                               "on queue %u, but number of RX queues is %u\n",
+                               dev->name, index, dev->num_rx_queues);
                        goto done;
                }
                rxqueue = dev->_rx + index;
@@ -2800,7 +2793,7 @@ static int __netif_receive_skb(struct sk_buff *skb)
        struct net_device *orig_dev;
        struct net_device *master;
        struct net_device *null_or_orig;
-       struct net_device *null_or_bond;
+       struct net_device *orig_or_bond;
        int ret = NET_RX_DROP;
        __be16 type;
 
@@ -2873,10 +2866,10 @@ ncls:
         * device that may have registered for a specific ptype.  The
         * handler may have to adjust skb->dev and orig_dev.
         */
-       null_or_bond = NULL;
+       orig_or_bond = orig_dev;
        if ((skb->dev->priv_flags & IFF_802_1Q_VLAN) &&
            (vlan_dev_real_dev(skb->dev)->priv_flags & IFF_BONDING)) {
-               null_or_bond = vlan_dev_real_dev(skb->dev);
+               orig_or_bond = vlan_dev_real_dev(skb->dev);
        }
 
        type = skb->protocol;
@@ -2884,7 +2877,7 @@ ncls:
                        &ptype_base[ntohs(type) & PTYPE_HASH_MASK], list) {
                if (ptype->type == type && (ptype->dev == null_or_orig ||
                     ptype->dev == skb->dev || ptype->dev == orig_dev ||
-                    ptype->dev == null_or_bond)) {
+                    ptype->dev == orig_or_bond)) {
                        if (pt_prev)
                                ret = deliver_skb(skb, pt_prev, orig_dev);
                        pt_prev = ptype;
@@ -4998,8 +4991,6 @@ int register_netdevice(struct net_device *dev)
        if (dev->features & NETIF_F_SG)
                dev->features |= NETIF_F_GSO;
 
-       netdev_initialize_kobject(dev);
-
        ret = call_netdevice_notifiers(NETDEV_POST_INIT, dev);
        ret = notifier_to_errno(ret);
        if (ret)
@@ -5551,15 +5542,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
        if (dev->features & NETIF_F_NETNS_LOCAL)
                goto out;
 
-#ifdef CONFIG_SYSFS
-       /* Don't allow real devices to be moved when sysfs
-        * is enabled.
-        */
-       err = -EINVAL;
-       if (dev->dev.parent)
-               goto out;
-#endif
-
        /* Ensure the device has been registrered */
        err = -EINVAL;
        if (dev->reg_state != NETREG_REGISTERED)
@@ -5610,8 +5592,6 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
        dev_uc_flush(dev);
        dev_mc_flush(dev);
 
-       netdev_unregister_kobject(dev);
-
        /* Actually switch the network namespace */
        dev_net_set(dev, net);
 
@@ -5624,7 +5604,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
        }
 
        /* Fixup kobjects */
-       err = netdev_register_kobject(dev);
+       err = device_rename(&dev->dev, dev->name);
        WARN_ON(err);
 
        /* Add the device back in the hashes */