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_COMPACT_ACT_RECORD: 80 return "Compact Action record"; 81 case TF_TBL_TYPE_MCAST_GROUPS: 82 return "Multicast Groups"; 83 case TF_TBL_TYPE_ACT_ENCAP_8B: 84 return "Encap 8B"; 85 case TF_TBL_TYPE_ACT_ENCAP_16B: 86 return "Encap 16B"; 87 case TF_TBL_TYPE_ACT_ENCAP_32B: 88 return "Encap 32B"; 89 case TF_TBL_TYPE_ACT_ENCAP_64B: 90 return "Encap 64B"; 91 case TF_TBL_TYPE_ACT_SP_SMAC: 92 return "Source Properties SMAC"; 93 case TF_TBL_TYPE_ACT_SP_SMAC_IPV4: 94 return "Source Properties SMAC IPv4"; 95 case TF_TBL_TYPE_ACT_SP_SMAC_IPV6: 96 return "Source Properties SMAC IPv6"; 97 case TF_TBL_TYPE_ACT_STATS_64: 98 return "Stats 64B"; 99 case TF_TBL_TYPE_ACT_MODIFY_IPV4: 100 return "Modify IPv4"; 101 case TF_TBL_TYPE_ACT_MODIFY_8B: 102 return "Modify 8B"; 103 case TF_TBL_TYPE_ACT_MODIFY_16B: 104 return "Modify 16B"; 105 case TF_TBL_TYPE_ACT_MODIFY_32B: 106 return "Modify 32B"; 107 case TF_TBL_TYPE_ACT_MODIFY_64B: 108 return "Modify 64B"; 109 case TF_TBL_TYPE_METER_PROF: 110 return "Meter Profile"; 111 case TF_TBL_TYPE_METER_INST: 112 return "Meter"; 113 case TF_TBL_TYPE_MIRROR_CONFIG: 114 return "Mirror"; 115 case TF_TBL_TYPE_UPAR: 116 return "UPAR"; 117 case TF_TBL_TYPE_METADATA: 118 return "Metadata"; 119 case TF_TBL_TYPE_EM_FKB: 120 return "EM Flexible Key Builder"; 121 case TF_TBL_TYPE_WC_FKB: 122 return "WC Flexible Key Builder"; 123 case TF_TBL_TYPE_EXT: 124 return "External"; 125 case TF_TBL_TYPE_METER_DROP_CNT: 126 return "Meter drop counter"; 127 default: 128 return "Invalid tbl type"; 129 } 130 } 131 132 const char * 133 tf_em_tbl_type_2_str(enum tf_em_tbl_type em_type) 134 { 135 switch (em_type) { 136 case TF_EM_TBL_TYPE_EM_RECORD: 137 return "EM Record"; 138 case TF_EM_TBL_TYPE_TBL_SCOPE: 139 return "Table Scope"; 140 default: 141 return "Invalid EM type"; 142 } 143 } 144 145 const char * 146 tf_module_subtype_2_str(enum tf_module_type module, 147 uint16_t subtype) 148 { 149 switch (module) { 150 case TF_MODULE_TYPE_IDENTIFIER: 151 return tf_ident_2_str(subtype); 152 case TF_MODULE_TYPE_TABLE: 153 return tf_tbl_type_2_str(subtype); 154 case TF_MODULE_TYPE_TCAM: 155 return tf_tcam_tbl_2_str(subtype); 156 case TF_MODULE_TYPE_EM: 157 return tf_em_tbl_type_2_str(subtype); 158 default: 159 return "Invalid Module type"; 160 } 161 } 162 163 const char * 164 tf_module_2_str(enum tf_module_type module) 165 { 166 switch (module) { 167 case TF_MODULE_TYPE_IDENTIFIER: 168 return "Identifier"; 169 case TF_MODULE_TYPE_TABLE: 170 return "Table"; 171 case TF_MODULE_TYPE_TCAM: 172 return "TCAM"; 173 case TF_MODULE_TYPE_EM: 174 return "EM"; 175 default: 176 return "Invalid Device Module type"; 177 } 178 } 179