Added ethertype QinQ when double VLAN tagged packets

Double VLAN tagged packets in Mininet uses QinQ Ethertype.

Change-Id: I7c3fa5f1db1ade768e1d998185d9eadded9ebb81
diff --git a/pipelines/fabric/src/main/resources/include/control/next.p4 b/pipelines/fabric/src/main/resources/include/control/next.p4
index 9868339..e7f6e44 100644
--- a/pipelines/fabric/src/main/resources/include/control/next.p4
+++ b/pipelines/fabric/src/main/resources/include/control/next.p4
@@ -299,6 +299,7 @@
         hdr.inner_vlan_tag.vlan_id = fabric_metadata.inner_vlan_id;
         hdr.inner_vlan_tag.eth_type = fabric_metadata.last_eth_type;
         hdr.vlan_tag.eth_type = ETHERTYPE_VLAN;
+        hdr.ethernet.eth_type = ETHERTYPE_QINQ;
     }
 #endif // WITH_DOUBLE_VLAN_TERMINATION
 
diff --git a/pipelines/fabric/src/main/resources/include/parser.p4 b/pipelines/fabric/src/main/resources/include/parser.p4
index 2d6a1d4..3fadebf 100644
--- a/pipelines/fabric/src/main/resources/include/parser.p4
+++ b/pipelines/fabric/src/main/resources/include/parser.p4
@@ -43,6 +43,8 @@
         fabric_metadata.last_eth_type = hdr.ethernet.eth_type;
         fabric_metadata.vlan_id = DEFAULT_VLAN_ID;
         transition select(hdr.ethernet.eth_type){
+            ETHERTYPE_QINQ: parse_vlan_tag;
+            ETHERTYPE_QINQ_NON_STD: parse_vlan_tag;
             ETHERTYPE_VLAN: parse_vlan_tag;
             ETHERTYPE_MPLS: parse_mpls;
             ETHERTYPE_IPV4: pre_parse_ipv4;
@@ -63,8 +65,6 @@
             ETHERTYPE_MPLS: parse_mpls;
 #if defined(WITH_XCONNECT) || defined(WITH_BNG) || defined(WITH_DOUBLE_VLAN_TERMINATION)
             ETHERTYPE_VLAN: parse_inner_vlan_tag;
-            ETHERTYPE_QINQ: parse_inner_vlan_tag;
-            ETHERTYPE_QINQ_NON_STD: parse_inner_vlan_tag;
 #endif // WITH_XCONNECT
             default: accept;
         }