[ONOS-7255] Remove next id mapping table from fabric.p4

Change-Id: Ibcdc49f7c802cb4a4175d51314713725d8b05a77
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
index 63badda..dca2182 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
@@ -91,7 +91,6 @@
     public static final PiTableId TBL_HASHED_ID = PiTableId.of("next.hashed");
     public static final PiTableId TBL_INGRESS_PORT_VLAN_ID = PiTableId.of("filtering.ingress_port_vlan");
     public static final PiTableId TBL_FWD_CLASSIFIER_ID = PiTableId.of("filtering.fwd_classifier");
-    public static final PiTableId TBL_NEXT_ID_MAPPING_ID = PiTableId.of("next.next_id_mapping");
     public static final PiTableId TBL_UNICAST_V6_ID = PiTableId.of("forwarding.unicast_v6");
     public static final PiTableId TBL_SIMPLE_ID = PiTableId.of("next.simple");
     public static final PiTableId TBL_BRIDGING_ID = PiTableId.of("forwarding.bridging");
@@ -113,7 +112,6 @@
     public static final PiCounterId CNT_FWD_CLASSIFIER_COUNTER_ID = PiCounterId.of("filtering.fwd_classifier_counter");
     public static final PiCounterId CNT_UNICAST_V6_COUNTER_ID = PiCounterId.of("forwarding.unicast_v6_counter");
     public static final PiCounterId CNT_BRIDGING_COUNTER_ID = PiCounterId.of("forwarding.bridging_counter");
-    public static final PiCounterId CNT_NEXT_ID_MAPPING_COUNTER_ID = PiCounterId.of("next.next_id_mapping_counter");
     public static final PiCounterId CNT_SIMPLE_COUNTER_ID = PiCounterId.of("next.simple_counter");
     public static final PiCounterId CNT_HASHED_COUNTER_ID = PiCounterId.of("next.hashed_counter");
     public static final PiCounterId CNT_BROADCAST_COUNTER_ID = PiCounterId.of("next.broadcast_counter");
@@ -130,7 +128,6 @@
     public static final PiActionId ACT_MPLS_ROUTING_V6_ID = PiActionId.of("next.mpls_routing_v6");
     public static final PiActionId ACT_SET_FORWARDING_TYPE_ID = PiActionId.of("filtering.set_forwarding_type");
     public static final PiActionId ACT_POP_MPLS_AND_NEXT_ID = PiActionId.of("forwarding.pop_mpls_and_next");
-    public static final PiActionId ACT_SET_NEXT_TYPE_ID = PiActionId.of("next.set_next_type");
     public static final PiActionId ACT_L3_ROUTING_ID = PiActionId.of("next.l3_routing");
     public static final PiActionId ACT_OUTPUT_ID = PiActionId.of("next.output");
     public static final PiActionId ACT_NOP_ID = PiActionId.of("nop");
@@ -146,11 +143,10 @@
     public static final PiActionParamId ACT_PRM_GID_ID = PiActionParamId.of("gid");
     public static final PiActionParamId ACT_PRM_NEW_VLAN_ID_ID = PiActionParamId.of("new_vlan_id");
     public static final PiActionParamId ACT_PRM_FWD_TYPE_ID = PiActionParamId.of("fwd_type");
-    public static final PiActionParamId ACT_PRM_NEXT_TYPE_ID = PiActionParamId.of("next_type");
     public static final PiActionParamId ACT_PRM_NEXT_ID_ID = PiActionParamId.of("next_id");
 
     // Action Profile IDs
-    public static final PiActionProfileId ACT_PRF_ECMP_SELECTOR_ID = PiActionProfileId.of("next.ecmp_selector");
+    public static final PiActionProfileId ACT_PRF_NEXT_ECMP_SELECTOR_ID = PiActionProfileId.of("next.ecmp_selector");
 
     // Packet Metadata IDs
     public static final PiControlMetadataId CTRL_META_EGRESS_PORT_ID = PiControlMetadataId.of("egress_port");
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
index 65729c0..69a686e 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/FabricInterpreter.java
@@ -75,10 +75,9 @@
                     .put(7, FabricConstants.TBL_BRIDGING_ID)
                     .put(8, FabricConstants.TBL_ACL_ID)
                     // Next
