]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blobdiff - net/core/dev.c
net: dev: Improve debug statements for adjacency tracking
[mirror_ubuntu-zesty-kernel.git] / net / core / dev.c
index c6bbf310d4071140091afad4d455cd0acc12421d..f55fb453601620ce255087d12c639e075d7b256f 100644 (file)
@@ -5561,6 +5561,9 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
 
        if (adj) {
                adj->ref_nr += 1;
+               pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d\n",
+                        dev->name, adj_dev->name, adj->ref_nr);
+
                return 0;
        }
 
@@ -5574,8 +5577,8 @@ static int __netdev_adjacent_dev_insert(struct net_device *dev,
        adj->private = private;
        dev_hold(adj_dev);
 
-       pr_debug("dev_hold for %s, because of link added from %s to %s\n",
-                adj_dev->name, dev->name, adj_dev->name);
+       pr_debug("Insert adjacency: dev %s adj_dev %s adj->ref_nr %d; dev_hold on %s\n",
+                dev->name, adj_dev->name, adj->ref_nr, adj_dev->name);
 
        if (netdev_adjacent_is_neigh_list(dev, adj_dev, dev_list)) {
                ret = netdev_adjacent_sysfs_add(dev, adj_dev, dev_list);
@@ -5614,17 +5617,22 @@ static void __netdev_adjacent_dev_remove(struct net_device *dev,
 {
        struct netdev_adjacent *adj;
 
+       pr_debug("Remove adjacency: dev %s adj_dev %s ref_nr %d\n",
+                dev->name, adj_dev->name, ref_nr);
+
        adj = __netdev_find_adj(adj_dev, dev_list);
 
        if (!adj) {
-               pr_err("tried to remove device %s from %s\n",
+               pr_err("Adjacency does not exist for device %s from %s\n",
                       dev->name, adj_dev->name);
-               BUG();
+               WARN_ON(1);
+               return;
        }
 
        if (adj->ref_nr > ref_nr) {
-               pr_debug("%s to %s ref_nr-%d = %d\n", dev->name, adj_dev->name,
-                        ref_nr, adj->ref_nr-ref_nr);
+               pr_debug("adjacency: %s to %s ref_nr - %d = %d\n",
+                        dev->name, adj_dev->name, ref_nr,
+                        adj->ref_nr - ref_nr);
                adj->ref_nr -= ref_nr;
                return;
        }
@@ -5636,7 +5644,7 @@ static void __netdev_adjacent_dev_remove(struct net_device *dev,
                netdev_adjacent_sysfs_del(dev, adj_dev->name, dev_list);
 
        list_del_rcu(&adj->list);
-       pr_debug("dev_put for %s, because link removed from %s to %s\n",
+       pr_debug("adjacency: dev_put for %s, because link removed from %s to %s\n",
                 adj_dev->name, dev->name, adj_dev->name);
        dev_put(adj_dev);
        kfree_rcu(adj, rcu);