Bug fixes for ofdpa pipeline

Change-Id: Ia532c51d0f348b31bf38aa10c567ba9bf8aa23e3
diff --git a/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java b/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
index 6ceb6d3..fb5d701 100644
--- a/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
+++ b/drivers/src/main/java/org/onosproject/driver/pipeline/OFDPA1Pipeline.java
@@ -80,6 +80,7 @@
 import org.onosproject.net.group.GroupKey;
 import org.onosproject.net.group.GroupListener;
 import org.onosproject.net.group.GroupService;
+import org.onosproject.store.serializers.KryoNamespaces;
 import org.slf4j.Logger;
 
 import com.google.common.cache.Cache;
@@ -137,6 +138,7 @@
     private ApplicationId driverId;
 
     private KryoNamespace appKryo = new KryoNamespace.Builder()
+        .register(KryoNamespaces.API)
         .register(GroupKey.class)
         .register(DefaultGroupKey.class)
         .register(OfdpaGroupChain.class)
@@ -574,9 +576,9 @@
                 fail(fwd, ObjectiveError.GROUPMISSING);
                 return Collections.emptySet();
             }
-            tb.group(group.id());
+            tb.deferred().group(group.id());
         }
-
+        tb.transition(ACL_TABLE);
         FlowRule.Builder ruleBuilder = DefaultFlowRule.builder()
                 .fromApp(fwd.appId())
                 .withPriority(fwd.priority())
@@ -634,7 +636,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(PORT_TABLE).build();
-        ops = ops.add(tmisse);
+        /*ops = ops.add(tmisse);
 
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
@@ -646,7 +648,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize port table");
             }
-        }));
+        }));*/
 
     }
 
@@ -716,7 +718,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(TMAC_TABLE).build();
-        ops =  ops.add(rule); // XXX bug in ofdpa
+        /*ops =  ops.add(rule); // XXX bug in ofdpa
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
@@ -727,7 +729,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize tmac table");
             }
-        }));
+        }));*/
     }
 
     private void processIpTable() {
@@ -746,7 +748,7 @@
                 .fromApp(driverId)
                 .makePermanent()
                 .forTable(UNICAST_ROUTING_TABLE).build();
-        ops =  ops.add(rule);
+        /*ops =  ops.add(rule);
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
@@ -757,7 +759,7 @@
             public void onError(FlowRuleOperations ops) {
                 log.info("Failed to initialize unicast IP table");
             }
-        }));
+        }));*/
     }
 
     @SuppressWarnings("unused")
diff --git a/drivers/src/main/resources/onos-drivers.xml b/drivers/src/main/resources/onos-drivers.xml
index 8be7812..601e162 100644
--- a/drivers/src/main/resources/onos-drivers.xml
+++ b/drivers/src/main/resources/onos-drivers.xml
@@ -58,7 +58,7 @@
                    impl="org.onosproject.driver.handshaker.CorsaSwitchHandshaker"/>
     </driver>
     <driver name="ofdpa" extends="default"
-            manufacturer="Broadcom Corp." hwVersion="OF-DPA 1.0" swVersion="OF-DPA 1.0">
+            manufacturer="Broadcom Corp." hwVersion="OF-DPA 2.0-EA1" swVersion="OF-DPA 2.0-EA1">
         <behaviour api="org.onosproject.net.behaviour.Pipeliner"
                    impl="org.onosproject.driver.pipeline.OFDPA1Pipeline"/>
     </driver>
diff --git a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
index c670b63..272c311 100644
--- a/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
+++ b/providers/openflow/group/src/main/java/org/onosproject/provider/of/group/impl/GroupBucketEntryBuilder.java
@@ -38,6 +38,7 @@
 import org.projectfloodlight.openflow.protocol.action.OFActionDecMplsTtl;
 import org.projectfloodlight.openflow.protocol.action.OFActionDecNwTtl;
 import org.projectfloodlight.openflow.protocol.action.OFActionExperimenter;
+import org.projectfloodlight.openflow.protocol.action.OFActionGroup;
 import org.projectfloodlight.openflow.protocol.action.OFActionOutput;
 import org.projectfloodlight.openflow.protocol.action.OFActionPopMpls;
 import org.projectfloodlight.openflow.protocol.action.OFActionPushMpls;
@@ -209,6 +210,10 @@
                     OFActionDecNwTtl decNwTtl = (OFActionDecNwTtl) act;
                     builder.decNwTtl();
                     break;
+                case GROUP:
+                    OFActionGroup grp = (OFActionGroup) act;
+                    builder.group(new DefaultGroupId(grp.getGroup().getGroupNumber()));
+                    break;
                 case SET_TP_DST:
                 case SET_TP_SRC:
                 case POP_PBB:
@@ -222,7 +227,6 @@
                 case SET_QUEUE:
                 case STRIP_VLAN:
                 case ENQUEUE:
-                case GROUP:
                 default:
                     log.warn("Action type {} not yet implemented.", act.getType());
             }