Add action in pdrs tables to pass qid parameter

Change-Id: Id3ee76ba1fc659a1e4ca78b21481da1fe823f407
(cherry picked from commit e326c7218f2982378716f6496bf7fbed75ebbd47)
diff --git a/pipelines/fabric/api/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java b/pipelines/fabric/api/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
index 05e738f..00f5590 100644
--- a/pipelines/fabric/api/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
+++ b/pipelines/fabric/api/src/main/java/org/onosproject/pipelines/fabric/FabricConstants.java
@@ -266,6 +266,8 @@
             PiActionId.of("FabricIngress.forwarding.set_next_id_routing_v6");
     public static final PiActionId FABRIC_INGRESS_NEXT_ROUTING_SIMPLE =
             PiActionId.of("FabricIngress.next.routing_simple");
+    public static final PiActionId FABRIC_INGRESS_SPGW_LOAD_PDR_QOS =
+            PiActionId.of("FabricIngress.spgw.load_pdr_qos");
     public static final PiActionId FABRIC_EGRESS_EGRESS_NEXT_PUSH_VLAN =
             PiActionId.of("FabricEgress.egress_next.push_vlan");
     public static final PiActionId FABRIC_EGRESS_BNG_EGRESS_DOWNSTREAM_ENCAP_V4 =
@@ -322,6 +324,7 @@
     public static final PiActionParamId DMAC = PiActionParamId.of("dmac");
     public static final PiActionParamId MON_PORT =
             PiActionParamId.of("mon_port");
+    public static final PiActionParamId QID = PiActionParamId.of("qid");
     public static final PiActionParamId NOTIFY_CP =
             PiActionParamId.of("notify_cp");
     public static final PiActionParamId SRC_IFACE =
diff --git a/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4 b/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
index 00bfd94..a27f9a0 100644
--- a/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/control/spgw.p4
@@ -145,14 +145,22 @@
     //===== PDR Tables ======//
     //=============================//
 
-    action load_pdr(pdr_ctr_id_t ctr_id,
-                    far_id_t far_id,
-                    bit<1> needs_gtpu_decap) {
+    action load_pdr(pdr_ctr_id_t  ctr_id,
+                    far_id_t      far_id,
+                    bit<1>        needs_gtpu_decap) {
         fabric_md.spgw.ctr_id = ctr_id;
         fabric_md.spgw.far_id = far_id;
         fabric_md.spgw.needs_gtpu_decap = (_BOOL)needs_gtpu_decap;
     }
 
+    action load_pdr_qos(pdr_ctr_id_t ctr_id,
+                        far_id_t     far_id,
+                        bit<1>       needs_gtpu_decap,
+                        qid_t        qid) {
+        load_pdr(ctr_id, far_id, needs_gtpu_decap);
+        // we cannot set the qid, since bmv2 does not support it   
+    }
+
     // These two tables scale well and cover the average case PDR
     table downlink_pdrs {
         key = {
@@ -161,6 +169,7 @@
         }
         actions = {
             load_pdr;
+            load_pdr_qos;
         }
         size = MAX_DOWNLINK_PDRS;
     }
@@ -172,6 +181,7 @@
         }
         actions = {
             load_pdr;
+            load_pdr_qos;
         }
         size = MAX_UPLINK_PDRS;
     }
diff --git a/pipelines/fabric/impl/src/main/resources/include/define.p4 b/pipelines/fabric/impl/src/main/resources/include/define.p4
index 8b1fd9d..08487c7 100644
--- a/pipelines/fabric/impl/src/main/resources/include/define.p4
+++ b/pipelines/fabric/impl/src/main/resources/include/define.p4
@@ -104,6 +104,7 @@
 typedef bit<32> far_id_t;
 typedef bit<32> pdr_ctr_id_t;
 typedef bit<32> teid_t;
+typedef bit<5> qid_t;
 
 const spgw_interface_t SPGW_IFACE_UNKNOWN = 8w0;
 const spgw_interface_t SPGW_IFACE_ACCESS = 8w1;
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
index 9086045..78933e1 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-bng/bmv2/default/bmv2.json
@@ -1475,7 +1475,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3193,7 +3193,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 123,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -3364,7 +3364,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 124,
+            "line" : 125,
             "column" : 35,
             "source_fragment" : "0x0021; ..."
           }
@@ -3522,7 +3522,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -3601,7 +3601,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3718,7 +3718,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3737,7 +3737,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -3816,7 +3816,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
index 7ff2d8a..473ae1e 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/bmv2.json
@@ -2066,7 +2066,7 @@
       "id" : 23,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 286,
+        "line" : 296,
         "column" : 53,
         "source_fragment" : "pdr_counter"
       },
@@ -2142,7 +2142,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
@@ -2589,7 +2589,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -2649,7 +2649,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 119,
+            "line" : 120,
             "column" : 31,
             "source_fragment" : "0x86dd; ..."
           }
@@ -4039,7 +4039,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4258,7 +4258,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4462,7 +4462,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4681,7 +4681,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4866,7 +4866,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -5085,7 +5085,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -5289,7 +5289,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -5508,7 +5508,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -5753,7 +5753,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 108,
+            "line" : 109,
             "column" : 44,
             "source_fragment" : "8w0; ..."
           }
@@ -5984,16 +5984,24 @@
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_normal_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 66,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -6002,38 +6010,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id28"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 0
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 186,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
           }
         },
         {
@@ -6041,38 +6029,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id29"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 1
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 187,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
           }
         },
         {
@@ -6080,7 +6048,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc32"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap34"]
             },
             {
               "type" : "expression",
@@ -6095,7 +6063,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 1
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6109,40 +6077,32 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 188,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
+            "line" : 153,
+            "column" : 40,
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 67,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
-        },
-        {
-          "name" : "tunnel_src_port",
-          "bitwidth" : 16
-        },
-        {
-          "name" : "tunnel_src_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "tunnel_dst_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "teid",
-          "bitwidth" : 32
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -6151,7 +6111,45 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id28"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id29"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap34"]
             },
             {
               "type" : "expression",
@@ -6166,7 +6164,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 0
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -6180,274 +6178,15 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 198,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc32"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 1
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 199,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap33"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 153,
             "column" : 40,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid24"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 5
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 202,
-            "column" : 28,
-            "source_fragment" : "= teid; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port25"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 203,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr26"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 204,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr27"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 205,
-            "column" : 39,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr19"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 207,
-            "column" : 32,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr20"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 208,
-            "column" : 32,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 209,
-            "column" : 27,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x0868"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 210,
-            "column" : 27,
-            "source_fragment" : "= 2152; ..."
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "name" : "FabricIngress.spgw.load_normal_far",
       "id" : 68,
       "runtime_data" : [
         {
@@ -6457,6 +6196,139 @@
         {
           "name" : "notify_cp",
           "bitwidth" : 1
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 196,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 197,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc32"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 198,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "id" : 69,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
         },
         {
           "name" : "tunnel_src_port",
@@ -6510,7 +6382,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
+            "line" : 207,
             "column" : 34,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -6549,7 +6421,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 198,
+            "line" : 208,
             "column" : 28,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -6588,7 +6460,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 199,
+            "line" : 209,
             "column" : 36,
             "source_fragment" : "= (bool)notify_cp; ..."
           }
@@ -6617,7 +6489,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 211,
             "column" : 40,
             "source_fragment" : "= true; ..."
           }
@@ -6636,7 +6508,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 202,
+            "line" : 212,
             "column" : 28,
             "source_fragment" : "= teid; ..."
           }
@@ -6655,7 +6527,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 203,
+            "line" : 213,
             "column" : 39,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -6674,7 +6546,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 204,
+            "line" : 214,
             "column" : 39,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -6693,7 +6565,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 205,
+            "line" : 215,
             "column" : 39,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -6712,7 +6584,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 207,
+            "line" : 217,
             "column" : 32,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -6731,7 +6603,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 208,
+            "line" : 218,
             "column" : 32,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -6750,7 +6622,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 209,
+            "line" : 219,
             "column" : 27,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -6769,7 +6641,337 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 210,
+            "line" : 220,
+            "column" : 27,
+            "source_fragment" : "= 2152; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "id" : 70,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "tunnel_src_port",
+          "bitwidth" : 16
+        },
+        {
+          "name" : "tunnel_src_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "tunnel_dst_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "teid",
+          "bitwidth" : 32
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding10"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 207,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next11"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 208,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc32"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 209,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap33"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 211,
+            "column" : 40,
+            "source_fragment" : "= true; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid24"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 5
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 212,
+            "column" : 28,
+            "source_fragment" : "= teid; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port25"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 213,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr26"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 214,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr27"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 215,
+            "column" : 39,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr19"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 217,
+            "column" : 32,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr20"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 218,
+            "column" : 32,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_sport17"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 219,
+            "column" : 27,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_dport18"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0868"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 220,
             "column" : 27,
             "source_fragment" : "= 2152; ..."
           }
@@ -6798,7 +7000,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 221,
+            "line" : 231,
             "column" : 43,
             "source_fragment" : "= true; ..."
           }
@@ -6807,7 +7009,7 @@
     },
     {
       "name" : "act",
-      "id" : 69,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6887,7 +7089,7 @@
     },
     {
       "name" : "act_0",
-      "id" : 70,
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6917,7 +7119,7 @@
     },
     {
       "name" : "act_1",
-      "id" : 71,
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6947,7 +7149,7 @@
     },
     {
       "name" : "act_2",
-      "id" : 72,
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6964,7 +7166,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -6973,7 +7175,7 @@
     },
     {
       "name" : "act_3",
-      "id" : 73,
+      "id" : 75,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6990,7 +7192,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "= hdr.ipv4.total_len; ..."
           }
@@ -6999,7 +7201,7 @@
     },
     {
       "name" : "act_4",
-      "id" : 74,
+      "id" : 76,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7063,7 +7265,7 @@
     },
     {
       "name" : "act_5",
-      "id" : 75,
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7127,7 +7329,7 @@
     },
     {
       "name" : "act_6",
-      "id" : 76,
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7153,7 +7355,7 @@
     },
     {
       "name" : "act_7",
-      "id" : 77,
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7211,7 +7413,7 @@
     },
     {
       "name" : "act_8",
-      "id" : 78,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7269,7 +7471,7 @@
     },
     {
       "name" : "act_9",
-      "id" : 79,
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7295,7 +7497,7 @@
     },
     {
       "name" : "act_10",
-      "id" : 80,
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7325,7 +7527,7 @@
     },
     {
       "name" : "act_11",
-      "id" : 81,
+      "id" : 83,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7355,7 +7557,7 @@
     },
     {
       "name" : "act_12",
-      "id" : 82,
+      "id" : 84,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7404,7 +7606,7 @@
     },
     {
       "name" : "act_13",
-      "id" : 83,
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7440,7 +7642,7 @@
     },
     {
       "name" : "act_14",
-      "id" : 84,
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7466,7 +7668,7 @@
     },
     {
       "name" : "act_15",
-      "id" : 85,
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7492,7 +7694,7 @@
     },
     {
       "name" : "act_16",
-      "id" : 86,
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7551,7 +7753,7 @@
     },
     {
       "name" : "act_17",
-      "id" : 87,
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7581,7 +7783,7 @@
     },
     {
       "name" : "act_18",
-      "id" : 88,
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7611,7 +7813,7 @@
     },
     {
       "name" : "act_19",
-      "id" : 89,
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7641,7 +7843,7 @@
     },
     {
       "name" : "act_20",
-      "id" : 90,
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7671,7 +7873,7 @@
     },
     {
       "name" : "act_21",
-      "id" : 91,
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7701,7 +7903,7 @@
     },
     {
       "name" : "act_22",
-      "id" : 92,
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7731,38 +7933,38 @@
     },
     {
       "name" : "nop",
-      "id" : 93,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 94,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
       "id" : 95,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "NoAction",
+      "name" : "nop",
       "id" : 96,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "NoAction",
+      "name" : "nop",
       "id" : 97,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "FabricEgress.bng_egress.downstream.encap_v4",
+      "name" : "NoAction",
       "id" : 98,
       "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 99,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.bng_egress.downstream.encap_v4",
+      "id" : 100,
+      "runtime_data" : [],
       "primitives" : [
         {
           "op" : "assign",
@@ -7778,7 +7980,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 123,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -7949,7 +8151,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 124,
+            "line" : 125,
             "column" : 35,
             "source_fragment" : "0x0021; ..."
           }
@@ -7958,7 +8160,7 @@
     },
     {
       "name" : "FabricEgress.bng_egress.downstream.encap_v6",
-      "id" : 99,
+      "id" : 101,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7975,7 +8177,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 122,
+            "line" : 123,
             "column" : 33,
             "source_fragment" : "0x8864; ..."
           }
@@ -8146,7 +8348,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 125,
+            "line" : 126,
             "column" : 35,
             "source_fragment" : "0x0057; ..."
           }
