Send group desc without group stats capability

Change-Id: Ie061f03cabeec3d241cab2e5514aaa97c774bab8
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupStatsCollector.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupStatsCollector.java
index 5433a4d..4a5c872 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupStatsCollector.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupStatsCollector.java
@@ -19,6 +19,7 @@
 import org.onlab.util.Timer;
 import org.onosproject.openflow.controller.OpenFlowSwitch;
 import org.onosproject.openflow.controller.RoleState;
+import org.projectfloodlight.openflow.protocol.OFCapabilities;
 import org.projectfloodlight.openflow.protocol.OFGroupDescStatsRequest;
 import org.projectfloodlight.openflow.protocol.OFGroupStatsRequest;
 import org.projectfloodlight.openflow.types.OFGroup;
@@ -59,7 +60,7 @@
     public void run(Timeout timeout) throws Exception {
         log.trace("Collecting stats for {}", sw.getStringId());
 
-        sendGroupStatisticRequest();
+        sendGroupStatisticRequests();
 
         if (!this.stopTimer) {
             log.trace("Scheduling stats collection in {} seconds for {}",
@@ -69,7 +70,23 @@
         }
     }
 
-    private void sendGroupStatisticRequest() {
+    private void sendGroupDescStatisticRequest(long xid) {
+        OFGroupDescStatsRequest descStatsRequest =
+                sw.factory().buildGroupDescStatsRequest()
+                        .setXid(xid)
+                        .build();
+        sw.sendMsg(descStatsRequest);
+    }
+
+    private void sendGroupStatisticRequest(long xid) {
+        OFGroupStatsRequest statsRequest = sw.factory().buildGroupStatsRequest()
+            .setGroup(OFGroup.ALL)
+            .setXid(xid)
+            .build();
+        sw.sendMsg(statsRequest);
+    }
+
+    private void sendGroupStatisticRequests() {
         if (log.isTraceEnabled()) {
             log.trace("sendGroupStatistics {}:{}", sw.getStringId(), sw.getRole());
         }
@@ -79,19 +96,15 @@
         if (!sw.isConnected()) {
             return;
         }
-        long statsXid = OpenFlowGroupProvider.getXidAndAdd(2);
-        OFGroupStatsRequest statsRequest = sw.factory().buildGroupStatsRequest()
-                .setGroup(OFGroup.ALL)
-                .setXid(statsXid)
-                .build();
-        sw.sendMsg(statsRequest);
 
-        long descXid = statsXid + 1;
-        OFGroupDescStatsRequest descStatsRequest =
-                sw.factory().buildGroupDescStatsRequest()
-                        .setXid(descXid)
-                        .build();
-        sw.sendMsg(descStatsRequest);
+        if (sw.features().getCapabilities().contains(OFCapabilities.GROUP_STATS)) {
+            long xid = OpenFlowGroupProvider.getXidAndAdd(2);
+            sendGroupDescStatisticRequest(xid);
+            sendGroupStatisticRequest(xid + 1);
+        } else {
+            long xid = OpenFlowGroupProvider.getXidAndAdd(1);
+            sendGroupDescStatisticRequest(xid);
+        }
     }
 
     public void adjustRate(int pollInterval) {
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
index 0f55b41..b536fda 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/OpenFlowGroupProvider.java
@@ -65,7 +65,6 @@
 import org.onosproject.openflow.controller.RoleState;
 import org.osgi.service.component.ComponentContext;
 import org.projectfloodlight.openflow.protocol.OFBucketCounter;
-import org.projectfloodlight.openflow.protocol.OFCapabilities;
 import org.projectfloodlight.openflow.protocol.OFErrorMsg;
 import org.projectfloodlight.openflow.protocol.OFErrorType;
 import org.projectfloodlight.openflow.protocol.OFGroupDescStatsEntry;
@@ -413,7 +412,7 @@
             if (sw == null) {
                 return;
             }
-            if (isGroupSupported(sw) && sw.features().getCapabilities().contains(OFCapabilities.GROUP_STATS)) {
+            if (isGroupSupported(sw)) {
                 GroupStatsCollector gsc = new GroupStatsCollector(sw, groupPollInterval);
                 stopCollectorIfNeeded(collectors.put(dpid, gsc));
                 gsc.start();