diff --git a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
index 86e8200..b995c2b 100644
--- a/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
+++ b/drivers/default/src/main/java/org/onosproject/driver/pipeline/OltPipeline.java
@@ -451,14 +451,28 @@
 
         Pair<Instruction, Instruction> outerPair = vlanOps.remove(0);
 
+        // Add the VLAN_PUSH treatment if we're matching on VlanId.NONE
+        Criterion vlanMatchCriterion = filterForCriterion(fwd.selector().criteria(), Criterion.Type.VLAN_VID);
+        boolean push = false;
+        if (vlanMatchCriterion != null) {
+            push = ((VlanIdCriterion) vlanMatchCriterion).vlanId().equals(VlanId.NONE);
+        }
+
+        TrafficTreatment treatment;
+        if (push) {
+            treatment = buildTreatment(innerPair.getLeft(), innerPair.getRight(),
+                    Instructions.transition(QQ_TABLE));
+        } else {
+            treatment = buildTreatment(innerPair.getRight(), Instructions.transition(QQ_TABLE));
+        }
+
         FlowRule.Builder inner = DefaultFlowRule.builder()
                 .fromApp(fwd.appId())
                 .forDevice(deviceId)
                 .makePermanent()
                 .withPriority(fwd.priority())
                 .withSelector(fwd.selector())
-                .withTreatment(buildTreatment(innerPair.getRight(),
-                                              Instructions.transition(QQ_TABLE)));
+                .withTreatment(treatment);
 
         PortCriterion inPort = (PortCriterion)
                 fwd.selector().getCriterion(Criterion.Type.IN_PORT);
