Refactor fabric.p4 INT support to allow compilation on more P4 targets
Also use constant entries for instruction mask tables to avoid
programming them at runtime.
Change-Id: Ia1ab1ecd42a433daec171f9a30bcdba3b8484061
diff --git a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
index 545564c..cc19487 100644
--- a/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
+++ b/pipelines/fabric/src/main/resources/p4c-out/fabric-int/bmv2/default/p4info.txt
@@ -18,30 +18,7 @@
annotations: "@defaultonly()"
}
direct_resource_ids: 318787614
- size: 256
- idle_timeout_behavior: NO_TIMEOUT
-}
-tables {
- preamble {
- id: 33561619
- name: "FabricIngress.process_set_source_sink.tb_set_sink"
- alias: "tb_set_sink"
- }
- match_fields {
- id: 1
- name: "standard_metadata.egress_spec"
- bitwidth: 9
- match_type: EXACT
- }
- action_refs {
- id: 16788951
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
- }
- direct_resource_ids: 318770551
- size: 256
+ size: 511
idle_timeout_behavior: NO_TIMEOUT
}
tables {
@@ -409,8 +386,8 @@
}
tables {
preamble {
- id: 33566961
- name: "FabricEgress.process_int_source.tb_int_source"
+ id: 33612258
+ name: "FabricEgress.process_int_main.process_int_source.tb_int_source"
alias: "tb_int_source"
}
match_fields {
@@ -438,37 +415,36 @@
match_type: TERNARY
}
action_refs {
- id: 16807851
+ id: 16785857
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318776637
+ direct_resource_ids: 318800047
size: 1024
idle_timeout_behavior: NO_TIMEOUT
}
tables {
preamble {
- id: 33602084
- name: "FabricEgress.process_int_transit.tb_int_insert"
+ id: 33599867
+ name: "FabricEgress.process_int_main.process_int_transit.tb_int_insert"
alias: "tb_int_insert"
}
action_refs {
- id: 16806530
+ id: 16780783
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318794595
- size: 2
+ size: 1024
idle_timeout_behavior: NO_TIMEOUT
}
tables {
preamble {
- id: 33561642
- name: "FabricEgress.process_int_transit.tb_int_inst_0003"
+ id: 33569467
+ name: "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0003"
alias: "tb_int_inst_0003"
}
match_fields {
@@ -478,65 +454,65 @@
match_type: EXACT
}
action_refs {
- id: 16788439
+ id: 16809886
}
action_refs {
- id: 16792702
+ id: 16783130
}
action_refs {
- id: 16834796
+ id: 16809096
}
action_refs {
- id: 16815381
+ id: 16834117
}
action_refs {
- id: 16824457
+ id: 16825314
}
action_refs {
- id: 16796364
+ id: 16811436
}
action_refs {
- id: 16806322
+ id: 16802199
}
action_refs {
- id: 16819063
+ id: 16796779
}
action_refs {
- id: 16828306
+ id: 16787676
}
action_refs {
- id: 16799786
+ id: 16825351
}
action_refs {
- id: 16796975
+ id: 16793999
}
action_refs {
- id: 16801652
+ id: 16786714
}
action_refs {
- id: 16778440
+ id: 16814203
}
action_refs {
- id: 16790887
+ id: 16807054
}
action_refs {
- id: 16783849
+ id: 16800064
}
action_refs {
- id: 16837726
+ id: 16792997
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318777781
size: 16
idle_timeout_behavior: NO_TIMEOUT
+ is_const_table: true
}
tables {
preamble {
- id: 33571998
- name: "FabricEgress.process_int_transit.tb_int_inst_0407"
+ id: 33595914
+ name: "FabricEgress.process_int_main.process_int_transit.tb_int_inst_0407"
alias: "tb_int_inst_0407"
}
match_fields {
@@ -546,76 +522,60 @@
match_type: EXACT
}
action_refs {
- id: 16839298
+ id: 16819022
}
action_refs {
- id: 16837018
+ id: 16804144
}
action_refs {
- id: 16827414
+ id: 16829117
}
action_refs {
- id: 16786021
+ id: 16797781
}
action_refs {
- id: 16785131
+ id: 16813543
}
action_refs {
- id: 16808652
+ id: 16824974
}
action_refs {
- id: 16799296
+ id: 16815362
}
action_refs {
- id: 16780668
+ id: 16835399
}
action_refs {
- id: 16805625
+ id: 16834505
}
action_refs {
- id: 16778495
+ id: 16811493
}
action_refs {
- id: 16784981
+ id: 16825476
}
action_refs {
- id: 16806353
+ id: 16799777
}
action_refs {
- id: 16802140
+ id: 16829592
}
action_refs {
- id: 16827601
+ id: 16805877
}
action_refs {
- id: 16820295
+ id: 16780182
}
action_refs {
- id: 16810955
+ id: 16799476
}
action_refs {
id: 16800567
annotations: "@defaultonly()"
}
- direct_resource_ids: 318818305
size: 16
idle_timeout_behavior: NO_TIMEOUT
-}
-tables {
- preamble {
- id: 33607792
- name: "FabricEgress.process_int_report.tb_generate_report"
- alias: "tb_generate_report"
- }
- action_refs {
- id: 16814383
- }
- action_refs {
- id: 16800567
- annotations: "@defaultonly()"
- }
- size: 1024
- idle_timeout_behavior: NO_TIMEOUT
+ is_const_table: true
}
tables {
preamble {
@@ -669,13 +629,6 @@
}
actions {
preamble {
- id: 16788951
- name: "FabricIngress.process_set_source_sink.int_set_sink"
- alias: "int_set_sink"
- }
-}
-actions {
- preamble {
id: 16798734
name: "FabricIngress.filtering.drop"
alias: "filtering.drop"
@@ -1048,8 +1001,8 @@
}
actions {
preamble {
- id: 16807851
- name: "FabricEgress.process_int_source.int_source_dscp"
+ id: 16785857
+ name: "FabricEgress.process_int_main.process_int_source.int_source_dscp"
alias: "int_source_dscp"
}
params {
@@ -1075,16 +1028,9 @@
}
actions {
preamble {
- id: 16806280
- name: "FabricEgress.process_int_transit.int_update_total_hop_cnt"
- alias: "int_update_total_hop_cnt"
- }
-}
-actions {
- preamble {
- id: 16806530
- name: "FabricEgress.process_int_transit.int_transit"
- alias: "int_transit"
+ id: 16780783
+ name: "FabricEgress.process_int_main.process_int_transit.init_metadata"
+ alias: "init_metadata"
}
params {
id: 1
@@ -1094,297 +1040,230 @@
}
actions {
preamble {
- id: 16788439
- name: "FabricEgress.process_int_transit.int_set_header_0003_i0"
+ id: 16809886
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i0"
alias: "int_set_header_0003_i0"
}
}
actions {
preamble {
- id: 16792702
- name: "FabricEgress.process_int_transit.int_set_header_0003_i1"
+ id: 16783130
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i1"
alias: "int_set_header_0003_i1"
}
}
actions {
preamble {
- id: 16834796
- name: "FabricEgress.process_int_transit.int_set_header_0003_i2"
+ id: 16809096
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i2"
alias: "int_set_header_0003_i2"
}
}
actions {
preamble {
- id: 16815381
- name: "FabricEgress.process_int_transit.int_set_header_0003_i3"
+ id: 16834117
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i3"
alias: "int_set_header_0003_i3"
}
}
actions {
preamble {
- id: 16824457
- name: "FabricEgress.process_int_transit.int_set_header_0003_i4"
+ id: 16825314
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i4"
alias: "int_set_header_0003_i4"
}
}
actions {
preamble {
- id: 16796364
- name: "FabricEgress.process_int_transit.int_set_header_0003_i5"
+ id: 16811436
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i5"
alias: "int_set_header_0003_i5"
}
}
actions {
preamble {
- id: 16806322
- name: "FabricEgress.process_int_transit.int_set_header_0003_i6"
+ id: 16802199
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i6"
alias: "int_set_header_0003_i6"
}
}
actions {
preamble {
- id: 16819063
- name: "FabricEgress.process_int_transit.int_set_header_0003_i7"
+ id: 16796779
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i7"
alias: "int_set_header_0003_i7"
}
}
actions {
preamble {
- id: 16828306
- name: "FabricEgress.process_int_transit.int_set_header_0003_i8"
+ id: 16787676
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i8"
alias: "int_set_header_0003_i8"
}
}
actions {
preamble {
- id: 16799786
- name: "FabricEgress.process_int_transit.int_set_header_0003_i9"
+ id: 16825351
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i9"
alias: "int_set_header_0003_i9"
}
}
actions {
preamble {
- id: 16796975
- name: "FabricEgress.process_int_transit.int_set_header_0003_i10"
+ id: 16793999
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i10"
alias: "int_set_header_0003_i10"
}
}
actions {
preamble {
- id: 16801652
- name: "FabricEgress.process_int_transit.int_set_header_0003_i11"
+ id: 16786714
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i11"
alias: "int_set_header_0003_i11"
}
}
actions {
preamble {
- id: 16778440
- name: "FabricEgress.process_int_transit.int_set_header_0003_i12"
+ id: 16814203
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i12"
alias: "int_set_header_0003_i12"
}
}
actions {
preamble {
- id: 16790887
- name: "FabricEgress.process_int_transit.int_set_header_0003_i13"
+ id: 16807054
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i13"
alias: "int_set_header_0003_i13"
}
}
actions {
preamble {
- id: 16783849
- name: "FabricEgress.process_int_transit.int_set_header_0003_i14"
+ id: 16800064
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i14"
alias: "int_set_header_0003_i14"
}
}
actions {
preamble {
- id: 16837726
- name: "FabricEgress.process_int_transit.int_set_header_0003_i15"
+ id: 16792997
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0003_i15"
alias: "int_set_header_0003_i15"
}
}
actions {
preamble {
- id: 16839298
- name: "FabricEgress.process_int_transit.int_set_header_0407_i0"
+ id: 16819022
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i0"
alias: "int_set_header_0407_i0"
}
}
actions {
preamble {
- id: 16837018
- name: "FabricEgress.process_int_transit.int_set_header_0407_i1"
+ id: 16804144
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i1"
alias: "int_set_header_0407_i1"
}
}
actions {
preamble {
- id: 16827414
- name: "FabricEgress.process_int_transit.int_set_header_0407_i2"
+ id: 16829117
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i2"
alias: "int_set_header_0407_i2"
}
}
actions {
preamble {
- id: 16786021
- name: "FabricEgress.process_int_transit.int_set_header_0407_i3"
+ id: 16797781
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i3"
alias: "int_set_header_0407_i3"
}
}
actions {
preamble {
- id: 16785131
- name: "FabricEgress.process_int_transit.int_set_header_0407_i4"
+ id: 16813543
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i4"
alias: "int_set_header_0407_i4"
}
}
actions {
preamble {
- id: 16808652
- name: "FabricEgress.process_int_transit.int_set_header_0407_i5"
+ id: 16824974
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i5"
alias: "int_set_header_0407_i5"
}
}
actions {
preamble {
- id: 16799296
- name: "FabricEgress.process_int_transit.int_set_header_0407_i6"
+ id: 16815362
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i6"
alias: "int_set_header_0407_i6"
}
}
actions {
preamble {
- id: 16780668
- name: "FabricEgress.process_int_transit.int_set_header_0407_i7"
+ id: 16835399
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i7"
alias: "int_set_header_0407_i7"
}
}
actions {
preamble {
- id: 16805625
- name: "FabricEgress.process_int_transit.int_set_header_0407_i8"
+ id: 16834505
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i8"
alias: "int_set_header_0407_i8"
}
}
actions {
preamble {
- id: 16778495
- name: "FabricEgress.process_int_transit.int_set_header_0407_i9"
+ id: 16811493
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i9"
alias: "int_set_header_0407_i9"
}
}
actions {
preamble {
- id: 16784981
- name: "FabricEgress.process_int_transit.int_set_header_0407_i10"
+ id: 16825476
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i10"
alias: "int_set_header_0407_i10"
}
}
actions {
preamble {
- id: 16806353
- name: "FabricEgress.process_int_transit.int_set_header_0407_i11"
+ id: 16799777
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i11"
alias: "int_set_header_0407_i11"
}
}
actions {
preamble {
- id: 16802140
- name: "FabricEgress.process_int_transit.int_set_header_0407_i12"
+ id: 16829592
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i12"
alias: "int_set_header_0407_i12"
}
}
actions {
preamble {
- id: 16827601
- name: "FabricEgress.process_int_transit.int_set_header_0407_i13"
+ id: 16805877
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i13"
alias: "int_set_header_0407_i13"
}
}
actions {
preamble {
- id: 16820295
- name: "FabricEgress.process_int_transit.int_set_header_0407_i14"
+ id: 16780182
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i14"
alias: "int_set_header_0407_i14"
}
}
actions {
preamble {
- id: 16810955
- name: "FabricEgress.process_int_transit.int_set_header_0407_i15"
+ id: 16799476
+ name: "FabricEgress.process_int_main.process_int_transit.int_set_header_0407_i15"
alias: "int_set_header_0407_i15"
}
}
actions {
preamble {
- id: 16816602
- name: "FabricEgress.process_int_outer_encap.int_update_ipv4"
- alias: "int_update_ipv4"
- }
-}
-actions {
- preamble {
- id: 16829666
- name: "FabricEgress.process_int_outer_encap.int_update_udp"
- alias: "int_update_udp"
- }
-}
-actions {
- preamble {
- id: 16826978
- name: "FabricEgress.process_int_outer_encap.int_update_shim"
- alias: "int_update_shim"
- }
-}
-actions {
- preamble {
- id: 16814383
- name: "FabricEgress.process_int_report.do_report_encapsulation"
- alias: "do_report_encapsulation"
- }
- params {
- id: 1
- name: "src_mac"
- bitwidth: 48
- }
- params {
- id: 2
- name: "mon_mac"
- bitwidth: 48
- }
- params {
- id: 3
- name: "src_ip"
- bitwidth: 32
- }
- params {
- id: 4
- name: "mon_ip"
- bitwidth: 32
- }
- params {
- id: 5
- name: "mon_port"
- bitwidth: 16
- }
-}
-actions {
- preamble {
- id: 16810741
- name: "FabricEgress.process_int_sink.restore_header"
- alias: "restore_header"
- }
-}
-actions {
- preamble {
- id: 16787662
- name: "FabricEgress.process_int_sink.int_sink"
- alias: "int_sink"
- }
-}
-actions {
- preamble {
id: 16801047
name: "FabricEgress.pkt_io_egress.pop_vlan"
alias: "pkt_io_egress.pop_vlan"
@@ -1442,17 +1321,6 @@
}
direct_counters {
preamble {
- id: 318770551
- name: "FabricIngress.process_set_source_sink.counter_set_sink"
- alias: "counter_set_sink"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33561619
-}
-direct_counters {
- preamble {
id: 318815501
name: "FabricIngress.filtering.ingress_port_vlan_counter"
alias: "ingress_port_vlan_counter"
@@ -1563,47 +1431,14 @@
}
direct_counters {
preamble {
- id: 318776637
- name: "FabricEgress.process_int_source.counter_int_source"
+ id: 318800047
+ name: "FabricEgress.process_int_main.process_int_source.counter_int_source"
alias: "counter_int_source"
}
spec {
unit: BOTH
}
- direct_table_id: 33566961
-}
-direct_counters {
- preamble {
- id: 318794595
- name: "FabricEgress.process_int_transit.counter_int_insert"
- alias: "counter_int_insert"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33602084
-}
-direct_counters {
- preamble {
- id: 318777781
- name: "FabricEgress.process_int_transit.counter_int_inst_0003"
- alias: "counter_int_inst_0003"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33561642
-}
-direct_counters {
- preamble {
- id: 318818305
- name: "FabricEgress.process_int_transit.counter_int_inst_0407"
- alias: "counter_int_inst_0407"
- }
- spec {
- unit: BOTH
- }
- direct_table_id: 33571998
+ direct_table_id: 33612258
}
direct_counters {
preamble {