@@ -8155,7 +8357,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
-      "id" : 100,
+      "id" : 102,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -8223,7 +8425,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 155,
+            "line" : 156,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -8641,7 +8843,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 152,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -8650,7 +8852,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 101,
+      "id" : 103,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -8710,13 +8912,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 102,
+      "id" : 104,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 103,
+      "id" : 105,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8873,7 +9075,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 104,
+      "id" : 106,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8998,7 +9200,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 105,
+      "id" : 107,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9189,7 +9391,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 106,
+      "id" : 108,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9359,7 +9561,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
-      "id" : 107,
+      "id" : 109,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9595,7 +9797,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
-      "id" : 108,
+      "id" : 110,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9799,7 +10001,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
-      "id" : 109,
+      "id" : 111,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10069,7 +10271,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 110,
+      "id" : 112,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10194,7 +10396,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
-      "id" : 111,
+      "id" : 113,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10385,7 +10587,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
-      "id" : 112,
+      "id" : 114,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10544,7 +10746,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
-      "id" : 113,
+      "id" : 115,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10769,7 +10971,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 114,
+      "id" : 116,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10973,7 +11175,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
-      "id" : 115,
+      "id" : 117,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11243,7 +11445,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
-      "id" : 116,
+      "id" : 118,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11481,7 +11683,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
-      "id" : 117,
+      "id" : 119,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11785,13 +11987,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 118,
+      "id" : 120,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 119,
+      "id" : 121,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11916,7 +12118,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 120,
+      "id" : 122,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12060,7 +12262,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 121,
+      "id" : 123,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12238,7 +12440,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 122,
+      "id" : 124,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12386,7 +12588,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
-      "id" : 123,
+      "id" : 125,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12568,7 +12770,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
-      "id" : 124,
+      "id" : 126,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12769,7 +12971,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
-      "id" : 125,
+      "id" : 127,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13004,7 +13206,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 126,
+      "id" : 128,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13129,7 +13331,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
-      "id" : 127,
+      "id" : 129,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13288,7 +13490,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
-      "id" : 128,
+      "id" : 130,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13466,7 +13668,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
-      "id" : 129,
+      "id" : 131,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13678,7 +13880,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 130,
+      "id" : 132,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13860,7 +14062,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
-      "id" : 131,
+      "id" : 133,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14076,7 +14278,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
-      "id" : 132,
+      "id" : 134,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14311,7 +14513,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
-      "id" : 133,
+      "id" : 135,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -14580,7 +14782,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_report.do_report_encapsulation",
-      "id" : 134,
+      "id" : 136,
       "runtime_data" : [
         {
           "name" : "src_mac",
@@ -14686,7 +14888,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -14914,7 +15116,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 130,
+            "line" : 131,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -15100,7 +15302,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 161,
+            "line" : 162,
             "column" : 31,
             "source_fragment" : "0; ..."
           }
@@ -15195,7 +15397,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 165,
+            "line" : 166,
             "column" : 21,
             "source_fragment" : "1; ..."
           }
@@ -15242,7 +15444,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_sink.restore_header",
-      "id" : 135,
+      "id" : 137,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15287,7 +15489,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_sink.int_sink",
-      "id" : 136,
+      "id" : 138,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15618,7 +15820,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 137,
+      "id" : 139,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15659,7 +15861,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 138,
+      "id" : 140,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15767,7 +15969,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -15776,7 +15978,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_outer_vlan",
-      "id" : 139,
+      "id" : 141,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15846,7 +16048,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15874,7 +16076,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_inner_vlan",
-      "id" : 140,
+      "id" : 142,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -15963,7 +16165,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15982,7 +16184,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -15991,7 +16193,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 141,
+      "id" : 143,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16061,7 +16263,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -16089,7 +16291,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 142,
+      "id" : 144,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16111,7 +16313,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 143,
+      "id" : 145,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16133,7 +16335,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 144,
+      "id" : 146,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16146,7 +16348,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 291,
+            "line" : 301,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.setValid()"
           }
@@ -16165,7 +16367,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 292,
+            "line" : 302,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.version = 4"
           }
@@ -16184,7 +16386,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 133,
+            "line" : 134,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -16203,7 +16405,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 294,
+            "line" : 304,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dscp = 0"
           }
@@ -16222,7 +16424,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 295,
+            "line" : 305,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.ecn = 0"
           }
@@ -16264,7 +16466,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 296,
+            "line" : 306,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.total_len = hdr.ipv4.total_len ..."
           }
@@ -16283,7 +16485,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 298,
+            "line" : 308,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.identification = 0x1513"
           }
@@ -16302,7 +16504,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 299,
+            "line" : 309,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.flags = 0"
           }
@@ -16321,7 +16523,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 300,
+            "line" : 310,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.frag_offset = 0"
           }
@@ -16340,7 +16542,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 146,
+            "line" : 147,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -16359,7 +16561,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 130,
+            "line" : 131,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -16378,7 +16580,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 303,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.src_addr = fabric_md.spgw.tunnel_src_addr; ..."
           }
@@ -16397,7 +16599,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 304,
+            "line" : 314,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dst_addr = fabric_md.spgw.tunnel_dst_addr; ..."
           }
@@ -16416,7 +16618,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 305,
+            "line" : 315,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.hdr_checksum = 0"
           }
@@ -16431,7 +16633,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 307,
+            "line" : 317,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.setValid()"
           }
@@ -16450,7 +16652,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 308,
+            "line" : 318,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.sport = fabric_md.spgw.tunnel_src_port; ..."
           }
@@ -16469,7 +16671,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 309,
+            "line" : 319,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.dport = 2152"
           }
@@ -16511,7 +16713,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 310,
+            "line" : 320,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.len = fabric_md.spgw.ipv4_len ..."
           }
@@ -16530,7 +16732,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 312,
+            "line" : 322,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.checksum = 0"
           }
@@ -16545,7 +16747,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 315,
+            "line" : 325,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.setValid()"
           }
@@ -16564,7 +16766,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 316,
+            "line" : 326,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.version = 0x01"
           }
@@ -16583,7 +16785,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 317,
+            "line" : 327,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.pt = 0x01"
           }
@@ -16602,7 +16804,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 318,
+            "line" : 328,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.spare = 0"
           }
@@ -16621,7 +16823,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 319,
+            "line" : 329,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.ex_flag = 0"
           }
@@ -16640,7 +16842,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 320,
+            "line" : 330,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.seq_flag = 0"
           }
@@ -16659,7 +16861,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 321,
+            "line" : 331,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.npdu_flag = 0"
           }
@@ -16678,7 +16880,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 322,
+            "line" : 332,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msgtype = 0xff"
           }
@@ -16697,7 +16899,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 323,
+            "line" : 333,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msglen = fabric_md.spgw.ipv4_len; ..."
           }
@@ -16716,7 +16918,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 324,
+            "line" : 334,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.teid = fabric_md.spgw.teid; ..."
           }
@@ -16725,7 +16927,7 @@
     },
     {
       "name" : "act_23",
-      "id" : 145,
+      "id" : 147,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16742,7 +16944,7 @@
     },
     {
       "name" : "act_24",
-      "id" : 146,
+      "id" : 148,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16793,7 +16995,7 @@
     },
     {
       "name" : "act_25",
-      "id" : 147,
+      "id" : 149,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16815,7 +17017,7 @@
     },
     {
       "name" : "act_26",
-      "id" : 148,
+      "id" : 150,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16837,7 +17039,7 @@
     },
     {
       "name" : "act_27",
-      "id" : 149,
+      "id" : 151,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16859,7 +17061,7 @@
     },
     {
       "name" : "act_28",
-      "id" : 150,
+      "id" : 152,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16908,7 +17110,7 @@
     },
     {
       "name" : "act_29",
-      "id" : 151,
+      "id" : 153,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16930,7 +17132,7 @@
     },
     {
       "name" : "act_30",
-      "id" : 152,
+      "id" : 154,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -16979,7 +17181,7 @@
     },
     {
       "name" : "act_31",
-      "id" : 153,
+      "id" : 155,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17001,7 +17203,7 @@
     },
     {
       "name" : "act_32",
-      "id" : 154,
+      "id" : 156,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17050,7 +17252,7 @@
     },
     {
       "name" : "act_33",
-      "id" : 155,
+      "id" : 157,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17067,7 +17269,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -17076,7 +17278,7 @@
     },
     {
       "name" : "act_34",
-      "id" : 156,
+      "id" : 158,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17106,7 +17308,7 @@
     },
     {
       "name" : "act_35",
-      "id" : 157,
+      "id" : 159,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17142,7 +17344,7 @@
     },
     {
       "name" : "act_36",
-      "id" : 158,
+      "id" : 160,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17191,7 +17393,7 @@
     },
     {
       "name" : "act_37",
-      "id" : 159,
+      "id" : 161,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17240,7 +17442,7 @@
     },
     {
       "name" : "act_38",
-      "id" : 160,
+      "id" : 162,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17289,7 +17491,7 @@
     },
     {
       "name" : "act_39",
-      "id" : 161,
+      "id" : 163,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -17365,14 +17567,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [69],
+          "action_ids" : [71],
           "actions" : ["act"],
           "base_default_next" : "FabricIngress.spgw.interfaces",
           "next_tables" : {
             "act" : "FabricIngress.spgw.interfaces"
           },
           "default_entry" : {
-            "action_id" : 69,
+            "action_id" : 71,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17431,14 +17633,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [70],
+          "action_ids" : [72],
           "actions" : ["act_0"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_0" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 70,
+            "action_id" : 72,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17454,14 +17656,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [71],
+          "action_ids" : [73],
           "actions" : ["act_1"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_1" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 71,
+            "action_id" : 73,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17606,7 +17808,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 168,
+            "line" : 177,
             "column" : 10,
             "source_fragment" : "uplink_pdrs"
           },
@@ -17630,11 +17832,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65, 14],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [65, 67, 14],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -17649,7 +17852,7 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 157,
+            "line" : 165,
             "column" : 10,
             "source_fragment" : "downlink_pdrs"
           },
@@ -17667,11 +17870,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64, 13],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [64, 66, 13],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -17686,7 +17890,7 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -17697,14 +17901,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [72],
+          "action_ids" : [74],
           "actions" : ["act_2"],
           "base_default_next" : "node_15",
           "next_tables" : {
             "act_2" : "node_15"
           },
           "default_entry" : {
-            "action_id" : 72,
+            "action_id" : 74,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17849,7 +18053,7 @@
           "id" : 9,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 224,
+            "line" : 234,
             "column" : 10,
             "source_fragment" : "fars"
           },
@@ -17867,7 +18071,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [66, 67, 68],
+          "action_ids" : [68, 69, 70],
           "actions" : ["FabricIngress.spgw.load_normal_far", "FabricIngress.spgw.load_tunnel_far", "FabricIngress.spgw.load_dbuf_far"],
           "base_default_next" : "tbl_act_3",
           "next_tables" : {
@@ -17876,7 +18080,7 @@
             "FabricIngress.spgw.load_dbuf_far" : "tbl_act_3"
           },
           "default_entry" : {
-            "action_id" : 66,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : ["0x1", "0x0"],
             "action_entry_const" : true
@@ -17887,7 +18091,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "="
           },
