1 /* SPDX-License-Identifier: BSD-3-Clause 2 * Copyright(c) 2014-2021 Broadcom 3 * All rights reserved. 4 */ 5 6 #include <string.h> 7 8 #include "tf_util.h" 9 10 const char * 11 tf_dir_2_str(enum tf_dir dir) 12 { 13 switch (dir) { 14 case TF_DIR_RX: 15 return "RX"; 16 case TF_DIR_TX: 17 return "TX"; 18 default: 19 return "Invalid direction"; 20 } 21 } 22 23 const char * 24 tf_ident_2_str(enum tf_identifier_type id_type) 25 { 26 switch (id_type) { 27 case TF_IDENT_TYPE_L2_CTXT_HIGH: 28 return "l2_ctxt_remap_high"; 29 case TF_IDENT_TYPE_L2_CTXT_LOW: 30 return "l2_ctxt_remap_low"; 31 case TF_IDENT_TYPE_PROF_FUNC: 32 return "prof_func"; 33 case TF_IDENT_TYPE_WC_PROF: 34 return "wc_prof"; 35 case TF_IDENT_TYPE_EM_PROF: 36 return "em_prof"; 37 case TF_IDENT_TYPE_L2_FUNC: 38 return "l2_func"; 39 default: 40 return "Invalid identifier"; 41 } 42 } 43 44 const char * 45 tf_tcam_tbl_2_str(enum tf_tcam_tbl_type tcam_type) 46 { 47 switch (tcam_type) { 48 case TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_HIGH: 49 return "l2_ctxt_tcam_high"; 50 case TF_TCAM_TBL_TYPE_L2_CTXT_TCAM_LOW: 51 return "l2_ctxt_tcam_low"; 52 case TF_TCAM_TBL_TYPE_PROF_TCAM: 53 return "prof_tcam"; 54 case TF_TCAM_TBL_TYPE_WC_TCAM: 55 return "wc_tcam"; 56 case TF_TCAM_TBL_TYPE_VEB_TCAM: 57 return "veb_tcam"; 58 case TF_TCAM_TBL_TYPE_SP_TCAM: 59 return "sp_tcam"; 60 case TF_TCAM_TBL_TYPE_CT_RULE_TCAM: 61 return "ct_rule_tcam"; 62 #ifdef TF_TCAM_SHARED 63 case TF_TCAM_TBL_TYPE_WC_TCAM_HIGH: 64 return "wc_tcam_hi"; 65 case TF_TCAM_TBL_TYPE_WC_TCAM_LOW: 66 return "wc_tcam_lo"; 67 #endif 68 default: 69 return "Invalid tcam table type"; 70 } 71 } 72 73 const char * 74 tf_tbl_type_2_str(enum tf_tbl_type tbl_type) 75 { 76 switch (tbl_type) { 77 case TF_TBL_TYPE_FULL_ACT_RECORD: 78 return "Full Action record"; 79 case TF_TBL_TYPE_MCAST_GROUPS: 80 return "Multicast Groups"; 81 case TF_TBL_TYPE_ACT_ENCAP_8B: 82 return "Encap 8B"; 83 case TF_TBL_TYPE_ACT_ENCAP_16B: 84 return "Encap 16B"; 85 case TF_TBL_TYPE_ACT_ENCAP_32B: 86 return "Encap 32B"; 87 case TF_TBL_TYPE_ACT_ENCAP_64B: 88 return "Encap 64B"; 89 case TF_TBL_TYPE_ACT_SP_SMAC: 90 return "Source Properties SMAC"; 91 case TF_TBL_TYPE_ACT_SP_SMAC_IPV4: 92 return "Source Properties SMAC IPv4"; 93 case TF_TBL_TYPE_ACT_SP_SMAC_IPV6: 94 return "Source Properties SMAC IPv6"; 95 case TF_TBL_TYPE_ACT_STATS_64: 96 return "Stats 64B"; 97 case TF_TBL_TYPE_ACT_MODIFY_IPV4: 98 return "Modify IPv4"; 99 case TF_TBL_TYPE_METER_PROF: 100 return "Meter Profile"; 101 case TF_TBL_TYPE_METER_INST: 102 return "Meter"; 103 case TF_TBL_TYPE_MIRROR_CONFIG: 104 return "Mirror"; 105 case TF_TBL_TYPE_UPAR: 106 return "UPAR"; 107 case TF_TBL_TYPE_METADATA: 108 return "Metadata"; 109 case TF_TBL_TYPE_EM_FKB: 110 return "EM Flexible Key Builder"; 111 case TF_TBL_TYPE_WC_FKB: 112 return "WC Flexible Key Builder"; 113 case TF_TBL_TYPE_EXT: 114 return "External"; 115 default: 116 return "Invalid tbl type"; 117 } 118 } 119 120 const char * 121 tf_em_tbl_type_2_str(enum tf_em_tbl_type em_type) 122 { 123 switch (em_type) { 124 case TF_EM_TBL_TYPE_EM_RECORD: 125 return "EM Record"; 126 case TF_EM_TBL_TYPE_TBL_SCOPE: 127 return "Table Scope"; 128 default: 129 return "Invalid EM type"; 130 } 131 } 132 133 const char * 134 tf_module_subtype_2_str(enum tf_module_type module, 135 uint16_t subtype) 136 { 137 switch (module) { 138 case TF_MODULE_TYPE_IDENTIFIER: 139 return tf_ident_2_str(subtype); 140 case TF_MODULE_TYPE_TABLE: 141 return tf_tbl_type_2_str(subtype); 142 case TF_MODULE_TYPE_TCAM: 143 return tf_tcam_tbl_2_str(subtype); 144 case TF_MODULE_TYPE_EM: 145 return tf_em_tbl_type_2_str(subtype); 146 default: 147 return "Invalid Module type"; 148 } 149 } 150 151 const char * 152 tf_module_2_str(enum tf_module_type module) 153 { 154 switch (module) { 155 case TF_MODULE_TYPE_IDENTIFIER: 156 return "Identifier"; 157 case TF_MODULE_TYPE_TABLE: 158 return "Table"; 159 case TF_MODULE_TYPE_TCAM: 160 return "TCAM"; 161 case TF_MODULE_TYPE_EM: 162 return "EM"; 163 default: 164 return "Invalid Device Module type"; 165 } 166 } 167