-                    .put(9, FabricConstants.TBL_NEXT_ID_MAPPING_ID)
-                    .put(10, FabricConstants.TBL_SIMPLE_ID)
-                    .put(11, FabricConstants.TBL_HASHED_ID)
-                    .put(12, FabricConstants.TBL_BROADCAST_ID)
+                    .put(9, FabricConstants.TBL_SIMPLE_ID)
+                    .put(10, FabricConstants.TBL_HASHED_ID)
+                    .put(11, FabricConstants.TBL_BROADCAST_ID)
                     .build();
 
     private static final Set<PiTableId> FILTERING_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_INGRESS_PORT_VLAN_ID,
@@ -90,8 +89,7 @@
                                                                                FabricConstants.TBL_MULTICAST_V6_ID,
                                                                                FabricConstants.TBL_BRIDGING_ID,
                                                                                FabricConstants.TBL_ACL_ID);
-    private static final Set<PiTableId> NEXT_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_NEXT_ID_MAPPING_ID,
-                                                                         FabricConstants.TBL_SIMPLE_ID,
+    private static final Set<PiTableId> NEXT_CTRL_TBLS = ImmutableSet.of(FabricConstants.TBL_SIMPLE_ID,
                                                                          FabricConstants.TBL_HASHED_ID,
                                                                          FabricConstants.TBL_BROADCAST_ID);
 
@@ -104,7 +102,6 @@
                     .put(FabricConstants.TBL_BROADCAST_ID, FabricConstants.CNT_BROADCAST_COUNTER_ID)
                     .put(FabricConstants.TBL_HASHED_ID, FabricConstants.CNT_HASHED_COUNTER_ID)
                     .put(FabricConstants.TBL_INGRESS_PORT_VLAN_ID, FabricConstants.CNT_INGRESS_PORT_VLAN_COUNTER_ID)
-                    .put(FabricConstants.TBL_NEXT_ID_MAPPING_ID, FabricConstants.CNT_NEXT_ID_MAPPING_COUNTER_ID)
                     .put(FabricConstants.TBL_UNICAST_V6_ID, FabricConstants.CNT_UNICAST_V6_COUNTER_ID)
                     .put(FabricConstants.TBL_SIMPLE_ID, FabricConstants.CNT_SIMPLE_COUNTER_ID)
                     .put(FabricConstants.TBL_BRIDGING_ID, FabricConstants.CNT_BRIDGING_COUNTER_ID)
diff --git a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
index 324a4f5..9177237 100644
--- a/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
+++ b/pipelines/fabric/src/main/java/org/onosproject/pipelines/fabric/pipeliner/FabricNextPipeliner.java
@@ -16,7 +16,6 @@
 
 package org.onosproject.pipelines.fabric.pipeliner;
 
-import com.google.common.collect.ImmutableMap;
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.flow.DefaultFlowRule;
 import org.onosproject.net.flow.DefaultTrafficSelector;
@@ -33,23 +32,16 @@
 import org.onosproject.net.group.GroupBucket;
 import org.onosproject.net.group.GroupBuckets;
 import org.onosproject.net.group.GroupDescription;
-import org.onosproject.net.pi.runtime.PiAction;
 import org.onosproject.net.pi.runtime.PiActionGroupId;
-import org.onosproject.net.pi.runtime.PiActionParam;
 import org.onosproject.net.pi.runtime.PiGroupKey;
 import org.slf4j.Logger;
 
 import java.util.List;
-import java.util.Map;
 import java.util.stream.Collectors;
 