@@ -17898,14 +18102,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [73],
+          "action_ids" : [75],
           "actions" : ["act_3"],
           "base_default_next" : "node_19",
           "next_tables" : {
             "act_3" : "node_19"
           },
           "default_entry" : {
-            "action_id" : 73,
+            "action_id" : 75,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17927,14 +18131,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [74],
+          "action_ids" : [76],
           "actions" : ["act_4"],
           "base_default_next" : "node_21",
           "next_tables" : {
             "act_4" : "node_21"
           },
           "default_entry" : {
-            "action_id" : 74,
+            "action_id" : 76,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17956,14 +18160,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [75],
+          "action_ids" : [77],
           "actions" : ["act_5"],
           "base_default_next" : "node_23",
           "next_tables" : {
             "act_5" : "node_23"
           },
           "default_entry" : {
-            "action_id" : 75,
+            "action_id" : 77,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -17985,14 +18189,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [76],
+          "action_ids" : [78],
           "actions" : ["act_6"],
           "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
           "next_tables" : {
             "act_6" : "FabricIngress.filtering.ingress_port_vlan"
           },
           "default_entry" : {
-            "action_id" : 76,
+            "action_id" : 78,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18577,14 +18781,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77],
+          "action_ids" : [79],
           "actions" : ["act_7"],
           "base_default_next" : "node_45",
           "next_tables" : {
             "act_7" : "node_45"
           },
           "default_entry" : {
-            "action_id" : 77,
+            "action_id" : 79,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18606,14 +18810,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [78],
+          "action_ids" : [80],
           "actions" : ["act_8"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
             "act_8" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 78,
+            "action_id" : 80,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18709,14 +18913,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [79],
+          "action_ids" : [81],
           "actions" : ["act_9"],
           "base_default_next" : "FabricIngress.bng_ingress.t_line_map",
           "next_tables" : {
             "act_9" : "FabricIngress.bng_ingress.t_line_map"
           },
           "default_entry" : {
-            "action_id" : 79,
+            "action_id" : 81,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18780,14 +18984,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [82],
+          "action_ids" : [84],
           "actions" : ["act_12"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp",
           "next_tables" : {
             "act_12" : "FabricIngress.bng_ingress.upstream.t_pppoe_cp"
           },
           "default_entry" : {
-            "action_id" : 82,
+            "action_id" : 84,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18846,14 +19050,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [80],
+          "action_ids" : [82],
           "actions" : ["act_10"],
           "base_default_next" : "node_57",
           "next_tables" : {
             "act_10" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 80,
+            "action_id" : 82,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18869,14 +19073,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [81],
+          "action_ids" : [83],
           "actions" : ["act_11"],
           "base_default_next" : "node_57",
           "next_tables" : {
             "act_11" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 81,
+            "action_id" : 83,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18898,14 +19102,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [83],
+          "action_ids" : [85],
           "actions" : ["act_13"],
           "base_default_next" : "node_59",
           "next_tables" : {
             "act_13" : "node_59"
           },
           "default_entry" : {
-            "action_id" : 83,
+            "action_id" : 85,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -18976,14 +19180,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [84],
+          "action_ids" : [86],
           "actions" : ["act_14"],
           "base_default_next" : null,
           "next_tables" : {
             "act_14" : null
           },
           "default_entry" : {
-            "action_id" : 84,
+            "action_id" : 86,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19005,14 +19209,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [86],
+          "action_ids" : [88],
           "actions" : ["act_16"],
           "base_default_next" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6",
           "next_tables" : {
             "act_16" : "FabricIngress.bng_ingress.upstream.t_pppoe_term_v6"
           },
           "default_entry" : {
-            "action_id" : 86,
+            "action_id" : 88,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19083,14 +19287,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [85],
+          "action_ids" : [87],
           "actions" : ["act_15"],
           "base_default_next" : null,
           "next_tables" : {
             "act_15" : null
           },
           "default_entry" : {
-            "action_id" : 85,
+            "action_id" : 87,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19143,14 +19347,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [87],
+          "action_ids" : [89],
           "actions" : ["act_17"],
           "base_default_next" : "node_70",
           "next_tables" : {
             "act_17" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 87,
+            "action_id" : 89,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19166,14 +19370,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [88],
+          "action_ids" : [90],
           "actions" : ["act_18"],
           "base_default_next" : "node_70",
           "next_tables" : {
             "act_18" : "node_70"
           },
           "default_entry" : {
-            "action_id" : 88,
+            "action_id" : 90,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19250,14 +19454,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [89],
+          "action_ids" : [91],
           "actions" : ["act_19"],
           "base_default_next" : null,
           "next_tables" : {
             "act_19" : null
           },
           "default_entry" : {
-            "action_id" : 89,
+            "action_id" : 91,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19279,14 +19483,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [90],
+          "action_ids" : [92],
           "actions" : ["act_20"],
           "base_default_next" : null,
           "next_tables" : {
             "act_20" : null
           },
           "default_entry" : {
-            "action_id" : 90,
+            "action_id" : 92,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19357,14 +19561,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [91],
+          "action_ids" : [93],
           "actions" : ["act_21"],
           "base_default_next" : null,
           "next_tables" : {
             "act_21" : null
           },
           "default_entry" : {
-            "action_id" : 91,
+            "action_id" : 93,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19386,14 +19590,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [92],
+          "action_ids" : [94],
           "actions" : ["act_22"],
           "base_default_next" : null,
           "next_tables" : {
             "act_22" : null
           },
           "default_entry" : {
-            "action_id" : 92,
+            "action_id" : 94,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -19484,7 +19688,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 246,
+            "line" : 256,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface == SPGW_IFACE_FROM_DBUF"
           },
@@ -19510,7 +19714,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 250,
+            "line" : 260,
             "column" : 16,
             "source_fragment" : "hdr.gtpu.isValid()"
           },
@@ -19533,7 +19737,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 255,
+            "line" : 265,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface != SPGW_IFACE_FROM_DBUF"
           },
@@ -19559,7 +19763,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 260,
+            "line" : 270,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_decap == true"
           },
@@ -20120,14 +20324,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [145],
+          "action_ids" : [147],
           "actions" : ["act_23"],
           "base_default_next" : "node_83",
           "next_tables" : {
             "act_23" : "node_83"
           },
           "default_entry" : {
-            "action_id" : 145,
+            "action_id" : 147,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20149,14 +20353,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [146],
+          "action_ids" : [148],
           "actions" : ["act_24"],
           "base_default_next" : "node_85",
           "next_tables" : {
             "act_24" : "node_85"
           },
           "default_entry" : {
-            "action_id" : 146,
+            "action_id" : 148,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20178,14 +20382,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [147],
+          "action_ids" : [149],
           "actions" : ["act_25"],
           "base_default_next" : "node_87",
           "next_tables" : {
             "act_25" : "node_87"
           },
           "default_entry" : {
-            "action_id" : 147,
+            "action_id" : 149,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20207,14 +20411,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [137],
+          "action_ids" : [139],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "node_91",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "node_91"
           },
           "default_entry" : {
-            "action_id" : 137,
+            "action_id" : 139,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20236,14 +20440,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [138],
+          "action_ids" : [140],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "node_91",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "node_91"
           },
           "default_entry" : {
-            "action_id" : 138,
+            "action_id" : 140,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20265,14 +20469,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [139],
+          "action_ids" : [141],
           "actions" : ["FabricEgress.egress_next.push_outer_vlan"],
           "base_default_next" : "tbl_egress_next_push_inner_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.push_outer_vlan" : "tbl_egress_next_push_inner_vlan"
           },
           "default_entry" : {
-            "action_id" : 139,
+            "action_id" : 141,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20294,14 +20498,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [140],
+          "action_ids" : [142],
           "actions" : ["FabricEgress.egress_next.push_inner_vlan"],
           "base_default_next" : "node_96",
           "next_tables" : {
             "FabricEgress.egress_next.push_inner_vlan" : "node_96"
           },
           "default_entry" : {
-            "action_id" : 140,
+            "action_id" : 142,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20323,14 +20527,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [148],
+          "action_ids" : [150],
           "actions" : ["act_26"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "act_26" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 148,
+            "action_id" : 150,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20365,7 +20569,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [141, 142, 143],
+          "action_ids" : [143, 144, 145],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
           "base_default_next" : "node_96",
           "next_tables" : {
@@ -20374,7 +20578,7 @@
             "FabricEgress.egress_next.drop" : "node_96"
           },
           "default_entry" : {
-            "action_id" : 143,
+            "action_id" : 145,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20396,14 +20600,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [150],
+          "action_ids" : [152],
           "actions" : ["act_28"],
           "base_default_next" : "node_98",
           "next_tables" : {
             "act_28" : "node_98"
           },
           "default_entry" : {
-            "action_id" : 150,
+            "action_id" : 152,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20425,14 +20629,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [149],
+          "action_ids" : [151],
           "actions" : ["act_27"],
           "base_default_next" : "node_108",
           "next_tables" : {
             "act_27" : "node_108"
           },
           "default_entry" : {
-            "action_id" : 149,
+            "action_id" : 151,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20454,14 +20658,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [152],
+          "action_ids" : [154],
           "actions" : ["act_30"],
           "base_default_next" : "node_102",
           "next_tables" : {
             "act_30" : "node_102"
           },
           "default_entry" : {
-            "action_id" : 152,
+            "action_id" : 154,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20483,14 +20687,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [151],
+          "action_ids" : [153],
           "actions" : ["act_29"],
           "base_default_next" : "node_108",
           "next_tables" : {
             "act_29" : "node_108"
           },
           "default_entry" : {
-            "action_id" : 151,
+            "action_id" : 153,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20512,14 +20716,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [154],
+          "action_ids" : [156],
           "actions" : ["act_32"],
           "base_default_next" : "node_106",
           "next_tables" : {
             "act_32" : "node_106"
           },
           "default_entry" : {
-            "action_id" : 154,
+            "action_id" : 156,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20541,14 +20745,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [153],
+          "action_ids" : [155],
           "actions" : ["act_31"],
           "base_default_next" : "node_108",
           "next_tables" : {
             "act_31" : "node_108"
           },
           "default_entry" : {
-            "action_id" : 153,
+            "action_id" : 155,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20559,7 +20763,7 @@
           "id" : 66,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 330,
+            "line" : 340,
             "column" : 16,
             "source_fragment" : "gtpu_encap()"
           },
@@ -20570,14 +20774,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [144],
+          "action_ids" : [146],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
           "base_default_next" : "node_111",
           "next_tables" : {
             "FabricEgress.spgw.gtpu_encap" : "node_111"
           },
           "default_entry" : {
-            "action_id" : 144,
+            "action_id" : 146,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20588,7 +20792,7 @@
           "id" : 67,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -20599,14 +20803,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [155],
+          "action_ids" : [157],
           "actions" : ["act_33"],
           "base_default_next" : "node_113",
           "next_tables" : {
             "act_33" : "node_113"
           },
           "default_entry" : {
-            "action_id" : 155,
+            "action_id" : 157,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20628,14 +20832,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [98],
+          "action_ids" : [100],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v4"],
           "base_default_next" : "node_118",
           "next_tables" : {
             "FabricEgress.bng_egress.downstream.encap_v4" : "node_118"
           },
           "default_entry" : {
-            "action_id" : 98,
+            "action_id" : 100,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20657,14 +20861,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [99],
+          "action_ids" : [101],
           "actions" : ["FabricEgress.bng_egress.downstream.encap_v6"],
           "base_default_next" : "node_118",
           "next_tables" : {
             "FabricEgress.bng_egress.downstream.encap_v6" : "node_118"
           },
           "default_entry" : {
-            "action_id" : 99,
+            "action_id" : 101,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20711,7 +20915,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [100, 93],
+          "action_ids" : [102, 95],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
           "base_default_next" : "node_121",
           "next_tables" : {
@@ -20719,7 +20923,7 @@
             "nop" : "node_121"
           },
           "default_entry" : {
-            "action_id" : 93,
+            "action_id" : 95,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20735,14 +20939,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [156],
+          "action_ids" : [158],
           "actions" : ["act_34"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
             "act_34" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 156,
+            "action_id" : 158,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20771,7 +20975,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [101, 94],
+          "action_ids" : [103, 96],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
           "base_default_next" : "node_124",
           "next_tables" : {
@@ -20779,7 +20983,7 @@
             "nop" : "node_124"
           },
           "default_entry" : {
-            "action_id" : 94,
+            "action_id" : 96,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20801,14 +21005,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [157],
+          "action_ids" : [159],
           "actions" : ["act_35"],
           "base_default_next" : "node_126",
           "next_tables" : {
             "act_35" : "node_126"
           },
           "default_entry" : {
-            "action_id" : 157,
+            "action_id" : 159,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -20837,7 +21041,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 96],
+          "action_ids" : [104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 98],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15", "NoAction"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
           "next_tables" : {
@@ -20860,7 +21064,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 96,
+            "action_id" : 98,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -20880,7 +21084,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 102,
+                "action_id" : 104,
                 "action_data" : []
               },
               "priority" : 1
@@ -20899,7 +21103,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 103,
+                "action_id" : 105,
                 "action_data" : []
               },
               "priority" : 2
@@ -20918,7 +21122,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 104,
+                "action_id" : 106,
                 "action_data" : []
               },
               "priority" : 3
@@ -20937,7 +21141,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 105,
+                "action_id" : 107,
                 "action_data" : []
               },
               "priority" : 4
@@ -20956,7 +21160,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 106,
+                "action_id" : 108,
                 "action_data" : []
               },
               "priority" : 5
@@ -20975,7 +21179,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 107,
+                "action_id" : 109,
                 "action_data" : []
               },
               "priority" : 6
@@ -20994,7 +21198,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 108,
+                "action_id" : 110,
                 "action_data" : []
               },
               "priority" : 7
@@ -21013,7 +21217,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 109,
+                "action_id" : 111,
                 "action_data" : []
               },
               "priority" : 8
@@ -21032,7 +21236,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 110,
+                "action_id" : 112,
                 "action_data" : []
               },
               "priority" : 9
@@ -21051,7 +21255,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 111,
+                "action_id" : 113,
                 "action_data" : []
               },
               "priority" : 10
@@ -21070,7 +21274,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 112,
+                "action_id" : 114,
                 "action_data" : []
               },
               "priority" : 11
@@ -21089,7 +21293,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 113,
+                "action_id" : 115,
                 "action_data" : []
               },
               "priority" : 12
@@ -21108,7 +21312,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 114,
+                "action_id" : 116,
                 "action_data" : []
               },
               "priority" : 13
@@ -21127,7 +21331,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 115,
+                "action_id" : 117,
                 "action_data" : []
               },
               "priority" : 14
@@ -21146,7 +21350,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 116,
+                "action_id" : 118,
                 "action_data" : []
               },
               "priority" : 15
@@ -21165,7 +21369,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 117,
+                "action_id" : 119,
                 "action_data" : []
               },
               "priority" : 16
@@ -21195,7 +21399,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 97],
+          "action_ids" : [120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 99],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15", "NoAction"],
           "base_default_next" : "tbl_act_36",
           "next_tables" : {
@@ -21218,7 +21422,7 @@
             "NoAction" : "tbl_act_36"
           },
           "default_entry" : {
-            "action_id" : 97,
+            "action_id" : 99,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -21238,7 +21442,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 118,
+                "action_id" : 120,
                 "action_data" : []
               },
               "priority" : 1
@@ -21257,7 +21461,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 119,
+                "action_id" : 121,
                 "action_data" : []
               },
               "priority" : 2
@@ -21276,7 +21480,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 120,
+                "action_id" : 122,
                 "action_data" : []
               },
               "priority" : 3
@@ -21295,7 +21499,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 121,
+                "action_id" : 123,
                 "action_data" : []
               },
               "priority" : 4
@@ -21314,7 +21518,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 122,
+                "action_id" : 124,
                 "action_data" : []
               },
               "priority" : 5
@@ -21333,7 +21537,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 123,
+                "action_id" : 125,
                 "action_data" : []
               },
               "priority" : 6
@@ -21352,7 +21556,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 124,
+                "action_id" : 126,
                 "action_data" : []
               },
               "priority" : 7
@@ -21371,7 +21575,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 125,
+                "action_id" : 127,
                 "action_data" : []
               },
               "priority" : 8
@@ -21390,7 +21594,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 126,
+                "action_id" : 128,
                 "action_data" : []
               },
               "priority" : 9
@@ -21409,7 +21613,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 127,
+                "action_id" : 129,
                 "action_data" : []
               },
               "priority" : 10
@@ -21428,7 +21632,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 128,
+                "action_id" : 130,
                 "action_data" : []
               },
               "priority" : 11
@@ -21447,7 +21651,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 129,
+                "action_id" : 131,
                 "action_data" : []
               },
               "priority" : 12
@@ -21466,7 +21670,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 130,
+                "action_id" : 132,
                 "action_data" : []
               },
               "priority" : 13
@@ -21485,7 +21689,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 131,
+                "action_id" : 133,
                 "action_data" : []
               },
               "priority" : 14
@@ -21504,7 +21708,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 132,
+                "action_id" : 134,
                 "action_data" : []
               },
               "priority" : 15
@@ -21523,7 +21727,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 133,
+                "action_id" : 135,
                 "action_data" : []
               },
               "priority" : 16
@@ -21546,14 +21750,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [159],
+          "action_ids" : [161],
           "actions" : ["act_37"],
           "base_default_next" : "node_130",
           "next_tables" : {
             "act_37" : "node_130"
           },
           "default_entry" : {
-            "action_id" : 159,
+            "action_id" : 161,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21575,14 +21779,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [158],
+          "action_ids" : [160],
           "actions" : ["act_36"],
           "base_default_next" : "node_132",
           "next_tables" : {
             "act_36" : "node_132"
           },
           "default_entry" : {
-            "action_id" : 158,
+            "action_id" : 160,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21604,14 +21808,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [160],
+          "action_ids" : [162],
           "actions" : ["act_38"],
           "base_default_next" : "node_134",
           "next_tables" : {
             "act_38" : "node_134"
           },
           "default_entry" : {
-            "action_id" : 160,
+            "action_id" : 162,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21633,14 +21837,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [161],
+          "action_ids" : [163],
           "actions" : ["act_39"],
           "base_default_next" : "node_136",
           "next_tables" : {
             "act_39" : "node_136"
           },
           "default_entry" : {
-            "action_id" : 161,
+            "action_id" : 163,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21662,7 +21866,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [134, 95],
+          "action_ids" : [136, 97],
           "actions" : ["FabricEgress.process_int_main.process_int_report.do_report_encapsulation", "nop"],
           "base_default_next" : "node_138",
           "next_tables" : {
@@ -21670,7 +21874,7 @@
             "nop" : "node_138"
           },
           "default_entry" : {
-            "action_id" : 95,
+            "action_id" : 97,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -21692,14 +21896,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [135],
+          "action_ids" : [137],
           "actions" : ["FabricEgress.process_int_main.process_int_sink.restore_header"],
           "base_default_next" : "tbl_process_int_main_process_int_sink_int_sink",
           "next_tables" : {
             "FabricEgress.process_int_main.process_int_sink.restore_header" : "tbl_process_int_main_process_int_sink_int_sink"
           },
           "default_entry" : {
-            "action_id" : 135,
+            "action_id" : 137,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -21721,14 +21925,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [136],
+          "action_ids" : [138],
           "actions" : ["FabricEgress.process_int_main.process_int_sink.int_sink"],
           "base_default_next" : null,
           "next_tables" : {
             "FabricEgress.process_int_main.process_int_sink.int_sink" : null
           },
           "default_entry" : {
-            "action_id" : 136,
+            "action_id" : 138,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -22123,7 +22327,7 @@
           "id" : 38,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 328,
+            "line" : 338,
             "column" : 12,
             "source_fragment" : "fabric_md.spgw.skip_spgw == false"
           },
@@ -22156,7 +22360,7 @@
           "id" : 39,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 329,
+            "line" : 339,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_encap == true"
           },
@@ -22189,7 +22393,7 @@
           "id" : 40,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 332,
+            "line" : 342,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.skip_egress_pdr_ctr == false"
           },
@@ -22645,7 +22849,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
index c02e04b..7e482b4 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-full/bmv2/default/p4info.txt
@@ -740,6 +740,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -768,6 +771,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -1381,6 +1387,33 @@
 }
 actions {
   preamble {
+    id: 16785920
+    name: "FabricIngress.spgw.load_pdr_qos"
+    alias: "load_pdr_qos"
+  }
+  params {
+    id: 1
+    name: "ctr_id"
+    bitwidth: 32
+  }
+  params {
+    id: 2
+    name: "far_id"
+    bitwidth: 32
+  }
+  params {
+    id: 3
+    name: "needs_gtpu_decap"
+    bitwidth: 1
+  }
+  params {
+    id: 4
+    name: "qid"
+    bitwidth: 5
+  }
+}
+actions {
+  preamble {
     id: 16820307
     name: "FabricIngress.spgw.load_normal_far"
     alias: "load_normal_far"
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
index 739695a..f61bb56 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-int/bmv2/default/bmv2.json
@@ -2691,7 +2691,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 155,
+            "line" : 156,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -3109,7 +3109,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 152,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -9197,7 +9197,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -9276,7 +9276,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
index 0f817fa..dfe1598 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/bmv2.json
@@ -1540,7 +1540,7 @@
       "id" : 15,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 286,
+        "line" : 296,
         "column" : 53,
         "source_fragment" : "pdr_counter"
       },
@@ -1616,7 +1616,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
@@ -2637,7 +2637,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -2856,7 +2856,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3060,7 +3060,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3279,7 +3279,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3464,7 +3464,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3683,7 +3683,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3887,7 +3887,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4106,7 +4106,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -4351,7 +4351,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 108,
+            "line" : 109,
             "column" : 44,
             "source_fragment" : "8w0; ..."
           }
@@ -4582,16 +4582,24 @@
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_normal_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 43,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -4600,38 +4608,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id24"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 0
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 186,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
           }
         },
         {
@@ -4639,38 +4627,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id25"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 1
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 187,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
           }
         },
         {
@@ -4678,7 +4646,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap30"]
             },
             {
               "type" : "expression",
@@ -4693,7 +4661,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 1
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4707,40 +4675,32 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 188,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
+            "line" : 153,
+            "column" : 40,
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 44,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
-        },
-        {
-          "name" : "tunnel_src_port",
-          "bitwidth" : 16
-        },
-        {
-          "name" : "tunnel_src_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "tunnel_dst_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "teid",
-          "bitwidth" : 32
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -4749,7 +4709,45 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id24"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id25"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap30"]
             },
             {
               "type" : "expression",
@@ -4764,7 +4762,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 0
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4778,274 +4776,15 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 198,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 1
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 199,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap29"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 153,
             "column" : 40,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid20"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 5
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 202,
-            "column" : 28,
-            "source_fragment" : "= teid; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port21"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 203,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 204,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr23"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 205,
-            "column" : 39,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr15"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 207,
-            "column" : 32,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr16"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 208,
-            "column" : 32,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_sport13"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 209,
-            "column" : 27,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport14"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x0868"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 210,
-            "column" : 27,
-            "source_fragment" : "= 2152; ..."
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "name" : "FabricIngress.spgw.load_normal_far",
       "id" : 45,
       "runtime_data" : [
         {
@@ -5055,6 +4794,139 @@
         {
           "name" : "notify_cp",
           "bitwidth" : 1
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 196,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 197,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 198,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "id" : 46,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
         },
         {
           "name" : "tunnel_src_port",
@@ -5108,7 +4980,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
+            "line" : 207,
             "column" : 34,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -5147,7 +5019,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 198,
+            "line" : 208,
             "column" : 28,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -5186,7 +5058,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 199,
+            "line" : 209,
             "column" : 36,
             "source_fragment" : "= (bool)notify_cp; ..."
           }
@@ -5215,7 +5087,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 211,
             "column" : 40,
             "source_fragment" : "= true; ..."
           }
@@ -5234,7 +5106,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 202,
+            "line" : 212,
             "column" : 28,
             "source_fragment" : "= teid; ..."
           }
@@ -5253,7 +5125,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 203,
+            "line" : 213,
             "column" : 39,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -5272,7 +5144,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 204,
+            "line" : 214,
             "column" : 39,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -5291,7 +5163,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 205,
+            "line" : 215,
             "column" : 39,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -5310,7 +5182,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 207,
+            "line" : 217,
             "column" : 32,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -5329,7 +5201,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 208,
+            "line" : 218,
             "column" : 32,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -5348,7 +5220,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 209,
+            "line" : 219,
             "column" : 27,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -5367,7 +5239,337 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 210,
+            "line" : 220,
+            "column" : 27,
+            "source_fragment" : "= 2152; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "id" : 47,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "tunnel_src_port",
+          "bitwidth" : 16
+        },
+        {
+          "name" : "tunnel_src_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "tunnel_dst_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "teid",
+          "bitwidth" : 32
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 207,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 208,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 209,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 211,
+            "column" : 40,
+            "source_fragment" : "= true; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid20"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 5
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 212,
+            "column" : 28,
+            "source_fragment" : "= teid; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port21"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 213,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr22"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 214,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr23"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 215,
+            "column" : 39,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr15"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 217,
+            "column" : 32,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr16"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 218,
+            "column" : 32,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_sport13"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 219,
+            "column" : 27,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_dport14"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0868"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 220,
             "column" : 27,
             "source_fragment" : "= 2152; ..."
           }
@@ -5396,7 +5598,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 221,
+            "line" : 231,
             "column" : 43,
             "source_fragment" : "= true; ..."
           }
@@ -5405,7 +5607,7 @@
     },
     {
       "name" : "act",
-      "id" : 46,
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5485,7 +5687,7 @@
     },
     {
       "name" : "act_0",
-      "id" : 47,
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5515,7 +5717,7 @@
     },
     {
       "name" : "act_1",
-      "id" : 48,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5545,7 +5747,7 @@
     },
     {
       "name" : "act_2",
-      "id" : 49,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5562,7 +5764,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -5571,7 +5773,7 @@
     },
     {
       "name" : "act_3",
-      "id" : 50,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5588,7 +5790,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "= hdr.ipv4.total_len; ..."
           }
@@ -5597,7 +5799,7 @@
     },
     {
       "name" : "act_4",
-      "id" : 51,
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5661,7 +5863,7 @@
     },
     {
       "name" : "act_5",
-      "id" : 52,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5687,7 +5889,7 @@
     },
     {
       "name" : "act_6",
-      "id" : 53,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5745,7 +5947,7 @@
     },
     {
       "name" : "act_7",
-      "id" : 54,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5803,31 +6005,31 @@
     },
     {
       "name" : "nop",
-      "id" : 55,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "nop",
-      "id" : 56,
-      "runtime_data" : [],
-      "primitives" : []
-    },
-    {
-      "name" : "NoAction",
       "id" : 57,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "NoAction",
+      "name" : "nop",
       "id" : 58,
       "runtime_data" : [],
       "primitives" : []
     },
     {
-      "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
+      "name" : "NoAction",
       "id" : 59,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "NoAction",
+      "id" : 60,
+      "runtime_data" : [],
+      "primitives" : []
+    },
+    {
+      "name" : "FabricEgress.process_int_main.process_int_source.int_source_dscp",
+      "id" : 61,
       "runtime_data" : [
         {
           "name" : "max_hop",
@@ -5895,7 +6097,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 155,
+            "line" : 156,
             "column" : 36,
             "source_fragment" : "4; ..."
           }
@@ -6313,7 +6515,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 151,
+            "line" : 152,
             "column" : 24,
             "source_fragment" : "0x1; ..."
           }
@@ -6322,7 +6524,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.init_metadata",
-      "id" : 60,
+      "id" : 62,
       "runtime_data" : [
         {
           "name" : "switch_id",
@@ -6382,13 +6584,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0",
-      "id" : 61,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1",
-      "id" : 62,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6545,7 +6747,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2",
-      "id" : 63,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6670,7 +6872,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3",
-      "id" : 64,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6861,7 +7063,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4",
-      "id" : 65,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7031,7 +7233,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5",
-      "id" : 66,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7267,7 +7469,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6",
-      "id" : 67,
+      "id" : 69,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7471,7 +7673,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7",
-      "id" : 68,
+      "id" : 70,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7741,7 +7943,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8",
-      "id" : 69,
+      "id" : 71,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -7866,7 +8068,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9",
-      "id" : 70,
+      "id" : 72,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8057,7 +8259,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10",
-      "id" : 71,
+      "id" : 73,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8216,7 +8418,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11",
-      "id" : 72,
+      "id" : 74,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8441,7 +8643,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12",
-      "id" : 73,
+      "id" : 75,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8645,7 +8847,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13",
-      "id" : 74,
+      "id" : 76,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -8915,7 +9117,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14",
-      "id" : 75,
+      "id" : 77,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9153,7 +9355,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15",
-      "id" : 76,
+      "id" : 78,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9457,13 +9659,13 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0",
-      "id" : 77,
+      "id" : 79,
       "runtime_data" : [],
       "primitives" : []
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1",
-      "id" : 78,
+      "id" : 80,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9588,7 +9790,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2",
-      "id" : 79,
+      "id" : 81,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9732,7 +9934,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3",
-      "id" : 80,
+      "id" : 82,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -9910,7 +10112,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4",
-      "id" : 81,
+      "id" : 83,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10058,7 +10260,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5",
-      "id" : 82,
+      "id" : 84,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10240,7 +10442,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6",
-      "id" : 83,
+      "id" : 85,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10441,7 +10643,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7",
-      "id" : 84,
+      "id" : 86,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10676,7 +10878,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8",
-      "id" : 85,
+      "id" : 87,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10801,7 +11003,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9",
-      "id" : 86,
+      "id" : 88,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -10960,7 +11162,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10",
-      "id" : 87,
+      "id" : 89,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11138,7 +11340,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11",
-      "id" : 88,
+      "id" : 90,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11350,7 +11552,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12",
-      "id" : 89,
+      "id" : 91,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11532,7 +11734,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13",
-      "id" : 90,
+      "id" : 92,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11748,7 +11950,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14",
-      "id" : 91,
+      "id" : 93,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -11983,7 +12185,7 @@
     },
     {
       "name" : "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15",
-      "id" : 92,
+      "id" : 94,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12252,7 +12454,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 93,
+      "id" : 95,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12293,7 +12495,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 94,
+      "id" : 96,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12401,7 +12603,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -12410,7 +12612,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 95,
+      "id" : 97,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12480,7 +12682,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -12508,7 +12710,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 96,
+      "id" : 98,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12530,7 +12732,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 97,
+      "id" : 99,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12552,7 +12754,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 98,
+      "id" : 100,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -12565,7 +12767,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 291,
+            "line" : 301,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.setValid()"
           }
@@ -12584,7 +12786,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 292,
+            "line" : 302,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.version = 4"
           }
@@ -12603,7 +12805,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 133,
+            "line" : 134,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -12622,7 +12824,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 294,
+            "line" : 304,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dscp = 0"
           }
