}
 
 static struct l2cap_chan *add_peer_chan(struct l2cap_chan *chan,
-                                       struct lowpan_btle_dev *dev)
+                                       struct lowpan_btle_dev *dev,
+                                       bool new_netdev)
 {
        struct lowpan_peer *peer;
 
        spin_unlock(&devices_lock);
 
        /* Notifying peers about us needs to be done without locks held */
-       INIT_DELAYED_WORK(&dev->notify_peers, do_notify_peers);
+       if (new_netdev)
+               INIT_DELAYED_WORK(&dev->notify_peers, do_notify_peers);
        schedule_delayed_work(&dev->notify_peers, msecs_to_jiffies(100));
 
        return peer->chan;
 static inline void chan_ready_cb(struct l2cap_chan *chan)
 {
        struct lowpan_btle_dev *dev;
+       bool new_netdev = false;
 
        dev = lookup_dev(chan->conn);
 
                        l2cap_chan_del(chan, -ENOENT);
                        return;
                }
+               new_netdev = true;
        }
 
        if (!try_module_get(THIS_MODULE))
                return;
 
-       add_peer_chan(chan, dev);
+       add_peer_chan(chan, dev, new_netdev);
        ifup(dev->netdev);
 }