-import static org.onlab.util.ImmutableByteSequence.copyFrom;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRF_ECMP_SELECTOR_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRM_NEXT_TYPE_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.ACT_SET_NEXT_TYPE_ID;
+import static org.onosproject.pipelines.fabric.FabricConstants.ACT_PRF_NEXT_ECMP_SELECTOR_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.HF_FABRIC_METADATA_NEXT_ID_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.TBL_HASHED_ID;
-import static org.onosproject.pipelines.fabric.FabricConstants.TBL_NEXT_ID_MAPPING_ID;
 import static org.onosproject.pipelines.fabric.FabricConstants.TBL_SIMPLE_ID;
 import static org.slf4j.LoggerFactory.getLogger;
 
@@ -59,18 +51,6 @@
 public class FabricNextPipeliner {
     private static final Logger log = getLogger(FabricNextPipeliner.class);
 
-    // Next types
-    private static final byte NXT_TYPE_SIMPLE = 0;
-    private static final byte NXT_TYPE_HASHED = 1;
-    private static final byte NXT_TYPE_BROADCAST = 2;
-    private static final byte NXT_TYPE_PUNT = 3;
-    private static final Map<NextObjective.Type, Byte> NEXT_TYPE_MAP =
-            ImmutableMap.<NextObjective.Type, Byte>builder()
-                    .put(NextObjective.Type.SIMPLE, NXT_TYPE_SIMPLE)
-                    .put(NextObjective.Type.HASHED, NXT_TYPE_HASHED)
-                    .put(NextObjective.Type.BROADCAST, NXT_TYPE_BROADCAST)
-                    .build();
-
     protected DeviceId deviceId;
 
     public FabricNextPipeliner(DeviceId deviceId) {
@@ -79,7 +59,6 @@
 
     public PipelinerTranslationResult next(NextObjective nextObjective) {
         PipelinerTranslationResult.Builder resultBuilder = PipelinerTranslationResult.builder();
-        processNextIdMapping(nextObjective, resultBuilder);
 
         switch (nextObjective.type()) {
             case SIMPLE:
@@ -97,23 +76,6 @@
         return resultBuilder.build();
     }
 
-    private void processNextIdMapping(NextObjective next,
-                                      PipelinerTranslationResult.Builder resultBuilder) {
-        // program the next id mapping table
-        TrafficSelector nextIdSelector = buildNextIdSelector(next.id());
-        TrafficTreatment setNextTypeTreatment = buildSetNextTypeTreatment(next.type());
-
-        resultBuilder.addFlowRule(DefaultFlowRule.builder()
-                                          .withSelector(nextIdSelector)
-                                          .withTreatment(setNextTypeTreatment)
-                                          .forDevice(deviceId)
-                                          .forTable(TBL_NEXT_ID_MAPPING_ID)
-                                          .makePermanent()
-                                          .withPriority(next.priority())
-                                          .fromApp(next.appId())
-                                          .build());
-    }
-
     private void processSimpleNext(NextObjective next,
                                    PipelinerTranslationResult.Builder resultBuilder) {
 
@@ -165,7 +127,7 @@
 
         GroupBuckets buckets = new GroupBuckets(bucketList);
         PiGroupKey groupKey = new PiGroupKey(TBL_HASHED_ID,
-                                             ACT_PRF_ECMP_SELECTOR_ID,
+                                             ACT_PRF_NEXT_ECMP_SELECTOR_ID,
                                              groupId);
 
         resultBuilder.addGroup(new DefaultGroupDescription(deviceId,
@@ -200,17 +162,4 @@
                 .matchPi(nextIdCriterion)
                 .build();
     }
-
-    private TrafficTreatment buildSetNextTypeTreatment(NextObjective.Type nextType) {
-        byte nextTypeVal = NEXT_TYPE_MAP.getOrDefault(nextType, NXT_TYPE_PUNT);
-        PiActionParam nextTypeParam = new PiActionParam(ACT_PRM_NEXT_TYPE_ID,
-                                                        copyFrom(nextTypeVal));
-        PiAction nextTypeAction = PiAction.builder()
-                .withId(ACT_SET_NEXT_TYPE_ID)
-                .withParameter(nextTypeParam)
-                .build();
-        return DefaultTrafficTreatment.builder()
-                .piTableAction(nextTypeAction)
-                .build();
-    }
 }