@@ -12641,7 +12843,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 295,
+            "line" : 305,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.ecn = 0"
           }
@@ -12683,7 +12885,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 296,
+            "line" : 306,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.total_len = hdr.ipv4.total_len ..."
           }
@@ -12702,7 +12904,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 298,
+            "line" : 308,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.identification = 0x1513"
           }
@@ -12721,7 +12923,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 299,
+            "line" : 309,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.flags = 0"
           }
@@ -12740,7 +12942,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 300,
+            "line" : 310,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.frag_offset = 0"
           }
@@ -12759,7 +12961,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 146,
+            "line" : 147,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -12778,7 +12980,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 130,
+            "line" : 131,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -12797,7 +12999,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 303,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.src_addr = fabric_md.spgw.tunnel_src_addr; ..."
           }
@@ -12816,7 +13018,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 304,
+            "line" : 314,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dst_addr = fabric_md.spgw.tunnel_dst_addr; ..."
           }
@@ -12835,7 +13037,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 305,
+            "line" : 315,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.hdr_checksum = 0"
           }
@@ -12850,7 +13052,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 307,
+            "line" : 317,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.setValid()"
           }
@@ -12869,7 +13071,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 308,
+            "line" : 318,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.sport = fabric_md.spgw.tunnel_src_port; ..."
           }
