diff --git a/tools/test/p4src/p4-14/include/actions.p4 b/tools/test/p4src/p4-14/include/actions.p4
index 961890d..1e6d425 100644
--- a/tools/test/p4src/p4-14/include/actions.p4
+++ b/tools/test/p4src/p4-14/include/actions.p4
@@ -15,10 +15,8 @@
 }
 
 action send_to_cpu() {
-    #ifdef __TOFINO_BUILD__
-    modify_field(ig_intr_md_for_tm.copy_to_cpu, 1);
-    #else
-    modify_field(standard_metadata.egress_spec, CPU_PORT);
-    #endif
+    modify_field(EGR_PORT_FIELD, CPU_PORT);
+    add_header(packet_in_hdr);
+    modify_field(packet_in_hdr.ingress_port, IGR_PORT_FIELD);
 }
 #endif
\ No newline at end of file
diff --git a/tools/test/p4src/p4-14/include/defines.p4 b/tools/test/p4src/p4-14/include/defines.p4
index 35baa4f..e054493 100644
--- a/tools/test/p4src/p4-14/include/defines.p4
+++ b/tools/test/p4src/p4-14/include/defines.p4
@@ -1,8 +1,7 @@
 // Logic ports as defined in the simple_switch target
-#define MAX_PORTS 254
+#define MAX_PORTS 511
 #define DROP_PORT 511
 
-#define NULL_ETH_TYPE 0x00
 #define ETHERTYPE_IPV4 0x0800
 #define IP_PROTOCOLS_TCP  6
 #define IP_PROTOCOLS_UDP  17
diff --git a/tools/test/p4src/p4-14/include/packet_io.p4 b/tools/test/p4src/p4-14/include/packet_io.p4
index 5da7a65..5cd71a3 100644
--- a/tools/test/p4src/p4-14/include/packet_io.p4
+++ b/tools/test/p4src/p4-14/include/packet_io.p4
@@ -3,43 +3,21 @@
 #include "headers.p4"
 #include "parser.p4"
 
-action _packet_out() {
+action _process_packet_out() {
     modify_field(EGR_PORT_FIELD, packet_out_hdr.egress_port);
     remove_header(packet_out_hdr);
 }
 
-table ingress_pkt {
+table process_packet_out_table {
     actions {
-        _packet_out;
+        _process_packet_out;
     }
-    default_action: _packet_out();
+    default_action: _process_packet_out();
 }
 
-control ingress_pkt_io {
+control ingress_pkt_io_control {
     if (valid(packet_out_hdr)) {
-        apply(ingress_pkt);
-    }
-}
-
-action add_packet_in_hdr() {
-    add_header(packet_in_hdr);
-    modify_field(packet_in_hdr.ingress_port, IGR_PORT_FIELD);
-}
-
-table egress_pkt {
-    actions {
-        add_packet_in_hdr;
-    }
-    default_action: add_packet_in_hdr();
-}
-
-control egress_pkt_io {
-    #ifdef __TOFINO_BUILD__
-    if (ig_intr_md_for_tm.copy_to_cpu == 1) {
-    #else
-    if (IGR_PORT_FIELD == CPU_PORT) {
-    #endif
-        apply(egress_pkt);
+        apply(process_packet_out_table);
     }
 }
 
diff --git a/tools/test/p4src/p4-14/include/parser.p4 b/tools/test/p4src/p4-14/include/parser.p4
index 73dcdfd..0223297 100644
--- a/tools/test/p4src/p4-14/include/parser.p4
+++ b/tools/test/p4src/p4-14/include/parser.p4
@@ -11,11 +11,12 @@
 header udp_t udp;
 
 parser start {
-    // FIXME: Cheat the compiler to generate the deparser of packet in
-    // This is just a hack, we assume first 8 bit of etherType won't be 0
-    return select( current(96, 8) ) {
-        NULL_ETH_TYPE : parse_pkt_in;
-        default       : default_parser;
+    // Hack to force deparsing of packet_in hdr.
+    // We assume it's impossible to receive a pkt with the first 8 bits of etherType 0.
+    // p4c-tofino complains when switching over 16 bits, i.e. the full etherType
+    return select(current(96, 8)) {
+        0 : parse_pkt_in;
+        default  : default_parser;
     }
 }
 
