1 /* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright(c) 2019-2021 Broadcom
6 #ifndef _TF_DEVICE_P4_H_
7 #define _TF_DEVICE_P4_H_
9 #include "cfa_resource_types.h"
12 #include "tf_if_tbl.h"
13 #include "tf_global_cfg.h"
15 struct tf_rm_element_cfg tf_ident_p4[TF_IDENT_TYPE_MAX] = {
16 [TF_IDENT_TYPE_L2_CTXT_HIGH] = {
17 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP_HIGH
19 [TF_IDENT_TYPE_L2_CTXT_LOW] = {
20 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_L2_CTXT_REMAP_LOW
22 [TF_IDENT_TYPE_PROF_FUNC] = {
23 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_PROF_FUNC
25 [TF_IDENT_TYPE_WC_PROF] = {
26 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_WC_TCAM_PROF_ID
28 [TF_IDENT_TYPE_EM_PROF] = {
29 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_EM_PROF_ID
33 struct tf_rm_element_cfg tf_tcam_p4[TF_TCAM_TBL_TYPE_MAX] = {
34 [TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH] = {
35 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM_HIGH
37 [TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW] = {
38 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_L2_CTXT_TCAM_LOW
40 [TF_TCAM_TBL_TYPE_PROF_TCAM] = {
41 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_PROF_TCAM
43 [TF_TCAM_TBL_TYPE_WC_TCAM] = {
44 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_WC_TCAM
46 [TF_TCAM_TBL_TYPE_SP_TCAM] = {
47 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_SP_TCAM
51 struct tf_rm_element_cfg tf_tbl_p4[TF_TBL_TYPE_MAX] = {
52 [TF_TBL_TYPE_FULL_ACT_RECORD] = {
53 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_FULL_ACTION
55 [TF_TBL_TYPE_MCAST_GROUPS] = {
56 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_MCG
58 [TF_TBL_TYPE_ACT_ENCAP_8B] = {
59 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_ENCAP_8B
61 [TF_TBL_TYPE_ACT_ENCAP_16B] = {
62 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_ENCAP_16B
64 [TF_TBL_TYPE_ACT_ENCAP_64B] = {
65 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_ENCAP_64B
67 [TF_TBL_TYPE_ACT_SP_SMAC] = {
68 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_SP_MAC
70 [TF_TBL_TYPE_ACT_SP_SMAC_IPV4] = {
71 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_SP_MAC_IPV4
73 [TF_TBL_TYPE_ACT_SP_SMAC_IPV6] = {
74 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_SP_MAC_IPV6
76 [TF_TBL_TYPE_ACT_STATS_64] = {
77 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_COUNTER_64B
79 [TF_TBL_TYPE_ACT_MODIFY_IPV4] = {
80 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_NAT_IPV4
82 [TF_TBL_TYPE_METER_PROF] = {
83 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_METER_PROF
85 [TF_TBL_TYPE_METER_INST] = {
86 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_METER
88 [TF_TBL_TYPE_MIRROR_CONFIG] = {
89 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_MIRROR
94 struct tf_rm_element_cfg tf_em_ext_p4[TF_EM_TBL_TYPE_MAX] = {
95 [TF_EM_TBL_TYPE_TBL_SCOPE] = {
96 TF_RM_ELEM_CFG_HCAPI_BA, CFA_RESOURCE_TYPE_P4_TBL_SCOPE
100 struct tf_rm_element_cfg tf_em_int_p4[TF_EM_TBL_TYPE_MAX] = {
101 [TF_EM_TBL_TYPE_EM_RECORD] = {
102 TF_RM_ELEM_CFG_HCAPI, CFA_RESOURCE_TYPE_P4_EM_REC
106 /* Note that hcapi_types from this table are from hcapi_cfa_p4.h
107 * These are not CFA resource types because they are not allocated
108 * CFA resources - they are identifiers for the interface tables
109 * shared between the firmware and the host. It may make sense to
110 * move these types to cfa_resource_types.h.
112 struct tf_if_tbl_cfg tf_if_tbl_p4[TF_IF_TBL_TYPE_MAX] = {
113 [TF_IF_TBL_TYPE_PROF_SPIF_DFLT_L2_CTXT] = {
114 TF_IF_TBL_CFG, CFA_P4_TBL_PROF_SPIF_DFLT_L2CTXT
116 [TF_IF_TBL_TYPE_PROF_PARIF_DFLT_ACT_REC_PTR] = {
117 TF_IF_TBL_CFG, CFA_P4_TBL_PROF_PARIF_DFLT_ACT_REC_PTR
119 [TF_IF_TBL_TYPE_PROF_PARIF_ERR_ACT_REC_PTR] = {
120 TF_IF_TBL_CFG, CFA_P4_TBL_PROF_PARIF_ERR_ACT_REC_PTR
122 [TF_IF_TBL_TYPE_LKUP_PARIF_DFLT_ACT_REC_PTR] = {
123 TF_IF_TBL_CFG, CFA_P4_TBL_LKUP_PARIF_DFLT_ACT_REC_PTR
127 struct tf_global_cfg_cfg tf_global_cfg_p4[TF_GLOBAL_CFG_TYPE_MAX] = {
128 [TF_TUNNEL_ENCAP] = {
129 TF_GLOBAL_CFG_CFG_HCAPI, TF_TUNNEL_ENCAP
131 [TF_ACTION_BLOCK] = {
132 TF_GLOBAL_CFG_CFG_HCAPI, TF_ACTION_BLOCK
135 #endif /* _TF_DEVICE_P4_H_ */