@@ -12888,7 +13090,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 309,
+            "line" : 319,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.dport = 2152"
           }
@@ -12930,7 +13132,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 310,
+            "line" : 320,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.len = fabric_md.spgw.ipv4_len ..."
           }
@@ -12949,7 +13151,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 312,
+            "line" : 322,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.checksum = 0"
           }
@@ -12964,7 +13166,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 315,
+            "line" : 325,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.setValid()"
           }
@@ -12983,7 +13185,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 316,
+            "line" : 326,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.version = 0x01"
           }
@@ -13002,7 +13204,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 317,
+            "line" : 327,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.pt = 0x01"
           }
@@ -13021,7 +13223,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 318,
+            "line" : 328,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.spare = 0"
           }
@@ -13040,7 +13242,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 319,
+            "line" : 329,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.ex_flag = 0"
           }
@@ -13059,7 +13261,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 320,
+            "line" : 330,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.seq_flag = 0"
           }
@@ -13078,7 +13280,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 321,
+            "line" : 331,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.npdu_flag = 0"
           }
@@ -13097,7 +13299,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 322,
+            "line" : 332,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msgtype = 0xff"
           }
@@ -13116,7 +13318,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 323,
+            "line" : 333,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msglen = fabric_md.spgw.ipv4_len; ..."
           }
@@ -13135,7 +13337,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 324,
+            "line" : 334,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.teid = fabric_md.spgw.teid; ..."
           }
@@ -13144,7 +13346,7 @@
     },
     {
       "name" : "act_8",
-      "id" : 99,
+      "id" : 101,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13161,7 +13363,7 @@
     },
     {
       "name" : "act_9",
-      "id" : 100,
+      "id" : 102,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13212,7 +13414,7 @@
     },
     {
       "name" : "act_10",
-      "id" : 101,
+      "id" : 103,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13234,7 +13436,7 @@
     },
     {
       "name" : "act_11",
-      "id" : 102,
+      "id" : 104,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13256,7 +13458,7 @@
     },
     {
       "name" : "act_12",
-      "id" : 103,
+      "id" : 105,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13305,7 +13507,7 @@
     },
     {
       "name" : "act_13",
-      "id" : 104,
+      "id" : 106,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13327,7 +13529,7 @@
     },
     {
       "name" : "act_14",
-      "id" : 105,
+      "id" : 107,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13376,7 +13578,7 @@
     },
     {
       "name" : "act_15",
-      "id" : 106,
+      "id" : 108,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13393,7 +13595,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -13402,7 +13604,7 @@
     },
     {
       "name" : "act_16",
-      "id" : 107,
+      "id" : 109,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13432,7 +13634,7 @@
     },
     {
       "name" : "act_17",
-      "id" : 108,
+      "id" : 110,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13468,7 +13670,7 @@
     },
     {
       "name" : "act_18",
-      "id" : 109,
+      "id" : 111,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13517,7 +13719,7 @@
     },
     {
       "name" : "act_19",
-      "id" : 110,
+      "id" : 112,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13566,7 +13768,7 @@
     },
     {
       "name" : "act_20",
-      "id" : 111,
+      "id" : 113,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13615,7 +13817,7 @@
     },
     {
       "name" : "act_21",
-      "id" : 112,
+      "id" : 114,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -13691,14 +13893,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
+          "action_ids" : [48],
           "actions" : ["act"],
           "base_default_next" : "FabricIngress.spgw.interfaces",
           "next_tables" : {
             "act" : "FabricIngress.spgw.interfaces"
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13757,14 +13959,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
+          "action_ids" : [49],
           "actions" : ["act_0"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_0" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13780,14 +13982,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
+          "action_ids" : [50],
           "actions" : ["act_1"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_1" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -13932,7 +14134,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 168,
+            "line" : 177,
             "column" : 10,
             "source_fragment" : "uplink_pdrs"
           },
@@ -13956,11 +14158,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [42, 9],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [42, 44, 9],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -13975,7 +14178,7 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 157,
+            "line" : 165,
             "column" : 10,
             "source_fragment" : "downlink_pdrs"
           },
@@ -13993,11 +14196,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41, 8],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [41, 43, 8],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -14012,7 +14216,7 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -14023,14 +14227,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
+          "action_ids" : [51],
           "actions" : ["act_2"],
           "base_default_next" : "node_15",
           "next_tables" : {
             "act_2" : "node_15"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14175,7 +14379,7 @@
           "id" : 9,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 224,
+            "line" : 234,
             "column" : 10,
             "source_fragment" : "fars"
           },
@@ -14193,7 +14397,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [43, 44, 45],
+          "action_ids" : [45, 46, 47],
           "actions" : ["FabricIngress.spgw.load_normal_far", "FabricIngress.spgw.load_tunnel_far", "FabricIngress.spgw.load_dbuf_far"],
           "base_default_next" : "tbl_act_3",
           "next_tables" : {
@@ -14202,7 +14406,7 @@
             "FabricIngress.spgw.load_dbuf_far" : "tbl_act_3"
           },
           "default_entry" : {
-            "action_id" : 43,
+            "action_id" : 45,
             "action_const" : true,
             "action_data" : ["0x1", "0x0"],
             "action_entry_const" : true
@@ -14213,7 +14417,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "="
           },
@@ -14224,14 +14428,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
+          "action_ids" : [52],
           "actions" : ["act_3"],
           "base_default_next" : "node_19",
           "next_tables" : {
             "act_3" : "node_19"
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14253,14 +14457,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
+          "action_ids" : [53],
           "actions" : ["act_4"],
           "base_default_next" : "node_21",
           "next_tables" : {
             "act_4" : "node_21"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14282,14 +14486,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [54],
           "actions" : ["act_5"],
           "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
           "next_tables" : {
             "act_5" : "FabricIngress.filtering.ingress_port_vlan"
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14791,14 +14995,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [55],
           "actions" : ["act_6"],
           "base_default_next" : "node_40",
           "next_tables" : {
             "act_6" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 55,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14820,14 +15024,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [56],
           "actions" : ["act_7"],
           "base_default_next" : "FabricIngress.process_set_source_sink.tb_set_source",
           "next_tables" : {
             "act_7" : "FabricIngress.process_set_source_sink.tb_set_source"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -14955,7 +15159,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 246,
+            "line" : 256,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface == SPGW_IFACE_FROM_DBUF"
           },
@@ -14981,7 +15185,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 250,
+            "line" : 260,
             "column" : 16,
             "source_fragment" : "hdr.gtpu.isValid()"
           },
@@ -15004,7 +15208,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 255,
+            "line" : 265,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface != SPGW_IFACE_FROM_DBUF"
           },
@@ -15030,7 +15234,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 260,
+            "line" : 270,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_decap == true"
           },
@@ -15336,14 +15540,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [99],
+          "action_ids" : [101],
           "actions" : ["act_8"],
           "base_default_next" : "node_47",
           "next_tables" : {
             "act_8" : "node_47"
           },
           "default_entry" : {
-            "action_id" : 99,
+            "action_id" : 101,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15365,14 +15569,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [100],
+          "action_ids" : [102],
           "actions" : ["act_9"],
           "base_default_next" : "node_49",
           "next_tables" : {
             "act_9" : "node_49"
           },
           "default_entry" : {
-            "action_id" : 100,
+            "action_id" : 102,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15394,14 +15598,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [101],
+          "action_ids" : [103],
           "actions" : ["act_10"],
           "base_default_next" : "node_51",
           "next_tables" : {
             "act_10" : "node_51"
           },
           "default_entry" : {
-            "action_id" : 101,
+            "action_id" : 103,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15423,14 +15627,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [93],
+          "action_ids" : [95],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 93,
+            "action_id" : 95,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15452,14 +15656,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [94],
+          "action_ids" : [96],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 94,
+            "action_id" : 96,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15494,7 +15698,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [95, 96, 97],
+          "action_ids" : [97, 98, 99],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
           "base_default_next" : "node_56",
           "next_tables" : {
@@ -15503,7 +15707,7 @@
             "FabricEgress.egress_next.drop" : "node_56"
           },
           "default_entry" : {
-            "action_id" : 97,
+            "action_id" : 99,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15525,14 +15729,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [103],
+          "action_ids" : [105],
           "actions" : ["act_12"],
           "base_default_next" : "node_58",
           "next_tables" : {
             "act_12" : "node_58"
           },
           "default_entry" : {
-            "action_id" : 103,
+            "action_id" : 105,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15554,14 +15758,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [102],
+          "action_ids" : [104],
           "actions" : ["act_11"],
           "base_default_next" : "node_64",
           "next_tables" : {
             "act_11" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 102,
+            "action_id" : 104,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15583,14 +15787,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [105],
+          "action_ids" : [107],
           "actions" : ["act_14"],
           "base_default_next" : "node_62",
           "next_tables" : {
             "act_14" : "node_62"
           },
           "default_entry" : {
-            "action_id" : 105,
+            "action_id" : 107,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15612,14 +15816,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [104],
+          "action_ids" : [106],
           "actions" : ["act_13"],
           "base_default_next" : "node_64",
           "next_tables" : {
             "act_13" : "node_64"
           },
           "default_entry" : {
-            "action_id" : 104,
+            "action_id" : 106,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15630,7 +15834,7 @@
           "id" : 36,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 330,
+            "line" : 340,
             "column" : 16,
             "source_fragment" : "gtpu_encap()"
           },
@@ -15641,14 +15845,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [98],
+          "action_ids" : [100],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
           "base_default_next" : "node_67",
           "next_tables" : {
             "FabricEgress.spgw.gtpu_encap" : "node_67"
           },
           "default_entry" : {
-            "action_id" : 98,
+            "action_id" : 100,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15659,7 +15863,7 @@
           "id" : 37,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -15670,14 +15874,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [106],
+          "action_ids" : [108],
           "actions" : ["act_15"],
           "base_default_next" : "node_69",
           "next_tables" : {
             "act_15" : "node_69"
           },
           "default_entry" : {
-            "action_id" : 106,
+            "action_id" : 108,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15724,7 +15928,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59, 55],
+          "action_ids" : [61, 57],
           "actions" : ["FabricEgress.process_int_main.process_int_source.int_source_dscp", "nop"],
           "base_default_next" : "node_72",
           "next_tables" : {
@@ -15732,7 +15936,7 @@
             "nop" : "node_72"
           },
           "default_entry" : {
-            "action_id" : 55,
+            "action_id" : 57,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15748,14 +15952,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [107],
+          "action_ids" : [109],
           "actions" : ["act_16"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert",
           "next_tables" : {
             "act_16" : "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
           },
           "default_entry" : {
-            "action_id" : 107,
+            "action_id" : 109,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15784,7 +15988,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60, 56],
+          "action_ids" : [62, 58],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.init_metadata", "nop"],
           "base_default_next" : "node_75",
           "next_tables" : {
@@ -15792,7 +15996,7 @@
             "nop" : "node_75"
           },
           "default_entry" : {
-            "action_id" : 56,
+            "action_id" : 58,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15814,14 +16018,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [108],
+          "action_ids" : [110],
           "actions" : ["act_17"],
           "base_default_next" : "node_77",
           "next_tables" : {
             "act_17" : "node_77"
           },
           "default_entry" : {
-            "action_id" : 108,
+            "action_id" : 110,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -15850,7 +16054,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 57],
+          "action_ids" : [63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 59],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15", "NoAction"],
           "base_default_next" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407",
           "next_tables" : {
@@ -15873,7 +16077,7 @@
             "NoAction" : "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 59,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -15893,7 +16097,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 61,
+                "action_id" : 63,
                 "action_data" : []
               },
               "priority" : 1
@@ -15912,7 +16116,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 62,
+                "action_id" : 64,
                 "action_data" : []
               },
               "priority" : 2
@@ -15931,7 +16135,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 63,
+                "action_id" : 65,
                 "action_data" : []
               },
               "priority" : 3
@@ -15950,7 +16154,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 64,
+                "action_id" : 66,
                 "action_data" : []
               },
               "priority" : 4
@@ -15969,7 +16173,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 65,
+                "action_id" : 67,
                 "action_data" : []
               },
               "priority" : 5
@@ -15988,7 +16192,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 66,
+                "action_id" : 68,
                 "action_data" : []
               },
               "priority" : 6
@@ -16007,7 +16211,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 67,
+                "action_id" : 69,
                 "action_data" : []
               },
               "priority" : 7
@@ -16026,7 +16230,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 68,
+                "action_id" : 70,
                 "action_data" : []
               },
               "priority" : 8
@@ -16045,7 +16249,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 69,
+                "action_id" : 71,
                 "action_data" : []
               },
               "priority" : 9
@@ -16064,7 +16268,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 70,
+                "action_id" : 72,
                 "action_data" : []
               },
               "priority" : 10
@@ -16083,7 +16287,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 71,
+                "action_id" : 73,
                 "action_data" : []
               },
               "priority" : 11
@@ -16102,7 +16306,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 72,
+                "action_id" : 74,
                 "action_data" : []
               },
               "priority" : 12
@@ -16121,7 +16325,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 73,
+                "action_id" : 75,
                 "action_data" : []
               },
               "priority" : 13
@@ -16140,7 +16344,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 74,
+                "action_id" : 76,
                 "action_data" : []
               },
               "priority" : 14
