diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
index 2e14efa..0860591 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/ofdpa/CpqdOfdpa2Pipeline.java
@@ -855,7 +855,7 @@
         initTableMiss(MPLS_TABLE_1, ACL_TABLE, null);
         initTableMiss(BRIDGING_TABLE, ACL_TABLE, null);
         initTableMiss(ACL_TABLE, -1, null);
-        linkDiscoveryPuntTableRules();
+        initPuntTable();
 
         if (supportPuntGroup()) {
             initPopVlanPuntGroup();
@@ -915,10 +915,11 @@
      * that forward traffic to controller.
      *
      */
-    private void linkDiscoveryPuntTableRules() {
+    private void initPuntTable() {
         FlowRuleOperations.Builder ops = FlowRuleOperations.builder();
         TrafficTreatment treatment =  DefaultTrafficTreatment.builder().punt().build();
 
+        // Add punt rule for LLDP and BDDP
         TrafficSelector.Builder lldpSelector = DefaultTrafficSelector.builder();
         lldpSelector.matchEthType(EthType.EtherType.LLDP.ethType().toShort());
         FlowRule lldpRule = DefaultFlowRule.builder()
@@ -943,14 +944,26 @@
                 .forTable(PUNT_TABLE).build();
         ops.add(bbdpRule);
 
+        // Add table miss flow rule
+        TrafficSelector.Builder defaultSelector = DefaultTrafficSelector.builder();
+        FlowRule defaultRule = DefaultFlowRule.builder()
+                .forDevice(deviceId)
+                .withSelector(defaultSelector.build())
+                .withTreatment(treatment)
+                .withPriority(LOWEST_PRIORITY)
+                .fromApp(driverId)
+                .makePermanent()
+                .forTable(PUNT_TABLE).build();
+        ops.add(defaultRule);
+
         flowRuleService.apply(ops.build(new FlowRuleOperationsContext() {
             @Override
             public void onSuccess(FlowRuleOperations ops) {
-                log.info("Added lldp/bbdp rules for table {} on {}", PUNT_TABLE, deviceId);
+                log.info("Initialized table {} on {}", PUNT_TABLE, deviceId);
             }
             @Override
             public void onError(FlowRuleOperations ops) {
-                log.warn("Failed to initialize lldp/bbdp rules for table {} on {}", PUNT_TABLE, deviceId);
+                log.warn("Failed to initialize table {} on {}", PUNT_TABLE, deviceId);
             }
         }));
     }
