diff --git a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
index 71219b7..1740f4b 100644
--- a/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/of/device/src/main/java/org/onlab/onos/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -30,7 +30,9 @@
 import org.onlab.onos.of.controller.OpenFlowSwitch;
 import org.onlab.onos.of.controller.OpenFlowSwitchListener;
 import org.onlab.onos.of.controller.RoleState;
+import org.projectfloodlight.openflow.protocol.OFPortConfig;
 import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortState;
 import org.slf4j.Logger;
 
 /**
@@ -50,7 +52,7 @@
 
     private DeviceProviderService providerService;
 
-    private OpenFlowSwitchListener listener = new InternalDeviceProvider();
+    private final OpenFlowSwitchListener listener = new InternalDeviceProvider();
 
     /**
      * Creates an OpenFlow device provider.
@@ -119,17 +121,6 @@
             providerService.updatePorts(deviceId(uri), buildPortDescriptions(sw.getPorts()));
         }
 
-        private List<PortDescription> buildPortDescriptions(
-                List<OFPortDesc> ports) {
-            List<PortDescription> portDescs = new ArrayList<PortDescription>();
-            for (OFPortDesc port : ports) {
-                PortNumber portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
-
-                portDescs.add(new DefaultPortDescription(portNo,
-                        port.getState()));
-            }
-        }
-
         @Override
         public void switchRemoved(Dpid dpid) {
             if (providerService == null) {
@@ -149,6 +140,21 @@
             return uri;
         }
 
+        private List<PortDescription> buildPortDescriptions(
+                List<OFPortDesc> ports) {
+            final List<PortDescription> portDescs = new ArrayList<PortDescription>();
+            PortNumber portNo;
+            boolean enabled;
+            for (OFPortDesc port : ports) {
+                portNo = PortNumber.portNumber(port.getPortNo().getPortNumber());
+                enabled = !port.getState().contains(OFPortState.LINK_DOWN) &&
+                        !port.getConfig().contains(OFPortConfig.PORT_DOWN);
+                portDescs.add(new DefaultPortDescription(portNo,
+                        enabled));
+            }
+            return portDescs;
+        }
+
     }
 
 }