@@ -16159,7 +16363,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 75,
+                "action_id" : 77,
                 "action_data" : []
               },
               "priority" : 15
@@ -16178,7 +16382,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 76,
+                "action_id" : 78,
                 "action_data" : []
               },
               "priority" : 16
@@ -16208,7 +16412,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 58],
+          "action_ids" : [79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 60],
           "actions" : ["FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14", "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15", "NoAction"],
           "base_default_next" : "tbl_act_18",
           "next_tables" : {
@@ -16231,7 +16435,7 @@
             "NoAction" : "tbl_act_18"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 60,
             "action_const" : false,
             "action_data" : [],
             "action_entry_const" : false
@@ -16251,7 +16455,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 77,
+                "action_id" : 79,
                 "action_data" : []
               },
               "priority" : 1
@@ -16270,7 +16474,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 78,
+                "action_id" : 80,
                 "action_data" : []
               },
               "priority" : 2
@@ -16289,7 +16493,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 79,
+                "action_id" : 81,
                 "action_data" : []
               },
               "priority" : 3
@@ -16308,7 +16512,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 80,
+                "action_id" : 82,
                 "action_data" : []
               },
               "priority" : 4
@@ -16327,7 +16531,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 81,
+                "action_id" : 83,
                 "action_data" : []
               },
               "priority" : 5
@@ -16346,7 +16550,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 82,
+                "action_id" : 84,
                 "action_data" : []
               },
               "priority" : 6
@@ -16365,7 +16569,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 83,
+                "action_id" : 85,
                 "action_data" : []
               },
               "priority" : 7
@@ -16384,7 +16588,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 84,
+                "action_id" : 86,
                 "action_data" : []
               },
               "priority" : 8
@@ -16403,7 +16607,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 85,
+                "action_id" : 87,
                 "action_data" : []
               },
               "priority" : 9
@@ -16422,7 +16626,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 86,
+                "action_id" : 88,
                 "action_data" : []
               },
               "priority" : 10
@@ -16441,7 +16645,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 87,
+                "action_id" : 89,
                 "action_data" : []
               },
               "priority" : 11
@@ -16460,7 +16664,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 88,
+                "action_id" : 90,
                 "action_data" : []
               },
               "priority" : 12
@@ -16479,7 +16683,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 89,
+                "action_id" : 91,
                 "action_data" : []
               },
               "priority" : 13
@@ -16498,7 +16702,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 90,
+                "action_id" : 92,
                 "action_data" : []
               },
               "priority" : 14
@@ -16517,7 +16721,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 91,
+                "action_id" : 93,
                 "action_data" : []
               },
               "priority" : 15
@@ -16536,7 +16740,7 @@
                 }
               ],
               "action_entry" : {
-                "action_id" : 92,
+                "action_id" : 94,
                 "action_data" : []
               },
               "priority" : 16
@@ -16559,14 +16763,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [110],
+          "action_ids" : [112],
           "actions" : ["act_19"],
           "base_default_next" : "node_81",
           "next_tables" : {
             "act_19" : "node_81"
           },
           "default_entry" : {
-            "action_id" : 110,
+            "action_id" : 112,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16588,14 +16792,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [109],
+          "action_ids" : [111],
           "actions" : ["act_18"],
           "base_default_next" : "node_83",
           "next_tables" : {
             "act_18" : "node_83"
           },
           "default_entry" : {
-            "action_id" : 109,
+            "action_id" : 111,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16617,14 +16821,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [111],
+          "action_ids" : [113],
           "actions" : ["act_20"],
           "base_default_next" : "node_85",
           "next_tables" : {
             "act_20" : "node_85"
           },
           "default_entry" : {
-            "action_id" : 111,
+            "action_id" : 113,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16646,14 +16850,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [112],
+          "action_ids" : [114],
           "actions" : ["act_21"],
           "base_default_next" : null,
           "next_tables" : {
             "act_21" : null
           },
           "default_entry" : {
-            "action_id" : 112,
+            "action_id" : 114,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -16946,7 +17150,7 @@
           "id" : 24,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 328,
+            "line" : 338,
             "column" : 12,
             "source_fragment" : "fabric_md.spgw.skip_spgw == false"
           },
@@ -16979,7 +17183,7 @@
           "id" : 25,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 329,
+            "line" : 339,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_encap == true"
           },
@@ -17012,7 +17216,7 @@
           "id" : 26,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 332,
+            "line" : 342,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.skip_egress_pdr_ctr == false"
           },
@@ -17337,7 +17541,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
index c658bdd7..10b172b 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw-int/bmv2/default/p4info.txt
@@ -432,6 +432,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -460,6 +463,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -887,6 +893,33 @@
 }
 actions {
   preamble {
+    id: 16785920
+    name: "FabricIngress.spgw.load_pdr_qos"
+    alias: "load_pdr_qos"
+  }
+  params {
+    id: 1
+    name: "ctr_id"
+    bitwidth: 32
+  }
+  params {
+    id: 2
+    name: "far_id"
+    bitwidth: 32
+  }
+  params {
+    id: 3
+    name: "needs_gtpu_decap"
+    bitwidth: 1
+  }
+  params {
+    id: 4
+    name: "qid"
+    bitwidth: 5
+  }
+}
+actions {
+  preamble {
     id: 16820307
     name: "FabricIngress.spgw.load_normal_far"
     alias: "load_normal_far"
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
index 8f5381e..a23792d 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/bmv2.json
@@ -1202,7 +1202,7 @@
       "id" : 13,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 286,
+        "line" : 296,
         "column" : 53,
         "source_fragment" : "pdr_counter"
       },
@@ -1278,7 +1278,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
@@ -2257,7 +2257,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -2476,7 +2476,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -2680,7 +2680,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -2899,7 +2899,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3084,7 +3084,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3303,7 +3303,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3507,7 +3507,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3726,7 +3726,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 118,
+            "line" : 119,
             "column" : 31,
             "source_fragment" : "0x0800; ..."
           }
@@ -3971,7 +3971,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 108,
+            "line" : 109,
             "column" : 44,
             "source_fragment" : "8w0; ..."
           }
