Do not collect flow and port stats if unsupported
Change-Id: I8dd175803c64e2cafa57b7cbf8b9c268a6391739
diff --git a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
index 35bb730..f3dd6e0 100644
--- a/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
+++ b/providers/openflow/device/src/main/java/org/onosproject/provider/of/device/impl/OpenFlowDeviceProvider.java
@@ -75,6 +75,7 @@
import org.projectfloodlight.openflow.protocol.OFCalientPortDescProp;
import org.projectfloodlight.openflow.protocol.OFCalientPortDescPropOptical;
import org.projectfloodlight.openflow.protocol.OFCalientPortDescStatsEntry;
+import org.projectfloodlight.openflow.protocol.OFCapabilities;
import org.projectfloodlight.openflow.protocol.OFErrorMsg;
import org.projectfloodlight.openflow.protocol.OFErrorType;
import org.projectfloodlight.openflow.protocol.OFExpPort;
@@ -640,9 +641,11 @@
providerService.deviceConnected(did, description);
providerService.updatePorts(did, buildPortDescriptions(sw));
- PortStatsCollector psc = new PortStatsCollector(timer, sw, portStatsPollFrequency);
- stopCollectorIfNeeded(collectors.put(dpid, psc));
- psc.start();
+ if (sw.features().getCapabilities().contains(OFCapabilities.PORT_STATS)) {
+ PortStatsCollector psc = new PortStatsCollector(timer, sw, portStatsPollFrequency);
+ stopCollectorIfNeeded(collectors.put(dpid, psc));
+ psc.start();
+ }
//figure out race condition for collectors.remove() and collectors.put()
if (controller.getSwitch(dpid) == null) {