Fix issue with link discovery missing ports.

ONOS-2477.

Ported from onos-1.2 branch.

Change-Id: I8d82ac687d6a3177b5216a19c99f0823a047529e
diff --git a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
index f36af7e..5c0dde7 100644
--- a/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
+++ b/providers/lldp/src/main/java/org/onosproject/provider/lldp/impl/LLDPLinkProvider.java
@@ -163,16 +163,7 @@
             ld = new LinkDiscovery(device, packetService, masterService,
                                    providerService, useBDDP);
             discoverers.put(device.id(), ld);
-            for (Port p : deviceService.getPorts(device.id())) {
-                if (rules.isSuppressed(p)) {
-                    log.debug("LinkDiscovery from {}@{} disabled by configuration",
-                              p.number(), device.id());
-                    continue;
-                }
-                if (!p.number().isLogical()) {
-                    ld.addPort(p);
-                }
-            }
+            addPorts(ld, device.id());
         }
 
         executor = newSingleThreadScheduledExecutor(groupedThreads("onos/device", "sync-%d"));
@@ -183,6 +174,17 @@
         log.info("Started");
     }
 
+    private void addPorts(LinkDiscovery discoverer, DeviceId deviceId) {
+        for (Port p : deviceService.getPorts(deviceId)) {
+            if (rules.isSuppressed(p)) {
+                continue;
+            }
+            if (!p.number().isLogical()) {
+                discoverer.addPort(p);
+            }
+        }
+    }
+
     @Deactivate
     public void deactivate() {
         cfgService.unregisterProperties(getClass(), false);
@@ -431,26 +433,20 @@
             }
             // check what deviceService sees, to see if we are missing anything
             try {
-                LinkDiscovery ld = null;
                 for (Device dev : deviceService.getDevices()) {
                     if (rules.isSuppressed(dev)) {
                         continue;
                     }
                     DeviceId did = dev.id();
                     synchronized (discoverers) {
-                        if (!discoverers.containsKey(did)) {
-                            ld = new LinkDiscovery(dev, packetService,
-                                                   masterService, providerService, useBDDP);
-                            discoverers.put(did, ld);
-                            for (Port p : deviceService.getPorts(did)) {
-                                if (rules.isSuppressed(p)) {
-                                    continue;
-                                }
-                                if (!p.number().isLogical()) {
-                                    ld.addPort(p);
-                                }
-                            }
+                        LinkDiscovery discoverer = discoverers.get(did);
+                        if (discoverer == null) {
+                            discoverer = new LinkDiscovery(dev, packetService,
+                                    masterService, providerService, useBDDP);
+                            discoverers.put(did, discoverer);
                         }
+
+                        addPorts(discoverer, did);
                     }
                 }
             } catch (Exception e) {