@@ -4202,16 +4202,24 @@
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_normal_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 41,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -4220,38 +4228,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id24"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 0
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 186,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
           }
         },
         {
@@ -4259,38 +4247,18 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id25"]
             },
             {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
+              "type" : "runtime_data",
+              "value" : 1
             }
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 187,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
           }
         },
         {
@@ -4298,7 +4266,7 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap30"]
             },
             {
               "type" : "expression",
@@ -4313,7 +4281,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 1
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4327,40 +4295,32 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 188,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
+            "line" : 153,
+            "column" : 40,
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "name" : "FabricIngress.spgw.load_pdr_qos",
       "id" : 42,
       "runtime_data" : [
         {
-          "name" : "drop",
+          "name" : "ctr_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "far_id",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "needs_gtpu_decap",
           "bitwidth" : 1
         },
         {
-          "name" : "notify_cp",
-          "bitwidth" : 1
-        },
-        {
-          "name" : "tunnel_src_port",
-          "bitwidth" : 16
-        },
-        {
-          "name" : "tunnel_src_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "tunnel_dst_addr",
-          "bitwidth" : 32
-        },
-        {
-          "name" : "teid",
-          "bitwidth" : 32
+          "name" : "qid",
+          "bitwidth" : 5
         }
       ],
       "primitives" : [
@@ -4369,7 +4329,45 @@
           "parameters" : [
             {
               "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+              "value" : ["scalars", "fabric_metadata_t._spgw_ctr_id24"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 0
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 151,
+            "column" : 30,
+            "source_fragment" : "= ctr_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_far_id25"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 1
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 152,
+            "column" : 30,
+            "source_fragment" : "= far_id; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_decap30"]
             },
             {
               "type" : "expression",
@@ -4384,7 +4382,7 @@
                       "op" : "!=",
                       "left" : {
                         "type" : "local",
-                        "value" : 0
+                        "value" : 2
                       },
                       "right" : {
                         "type" : "hexstr",
@@ -4398,274 +4396,15 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
-            "column" : 34,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 0
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 198,
-            "column" : 28,
-            "source_fragment" : "= (bool)drop; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "expression",
-                    "value" : {
-                      "op" : "!=",
-                      "left" : {
-                        "type" : "local",
-                        "value" : 1
-                      },
-                      "right" : {
-                        "type" : "hexstr",
-                        "value" : "0x00"
-                      }
-                    }
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 199,
-            "column" : 36,
-            "source_fragment" : "= (bool)notify_cp; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap29"]
-            },
-            {
-              "type" : "expression",
-              "value" : {
-                "type" : "expression",
-                "value" : {
-                  "op" : "b2d",
-                  "left" : null,
-                  "right" : {
-                    "type" : "bool",
-                    "value" : true
-                  }
-                }
-              }
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 153,
             "column" : 40,
-            "source_fragment" : "= true; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_teid20"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 5
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 202,
-            "column" : 28,
-            "source_fragment" : "= teid; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port21"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 203,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr22"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 204,
-            "column" : 39,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr23"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 205,
-            "column" : 39,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr15"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 3
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 207,
-            "column" : 32,
-            "source_fragment" : "= tunnel_src_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr16"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 4
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 208,
-            "column" : 32,
-            "source_fragment" : "= tunnel_dst_addr; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_sport13"]
-            },
-            {
-              "type" : "runtime_data",
-              "value" : 2
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 209,
-            "column" : 27,
-            "source_fragment" : "= tunnel_src_port; ..."
-          }
-        },
-        {
-          "op" : "assign",
-          "parameters" : [
-            {
-              "type" : "field",
-              "value" : ["scalars", "fabric_metadata_t._l4_dport14"]
-            },
-            {
-              "type" : "hexstr",
-              "value" : "0x0868"
-            }
-          ],
-          "source_info" : {
-            "filename" : "include/control/spgw.p4",
-            "line" : 210,
-            "column" : 27,
-            "source_fragment" : "= 2152; ..."
+            "source_fragment" : "= (bool)needs_gtpu_decap; ..."
           }
         }
       ]
     },
     {
-      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "name" : "FabricIngress.spgw.load_normal_far",
       "id" : 43,
       "runtime_data" : [
         {
@@ -4675,6 +4414,139 @@
         {
           "name" : "notify_cp",
           "bitwidth" : 1
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 196,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 197,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 198,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_tunnel_far",
+      "id" : 44,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
         },
         {
           "name" : "tunnel_src_port",
@@ -4728,7 +4600,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 197,
+            "line" : 207,
             "column" : 34,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -4767,7 +4639,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 198,
+            "line" : 208,
             "column" : 28,
             "source_fragment" : "= (bool)drop; ..."
           }
@@ -4806,7 +4678,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 199,
+            "line" : 209,
             "column" : 36,
             "source_fragment" : "= (bool)notify_cp; ..."
           }
@@ -4835,7 +4707,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 201,
+            "line" : 211,
             "column" : 40,
             "source_fragment" : "= true; ..."
           }
@@ -4854,7 +4726,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 202,
+            "line" : 212,
             "column" : 28,
             "source_fragment" : "= teid; ..."
           }
@@ -4873,7 +4745,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 203,
+            "line" : 213,
             "column" : 39,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -4892,7 +4764,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 204,
+            "line" : 214,
             "column" : 39,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -4911,7 +4783,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 205,
+            "line" : 215,
             "column" : 39,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -4930,7 +4802,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 207,
+            "line" : 217,
             "column" : 32,
             "source_fragment" : "= tunnel_src_addr; ..."
           }
@@ -4949,7 +4821,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 208,
+            "line" : 218,
             "column" : 32,
             "source_fragment" : "= tunnel_dst_addr; ..."
           }
@@ -4968,7 +4840,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 209,
+            "line" : 219,
             "column" : 27,
             "source_fragment" : "= tunnel_src_port; ..."
           }
@@ -4987,7 +4859,337 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 210,
+            "line" : 220,
+            "column" : 27,
+            "source_fragment" : "= 2152; ..."
+          }
+        }
+      ]
+    },
+    {
+      "name" : "FabricIngress.spgw.load_dbuf_far",
+      "id" : 45,
+      "runtime_data" : [
+        {
+          "name" : "drop",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "notify_cp",
+          "bitwidth" : 1
+        },
+        {
+          "name" : "tunnel_src_port",
+          "bitwidth" : 16
+        },
+        {
+          "name" : "tunnel_src_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "tunnel_dst_addr",
+          "bitwidth" : 32
+        },
+        {
+          "name" : "teid",
+          "bitwidth" : 32
+        }
+      ],
+      "primitives" : [
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_forwarding6"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 207,
+            "column" : 34,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._skip_next7"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 0
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 208,
+            "column" : 28,
+            "source_fragment" : "= (bool)drop; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_notify_spgwc28"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "expression",
+                    "value" : {
+                      "op" : "!=",
+                      "left" : {
+                        "type" : "local",
+                        "value" : 1
+                      },
+                      "right" : {
+                        "type" : "hexstr",
+                        "value" : "0x00"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 209,
+            "column" : 36,
+            "source_fragment" : "= (bool)notify_cp; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_needs_gtpu_encap29"]
+            },
+            {
+              "type" : "expression",
+              "value" : {
+                "type" : "expression",
+                "value" : {
+                  "op" : "b2d",
+                  "left" : null,
+                  "right" : {
+                    "type" : "bool",
+                    "value" : true
+                  }
+                }
+              }
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 211,
+            "column" : 40,
+            "source_fragment" : "= true; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_teid20"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 5
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 212,
+            "column" : 28,
+            "source_fragment" : "= teid; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_port21"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 213,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_src_addr22"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 214,
+            "column" : 39,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._spgw_tunnel_dst_addr23"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 215,
+            "column" : 39,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_src_addr15"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 3
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 217,
+            "column" : 32,
+            "source_fragment" : "= tunnel_src_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._ipv4_dst_addr16"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 4
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 218,
+            "column" : 32,
+            "source_fragment" : "= tunnel_dst_addr; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_sport13"]
+            },
+            {
+              "type" : "runtime_data",
+              "value" : 2
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 219,
+            "column" : 27,
+            "source_fragment" : "= tunnel_src_port; ..."
+          }
+        },
+        {
+          "op" : "assign",
+          "parameters" : [
+            {
+              "type" : "field",
+              "value" : ["scalars", "fabric_metadata_t._l4_dport14"]
+            },
+            {
+              "type" : "hexstr",
+              "value" : "0x0868"
+            }
+          ],
+          "source_info" : {
+            "filename" : "include/control/spgw.p4",
+            "line" : 220,
             "column" : 27,
             "source_fragment" : "= 2152; ..."
           }
@@ -5016,7 +5218,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 221,
+            "line" : 231,
             "column" : 43,
             "source_fragment" : "= true; ..."
           }
@@ -5025,7 +5227,7 @@
     },
     {
       "name" : "act",
-      "id" : 44,
+      "id" : 46,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5105,7 +5307,7 @@
     },
     {
       "name" : "act_0",
-      "id" : 45,
+      "id" : 47,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5135,7 +5337,7 @@
     },
     {
       "name" : "act_1",
-      "id" : 46,
+      "id" : 48,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5165,7 +5367,7 @@
     },
     {
       "name" : "act_2",
-      "id" : 47,
+      "id" : 49,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5182,7 +5384,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -5191,7 +5393,7 @@
     },
     {
       "name" : "act_3",
-      "id" : 48,
+      "id" : 50,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5208,7 +5410,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "= hdr.ipv4.total_len; ..."
           }
@@ -5217,7 +5419,7 @@
     },
     {
       "name" : "act_4",
-      "id" : 49,
+      "id" : 51,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5281,7 +5483,7 @@
     },
     {
       "name" : "act_5",
-      "id" : 50,
+      "id" : 52,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5307,7 +5509,7 @@
     },
     {
       "name" : "act_6",
-      "id" : 51,
+      "id" : 53,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5365,7 +5567,7 @@
     },
     {
       "name" : "act_7",
-      "id" : 52,
+      "id" : 54,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5423,7 +5625,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_mpls_if_present",
-      "id" : 53,
+      "id" : 55,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5464,7 +5666,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.set_mpls",
-      "id" : 54,
+      "id" : 56,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5572,7 +5774,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -5581,7 +5783,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.push_vlan",
-      "id" : 55,
+      "id" : 57,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5651,7 +5853,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }
@@ -5679,7 +5881,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.pop_vlan",
-      "id" : 56,
+      "id" : 58,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5701,7 +5903,7 @@
     },
     {
       "name" : "FabricEgress.egress_next.drop",
-      "id" : 57,
+      "id" : 59,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5723,7 +5925,7 @@
     },
     {
       "name" : "FabricEgress.spgw.gtpu_encap",
-      "id" : 58,
+      "id" : 60,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -5736,7 +5938,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 291,
+            "line" : 301,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.setValid()"
           }
@@ -5755,7 +5957,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 292,
+            "line" : 302,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.version = 4"
           }
@@ -5774,7 +5976,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 133,
+            "line" : 134,
             "column" : 28,
             "source_fragment" : "5; ..."
           }
@@ -5793,7 +5995,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 294,
+            "line" : 304,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dscp = 0"
           }
@@ -5812,7 +6014,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 295,
+            "line" : 305,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.ecn = 0"
           }
@@ -5854,7 +6056,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 296,
+            "line" : 306,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.total_len = hdr.ipv4.total_len ..."
           }
@@ -5873,7 +6075,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 298,
+            "line" : 308,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.identification = 0x1513"
           }
@@ -5892,7 +6094,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 299,
+            "line" : 309,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.flags = 0"
           }
@@ -5911,7 +6113,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 300,
+            "line" : 310,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.frag_offset = 0"
           }
@@ -5930,7 +6132,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 146,
+            "line" : 147,
             "column" : 32,
             "source_fragment" : "64; ..."
           }
@@ -5949,7 +6151,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 130,
+            "line" : 131,
             "column" : 25,
             "source_fragment" : "17; ..."
           }
@@ -5968,7 +6170,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 303,
+            "line" : 313,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.src_addr = fabric_md.spgw.tunnel_src_addr; ..."
           }
@@ -5987,7 +6189,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 304,
+            "line" : 314,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.dst_addr = fabric_md.spgw.tunnel_dst_addr; ..."
           }
@@ -6006,7 +6208,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 305,
+            "line" : 315,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_ipv4.hdr_checksum = 0"
           }
@@ -6021,7 +6223,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 307,
+            "line" : 317,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.setValid()"
           }
@@ -6040,7 +6242,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 308,
+            "line" : 318,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.sport = fabric_md.spgw.tunnel_src_port; ..."
           }
@@ -6059,7 +6261,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 309,
+            "line" : 319,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.dport = 2152"
           }
@@ -6101,7 +6303,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 310,
+            "line" : 320,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.len = fabric_md.spgw.ipv4_len ..."
           }
@@ -6120,7 +6322,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 312,
+            "line" : 322,
             "column" : 8,
             "source_fragment" : "hdr.gtpu_udp.checksum = 0"
           }
@@ -6135,7 +6337,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 315,
+            "line" : 325,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.setValid()"
           }
@@ -6154,7 +6356,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 316,
+            "line" : 326,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.version = 0x01"
           }
@@ -6173,7 +6375,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 317,
+            "line" : 327,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.pt = 0x01"
           }
@@ -6192,7 +6394,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 318,
+            "line" : 328,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.spare = 0"
           }
@@ -6211,7 +6413,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 319,
+            "line" : 329,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.ex_flag = 0"
           }
@@ -6230,7 +6432,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 320,
+            "line" : 330,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.seq_flag = 0"
           }
@@ -6249,7 +6451,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 321,
+            "line" : 331,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.npdu_flag = 0"
           }
@@ -6268,7 +6470,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 322,
+            "line" : 332,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msgtype = 0xff"
           }
@@ -6287,7 +6489,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 323,
+            "line" : 333,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.msglen = fabric_md.spgw.ipv4_len; ..."
           }
@@ -6306,7 +6508,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 324,
+            "line" : 334,
             "column" : 8,
             "source_fragment" : "hdr.outer_gtpu.teid = fabric_md.spgw.teid; ..."
           }
@@ -6315,7 +6517,7 @@
     },
     {
       "name" : "act_8",
-      "id" : 59,
+      "id" : 61,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6332,7 +6534,7 @@
     },
     {
       "name" : "act_9",
-      "id" : 60,
+      "id" : 62,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6383,7 +6585,7 @@
     },
     {
       "name" : "act_10",
-      "id" : 61,
+      "id" : 63,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6405,7 +6607,7 @@
     },
     {
       "name" : "act_11",
-      "id" : 62,
+      "id" : 64,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6427,7 +6629,7 @@
     },
     {
       "name" : "act_12",
-      "id" : 63,
+      "id" : 65,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6476,7 +6678,7 @@
     },
     {
       "name" : "act_13",
-      "id" : 64,
+      "id" : 66,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6498,7 +6700,7 @@
     },
     {
       "name" : "act_14",
-      "id" : 65,
+      "id" : 67,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6547,7 +6749,7 @@
     },
     {
       "name" : "act_15",
-      "id" : 66,
+      "id" : 68,
       "runtime_data" : [],
       "primitives" : [
         {
@@ -6564,7 +6766,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           }
@@ -6600,14 +6802,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [44],
+          "action_ids" : [46],
           "actions" : ["act"],
           "base_default_next" : "FabricIngress.spgw.interfaces",
           "next_tables" : {
             "act" : "FabricIngress.spgw.interfaces"
           },
           "default_entry" : {
-            "action_id" : 44,
+            "action_id" : 46,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6666,14 +6868,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [45],
+          "action_ids" : [47],
           "actions" : ["act_0"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_0" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 45,
+            "action_id" : 47,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6689,14 +6891,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [46],
+          "action_ids" : [48],
           "actions" : ["act_1"],
           "base_default_next" : "node_7",
           "next_tables" : {
             "act_1" : "node_7"
           },
           "default_entry" : {
-            "action_id" : 46,
+            "action_id" : 48,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -6841,7 +7043,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 168,
+            "line" : 177,
             "column" : 10,
             "source_fragment" : "uplink_pdrs"
           },
@@ -6865,11 +7067,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [40, 8],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [40, 42, 8],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -6884,7 +7087,7 @@
           "id" : 6,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 157,
+            "line" : 165,
             "column" : 10,
             "source_fragment" : "downlink_pdrs"
           },
@@ -6902,11 +7105,12 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [39, 7],
-          "actions" : ["FabricIngress.spgw.load_pdr", "NoAction"],
+          "action_ids" : [39, 41, 7],
+          "actions" : ["FabricIngress.spgw.load_pdr", "FabricIngress.spgw.load_pdr_qos", "NoAction"],
           "base_default_next" : "node_13",
           "next_tables" : {
             "FabricIngress.spgw.load_pdr" : "node_13",
+            "FabricIngress.spgw.load_pdr_qos" : "node_13",
             "NoAction" : "node_13"
           },
           "default_entry" : {
@@ -6921,7 +7125,7 @@
           "id" : 7,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 256,
+            "line" : 266,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -6932,14 +7136,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [47],
+          "action_ids" : [49],
           "actions" : ["act_2"],
           "base_default_next" : "node_15",
           "next_tables" : {
             "act_2" : "node_15"
           },
           "default_entry" : {
-            "action_id" : 47,
+            "action_id" : 49,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7084,7 +7288,7 @@
           "id" : 9,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 224,
+            "line" : 234,
             "column" : 10,
             "source_fragment" : "fars"
           },
@@ -7102,7 +7306,7 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [41, 42, 43],
+          "action_ids" : [43, 44, 45],
           "actions" : ["FabricIngress.spgw.load_normal_far", "FabricIngress.spgw.load_tunnel_far", "FabricIngress.spgw.load_dbuf_far"],
           "base_default_next" : "tbl_act_3",
           "next_tables" : {
@@ -7111,7 +7315,7 @@
             "FabricIngress.spgw.load_dbuf_far" : "tbl_act_3"
           },
           "default_entry" : {
-            "action_id" : 41,
+            "action_id" : 43,
             "action_const" : true,
             "action_data" : ["0x1", "0x0"],
             "action_entry_const" : true
@@ -7122,7 +7326,7 @@
           "id" : 10,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 273,
+            "line" : 283,
             "column" : 36,
             "source_fragment" : "="
           },
@@ -7133,14 +7337,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [48],
+          "action_ids" : [50],
           "actions" : ["act_3"],
           "base_default_next" : "node_19",
           "next_tables" : {
             "act_3" : "node_19"
           },
           "default_entry" : {
-            "action_id" : 48,
+            "action_id" : 50,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7162,14 +7366,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [49],
+          "action_ids" : [51],
           "actions" : ["act_4"],
           "base_default_next" : "node_21",
           "next_tables" : {
             "act_4" : "node_21"
           },
           "default_entry" : {
-            "action_id" : 49,
+            "action_id" : 51,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7191,14 +7395,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [50],
+          "action_ids" : [52],
           "actions" : ["act_5"],
           "base_default_next" : "FabricIngress.filtering.ingress_port_vlan",
           "next_tables" : {
             "act_5" : "FabricIngress.filtering.ingress_port_vlan"
           },
           "default_entry" : {
-            "action_id" : 50,
+            "action_id" : 52,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7700,14 +7904,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [51],
+          "action_ids" : [53],
           "actions" : ["act_6"],
           "base_default_next" : "node_40",
           "next_tables" : {
             "act_6" : "node_40"
           },
           "default_entry" : {
-            "action_id" : 51,
+            "action_id" : 53,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7729,14 +7933,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [52],
+          "action_ids" : [54],
           "actions" : ["act_7"],
           "base_default_next" : null,
           "next_tables" : {
             "act_7" : null
           },
           "default_entry" : {
-            "action_id" : 52,
+            "action_id" : 54,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -7827,7 +8031,7 @@
           "id" : 2,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 246,
+            "line" : 256,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface == SPGW_IFACE_FROM_DBUF"
           },
@@ -7853,7 +8057,7 @@
           "id" : 3,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 250,
+            "line" : 260,
             "column" : 16,
             "source_fragment" : "hdr.gtpu.isValid()"
           },
@@ -7876,7 +8080,7 @@
           "id" : 4,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 255,
+            "line" : 265,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.src_iface != SPGW_IFACE_FROM_DBUF"
           },
@@ -7902,7 +8106,7 @@
           "id" : 5,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 260,
+            "line" : 270,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_decap == true"
           },
@@ -8208,14 +8412,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [59],
+          "action_ids" : [61],
           "actions" : ["act_8"],
           "base_default_next" : "node_46",
           "next_tables" : {
             "act_8" : "node_46"
           },
           "default_entry" : {
-            "action_id" : 59,
+            "action_id" : 61,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8237,14 +8441,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [60],
+          "action_ids" : [62],
           "actions" : ["act_9"],
           "base_default_next" : "node_48",
           "next_tables" : {
             "act_9" : "node_48"
           },
           "default_entry" : {
-            "action_id" : 60,
+            "action_id" : 62,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8266,14 +8470,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [61],
+          "action_ids" : [63],
           "actions" : ["act_10"],
           "base_default_next" : "node_50",
           "next_tables" : {
             "act_10" : "node_50"
           },
           "default_entry" : {
-            "action_id" : 61,
+            "action_id" : 63,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8295,14 +8499,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [53],
+          "action_ids" : [55],
           "actions" : ["FabricEgress.egress_next.pop_mpls_if_present"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.pop_mpls_if_present" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 53,
+            "action_id" : 55,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8324,14 +8528,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [54],
+          "action_ids" : [56],
           "actions" : ["FabricEgress.egress_next.set_mpls"],
           "base_default_next" : "FabricEgress.egress_next.egress_vlan",
           "next_tables" : {
             "FabricEgress.egress_next.set_mpls" : "FabricEgress.egress_next.egress_vlan"
           },
           "default_entry" : {
-            "action_id" : 54,
+            "action_id" : 56,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8366,7 +8570,7 @@
           "with_counters" : true,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [55, 56, 57],
+          "action_ids" : [57, 58, 59],
           "actions" : ["FabricEgress.egress_next.push_vlan", "FabricEgress.egress_next.pop_vlan", "FabricEgress.egress_next.drop"],
           "base_default_next" : "node_55",
           "next_tables" : {
@@ -8375,7 +8579,7 @@
             "FabricEgress.egress_next.drop" : "node_55"
           },
           "default_entry" : {
-            "action_id" : 57,
+            "action_id" : 59,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8397,14 +8601,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [63],
+          "action_ids" : [65],
           "actions" : ["act_12"],
           "base_default_next" : "node_57",
           "next_tables" : {
             "act_12" : "node_57"
           },
           "default_entry" : {
-            "action_id" : 63,
+            "action_id" : 65,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8426,14 +8630,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [62],
+          "action_ids" : [64],
           "actions" : ["act_11"],
           "base_default_next" : "node_63",
           "next_tables" : {
             "act_11" : "node_63"
           },
           "default_entry" : {
-            "action_id" : 62,
+            "action_id" : 64,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8455,14 +8659,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [65],
+          "action_ids" : [67],
           "actions" : ["act_14"],
           "base_default_next" : "node_61",
           "next_tables" : {
             "act_14" : "node_61"
           },
           "default_entry" : {
-            "action_id" : 65,
+            "action_id" : 67,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8484,14 +8688,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [64],
+          "action_ids" : [66],
           "actions" : ["act_13"],
           "base_default_next" : "node_63",
           "next_tables" : {
             "act_13" : "node_63"
           },
           "default_entry" : {
-            "action_id" : 64,
+            "action_id" : 66,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8502,7 +8706,7 @@
           "id" : 35,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 330,
+            "line" : 340,
             "column" : 16,
             "source_fragment" : "gtpu_encap()"
           },
@@ -8513,14 +8717,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [58],
+          "action_ids" : [60],
           "actions" : ["FabricEgress.spgw.gtpu_encap"],
           "base_default_next" : "node_66",
           "next_tables" : {
             "FabricEgress.spgw.gtpu_encap" : "node_66"
           },
           "default_entry" : {
-            "action_id" : 58,
+            "action_id" : 60,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8531,7 +8735,7 @@
           "id" : 36,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 333,
+            "line" : 343,
             "column" : 16,
             "source_fragment" : "pdr_counter.count(fabric_md.spgw.ctr_id)"
           },
@@ -8542,14 +8746,14 @@
           "with_counters" : false,
           "support_timeout" : false,
           "direct_meters" : null,
-          "action_ids" : [66],
+          "action_ids" : [68],
           "actions" : ["act_15"],
           "base_default_next" : null,
           "next_tables" : {
             "act_15" : null
           },
           "default_entry" : {
-            "action_id" : 66,
+            "action_id" : 68,
             "action_const" : true,
             "action_data" : [],
             "action_entry_const" : true
@@ -8842,7 +9046,7 @@
           "id" : 24,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 328,
+            "line" : 338,
             "column" : 12,
             "source_fragment" : "fabric_md.spgw.skip_spgw == false"
           },
@@ -8875,7 +9079,7 @@
           "id" : 25,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 329,
+            "line" : 339,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.needs_gtpu_encap == true"
           },
@@ -8908,7 +9112,7 @@
           "id" : 26,
           "source_info" : {
             "filename" : "include/control/spgw.p4",
-            "line" : 332,
+            "line" : 342,
             "column" : 16,
             "source_fragment" : "fabric_md.spgw.skip_egress_pdr_ctr == false"
           },
@@ -8971,7 +9175,7 @@
       "id" : 1,
       "source_info" : {
         "filename" : "include/control/spgw.p4",
-        "line" : 349,
+        "line" : 359,
         "column" : 8,
         "source_fragment" : "update_checksum(gtpu_ipv4.isValid(), ..."
       },
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
index aaee8be..d8d338d 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric-spgw/bmv2/default/p4info.txt
@@ -408,6 +408,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -436,6 +439,9 @@
     id: 16800614
   }
   action_refs {
+    id: 16785920
+  }
+  action_refs {
     id: 16800567
     annotations: "@defaultonly"
     scope: DEFAULT_ONLY
@@ -791,6 +797,33 @@
 }
 actions {
   preamble {
+    id: 16785920
+    name: "FabricIngress.spgw.load_pdr_qos"
+    alias: "load_pdr_qos"
+  }
+  params {
+    id: 1
+    name: "ctr_id"
+    bitwidth: 32
+  }
+  params {
+    id: 2
+    name: "far_id"
+    bitwidth: 32
+  }
+  params {
+    id: 3
+    name: "needs_gtpu_decap"
+    bitwidth: 1
+  }
+  params {
+    id: 4
+    name: "qid"
+    bitwidth: 5
+  }
+}
+actions {
+  preamble {
     id: 16820307
     name: "FabricIngress.spgw.load_normal_far"
     alias: "load_normal_far"
diff --git a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
index f6c42ee..3dcb17b 100644
--- a/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
+++ b/pipelines/fabric/impl/src/main/resources/p4c-out/fabric/bmv2/default/bmv2.json
@@ -2381,7 +2381,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 116,
+            "line" : 117,
             "column" : 31,
             "source_fragment" : "0x8847; ..."
           }
@@ -2460,7 +2460,7 @@
           ],
           "source_info" : {
             "filename" : "include/control/../define.p4",
-            "line" : 115,
+            "line" : 116,
             "column" : 31,
             "source_fragment" : "0x8100; ..."
           }