1014a9e22SJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause 2014a9e22SJerin Jacob * Copyright(C) 2021 Marvell. 3014a9e22SJerin Jacob */ 4014a9e22SJerin Jacob 5014a9e22SJerin Jacob #include "roc_api.h" 6014a9e22SJerin Jacob #include "roc_priv.h" 7014a9e22SJerin Jacob 8014a9e22SJerin Jacob const char * 9014a9e22SJerin Jacob roc_error_msg_get(int errorcode) 10014a9e22SJerin Jacob { 11014a9e22SJerin Jacob const char *err_msg; 12014a9e22SJerin Jacob 13014a9e22SJerin Jacob switch (errorcode) { 148dcdf319SJerin Jacob case NIX_AF_ERR_PARAM: 158dcdf319SJerin Jacob case NIX_ERR_PARAM: 16124ff1a4SAshwin Sekhar T K case NPA_ERR_PARAM: 172199f5cdSKiran Kumar K case NPC_ERR_PARAM: 189b727f85SPavan Nikhilesh case SSO_ERR_PARAM: 19f752780fSAkhil Goyal case MCS_ERR_PARAM: 20*318ee1b0SAkhil Goyal case RVU_ERR_PARAM: 21014a9e22SJerin Jacob case UTIL_ERR_PARAM: 22014a9e22SJerin Jacob err_msg = "Invalid parameter"; 23014a9e22SJerin Jacob break; 248dcdf319SJerin Jacob case NIX_ERR_NO_MEM: 252199f5cdSKiran Kumar K case NPC_ERR_NO_MEM: 26*318ee1b0SAkhil Goyal case RVU_ERR_NO_MEM: 278dcdf319SJerin Jacob err_msg = "Out of memory"; 288dcdf319SJerin Jacob break; 298dcdf319SJerin Jacob case NIX_ERR_INVALID_RANGE: 302199f5cdSKiran Kumar K case NPC_ERR_INVALID_RANGE: 318dcdf319SJerin Jacob err_msg = "Range is not supported"; 328dcdf319SJerin Jacob break; 338dcdf319SJerin Jacob case NIX_ERR_INTERNAL: 342199f5cdSKiran Kumar K case NPC_ERR_INTERNAL: 358dcdf319SJerin Jacob err_msg = "Internal error"; 368dcdf319SJerin Jacob break; 378dcdf319SJerin Jacob case NIX_ERR_OP_NOTSUP: 388dcdf319SJerin Jacob err_msg = "Operation not supported"; 398dcdf319SJerin Jacob break; 40b7cb2203SSunil Kumar Kori case NIX_ERR_HW_NOTSUP: 41f752780fSAkhil Goyal case MCS_ERR_HW_NOTSUP: 42b7cb2203SSunil Kumar Kori err_msg = "Hardware does not support"; 43b7cb2203SSunil Kumar Kori break; 448dcdf319SJerin Jacob case NIX_ERR_QUEUE_INVALID_RANGE: 458dcdf319SJerin Jacob err_msg = "Invalid Queue range"; 468dcdf319SJerin Jacob break; 478dcdf319SJerin Jacob case NIX_ERR_AQ_READ_FAILED: 488dcdf319SJerin Jacob err_msg = "AQ read failed"; 498dcdf319SJerin Jacob break; 508dcdf319SJerin Jacob case NIX_ERR_AQ_WRITE_FAILED: 518dcdf319SJerin Jacob err_msg = "AQ write failed"; 528dcdf319SJerin Jacob break; 53fcdef46bSNithin Dabilpuram case NIX_ERR_TM_LEAF_NODE_GET: 54fcdef46bSNithin Dabilpuram err_msg = "TM leaf node get failed"; 55fcdef46bSNithin Dabilpuram break; 56fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_LVL: 57fcdef46bSNithin Dabilpuram err_msg = "TM node level invalid"; 58fcdef46bSNithin Dabilpuram break; 59fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_PRIO: 60fcdef46bSNithin Dabilpuram err_msg = "TM node priority invalid"; 61fcdef46bSNithin Dabilpuram break; 62fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_PARENT: 63fcdef46bSNithin Dabilpuram err_msg = "TM parent id invalid"; 64fcdef46bSNithin Dabilpuram break; 65fcdef46bSNithin Dabilpuram case NIX_ERR_TM_NODE_EXISTS: 66fcdef46bSNithin Dabilpuram err_msg = "TM Node Exists"; 67fcdef46bSNithin Dabilpuram break; 68fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_NODE: 69fcdef46bSNithin Dabilpuram err_msg = "TM node id invalid"; 70fcdef46bSNithin Dabilpuram break; 71fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_SHAPER_PROFILE: 72fcdef46bSNithin Dabilpuram err_msg = "TM shaper profile invalid"; 73fcdef46bSNithin Dabilpuram break; 741a362d74SSatha Rao case NIX_ERR_TM_PKT_MODE_MISMATCH: 751a362d74SSatha Rao err_msg = "shaper profile pkt mode mismatch"; 761a362d74SSatha Rao break; 77fcdef46bSNithin Dabilpuram case NIX_ERR_TM_WEIGHT_EXCEED: 78fcdef46bSNithin Dabilpuram err_msg = "TM DWRR weight exceeded"; 79fcdef46bSNithin Dabilpuram break; 80fcdef46bSNithin Dabilpuram case NIX_ERR_TM_CHILD_EXISTS: 81fcdef46bSNithin Dabilpuram err_msg = "TM node children exists"; 82fcdef46bSNithin Dabilpuram break; 83fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_PEAK_SZ: 84fcdef46bSNithin Dabilpuram err_msg = "TM peak size invalid"; 85fcdef46bSNithin Dabilpuram break; 86fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_PEAK_RATE: 87fcdef46bSNithin Dabilpuram err_msg = "TM peak rate invalid"; 88fcdef46bSNithin Dabilpuram break; 89fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_COMMIT_SZ: 90fcdef46bSNithin Dabilpuram err_msg = "TM commit size invalid"; 91fcdef46bSNithin Dabilpuram break; 92fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_COMMIT_RATE: 93fcdef46bSNithin Dabilpuram err_msg = "TM commit rate invalid"; 94fcdef46bSNithin Dabilpuram break; 95fcdef46bSNithin Dabilpuram case NIX_ERR_TM_SHAPER_PROFILE_IN_USE: 96fcdef46bSNithin Dabilpuram err_msg = "TM shaper profile in use"; 97fcdef46bSNithin Dabilpuram break; 98fcdef46bSNithin Dabilpuram case NIX_ERR_TM_SHAPER_PROFILE_EXISTS: 99fcdef46bSNithin Dabilpuram err_msg = "TM shaper profile exists"; 100fcdef46bSNithin Dabilpuram break; 1011a362d74SSatha Rao case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST: 1021a362d74SSatha Rao err_msg = "length adjust invalid"; 1031a362d74SSatha Rao break; 104fcdef46bSNithin Dabilpuram case NIX_ERR_TM_INVALID_TREE: 105fcdef46bSNithin Dabilpuram err_msg = "TM tree invalid"; 106fcdef46bSNithin Dabilpuram break; 107fcdef46bSNithin Dabilpuram case NIX_ERR_TM_PARENT_PRIO_UPDATE: 108fcdef46bSNithin Dabilpuram err_msg = "TM node parent and prio update failed"; 109fcdef46bSNithin Dabilpuram break; 110fcdef46bSNithin Dabilpuram case NIX_ERR_TM_PRIO_EXCEEDED: 111fcdef46bSNithin Dabilpuram err_msg = "TM node priority exceeded"; 112fcdef46bSNithin Dabilpuram break; 113fcdef46bSNithin Dabilpuram case NIX_ERR_TM_PRIO_ORDER: 114fcdef46bSNithin Dabilpuram err_msg = "TM node priority not in order"; 115fcdef46bSNithin Dabilpuram break; 116fcdef46bSNithin Dabilpuram case NIX_ERR_TM_MULTIPLE_RR_GROUPS: 117fcdef46bSNithin Dabilpuram err_msg = "TM multiple rr groups"; 118fcdef46bSNithin Dabilpuram break; 119fcdef46bSNithin Dabilpuram case NIX_ERR_TM_SQ_UPDATE_FAIL: 120fcdef46bSNithin Dabilpuram err_msg = "TM SQ update failed"; 121fcdef46bSNithin Dabilpuram break; 1228dcdf319SJerin Jacob case NIX_ERR_NDC_SYNC: 1238dcdf319SJerin Jacob err_msg = "NDC Sync failed"; 1248dcdf319SJerin Jacob break; 1252199f5cdSKiran Kumar K case NPC_ERR_INVALID_SPEC: 1262199f5cdSKiran Kumar K err_msg = "NPC invalid spec"; 1272199f5cdSKiran Kumar K break; 1282199f5cdSKiran Kumar K case NPC_ERR_INVALID_MASK: 1292199f5cdSKiran Kumar K err_msg = "NPC invalid mask"; 1302199f5cdSKiran Kumar K break; 1312199f5cdSKiran Kumar K case NPC_ERR_INVALID_KEX: 1322199f5cdSKiran Kumar K err_msg = "NPC invalid key"; 1332199f5cdSKiran Kumar K break; 1342199f5cdSKiran Kumar K case NPC_ERR_INVALID_SIZE: 1352199f5cdSKiran Kumar K err_msg = "NPC invalid key size"; 1362199f5cdSKiran Kumar K break; 1372199f5cdSKiran Kumar K case NPC_ERR_ACTION_NOTSUP: 1382199f5cdSKiran Kumar K err_msg = "NPC action not supported"; 1392199f5cdSKiran Kumar K break; 1402199f5cdSKiran Kumar K case NPC_ERR_PATTERN_NOTSUP: 1412199f5cdSKiran Kumar K err_msg = "NPC pattern not supported"; 1422199f5cdSKiran Kumar K break; 1432199f5cdSKiran Kumar K case NPC_ERR_MCAM_ALLOC: 1442199f5cdSKiran Kumar K err_msg = "MCAM entry alloc failed"; 1452199f5cdSKiran Kumar K break; 146124ff1a4SAshwin Sekhar T K case NPA_ERR_ALLOC: 147124ff1a4SAshwin Sekhar T K err_msg = "NPA alloc failed"; 148124ff1a4SAshwin Sekhar T K break; 149124ff1a4SAshwin Sekhar T K case NPA_ERR_INVALID_BLOCK_SZ: 150124ff1a4SAshwin Sekhar T K err_msg = "NPA invalid block size"; 151124ff1a4SAshwin Sekhar T K break; 152124ff1a4SAshwin Sekhar T K case NPA_ERR_AURA_ID_ALLOC: 153124ff1a4SAshwin Sekhar T K err_msg = "NPA aura id alloc failed"; 154124ff1a4SAshwin Sekhar T K break; 155124ff1a4SAshwin Sekhar T K case NPA_ERR_AURA_POOL_INIT: 156124ff1a4SAshwin Sekhar T K err_msg = "NPA aura pool init failed"; 157124ff1a4SAshwin Sekhar T K break; 158124ff1a4SAshwin Sekhar T K case NPA_ERR_AURA_POOL_FINI: 159124ff1a4SAshwin Sekhar T K err_msg = "NPA aura pool fini failed"; 160124ff1a4SAshwin Sekhar T K break; 161124ff1a4SAshwin Sekhar T K case NPA_ERR_BASE_INVALID: 162124ff1a4SAshwin Sekhar T K err_msg = "NPA invalid base"; 163124ff1a4SAshwin Sekhar T K break; 164124ff1a4SAshwin Sekhar T K case NPA_ERR_DEVICE_NOT_BOUNDED: 165124ff1a4SAshwin Sekhar T K err_msg = "NPA device is not bounded"; 166124ff1a4SAshwin Sekhar T K break; 1678dcdf319SJerin Jacob case NIX_AF_ERR_AQ_FULL: 1688dcdf319SJerin Jacob err_msg = "AQ full"; 1698dcdf319SJerin Jacob break; 1708dcdf319SJerin Jacob case NIX_AF_ERR_AQ_ENQUEUE: 1718dcdf319SJerin Jacob err_msg = "AQ enqueue failed"; 1728dcdf319SJerin Jacob break; 1738dcdf319SJerin Jacob case NIX_AF_ERR_AF_LF_INVALID: 1748dcdf319SJerin Jacob err_msg = "Invalid NIX LF"; 1758dcdf319SJerin Jacob break; 1768dcdf319SJerin Jacob case NIX_AF_ERR_AF_LF_ALLOC: 1778dcdf319SJerin Jacob err_msg = "NIX LF alloc failed"; 1788dcdf319SJerin Jacob break; 179fcdef46bSNithin Dabilpuram case NIX_AF_ERR_TLX_INVALID: 180fcdef46bSNithin Dabilpuram err_msg = "Invalid NIX TLX"; 181fcdef46bSNithin Dabilpuram break; 182fcdef46bSNithin Dabilpuram case NIX_AF_ERR_TLX_ALLOC_FAIL: 183fcdef46bSNithin Dabilpuram err_msg = "NIX TLX alloc failed"; 184fcdef46bSNithin Dabilpuram break; 185fcdef46bSNithin Dabilpuram case NIX_AF_ERR_RSS_SIZE_INVALID: 186fcdef46bSNithin Dabilpuram err_msg = "Invalid RSS size"; 187fcdef46bSNithin Dabilpuram break; 188fcdef46bSNithin Dabilpuram case NIX_AF_ERR_RSS_GRPS_INVALID: 189fcdef46bSNithin Dabilpuram err_msg = "Invalid RSS groups"; 190fcdef46bSNithin Dabilpuram break; 191fcdef46bSNithin Dabilpuram case NIX_AF_ERR_FRS_INVALID: 192fcdef46bSNithin Dabilpuram err_msg = "Invalid frame size"; 193fcdef46bSNithin Dabilpuram break; 194fcdef46bSNithin Dabilpuram case NIX_AF_ERR_RX_LINK_INVALID: 195fcdef46bSNithin Dabilpuram err_msg = "Invalid Rx link"; 196fcdef46bSNithin Dabilpuram break; 197fcdef46bSNithin Dabilpuram case NIX_AF_INVAL_TXSCHQ_CFG: 198fcdef46bSNithin Dabilpuram err_msg = "Invalid Tx scheduling config"; 199fcdef46bSNithin Dabilpuram break; 200fcdef46bSNithin Dabilpuram case NIX_AF_SMQ_FLUSH_FAILED: 201fcdef46bSNithin Dabilpuram err_msg = "SMQ flush failed"; 202fcdef46bSNithin Dabilpuram break; 2038dcdf319SJerin Jacob case NIX_AF_ERR_LF_RESET: 2048dcdf319SJerin Jacob err_msg = "NIX LF reset failed"; 2058dcdf319SJerin Jacob break; 206fcdef46bSNithin Dabilpuram case NIX_AF_ERR_MARK_CFG_FAIL: 207fcdef46bSNithin Dabilpuram err_msg = "Marking config failed"; 208fcdef46bSNithin Dabilpuram break; 209fcdef46bSNithin Dabilpuram case NIX_AF_ERR_LSO_CFG_FAIL: 210fcdef46bSNithin Dabilpuram err_msg = "LSO config failed"; 211fcdef46bSNithin Dabilpuram break; 212fcdef46bSNithin Dabilpuram case NIX_AF_INVAL_NPA_PF_FUNC: 213fcdef46bSNithin Dabilpuram err_msg = "Invalid NPA pf_func"; 214fcdef46bSNithin Dabilpuram break; 215fcdef46bSNithin Dabilpuram case NIX_AF_INVAL_SSO_PF_FUNC: 216fcdef46bSNithin Dabilpuram err_msg = "Invalid SSO pf_func"; 217fcdef46bSNithin Dabilpuram break; 218fcdef46bSNithin Dabilpuram case NIX_AF_ERR_TX_VTAG_NOSPC: 219fcdef46bSNithin Dabilpuram err_msg = "No space for Tx VTAG"; 220fcdef46bSNithin Dabilpuram break; 221fcdef46bSNithin Dabilpuram case NIX_AF_ERR_RX_VTAG_INUSE: 222fcdef46bSNithin Dabilpuram err_msg = "Rx VTAG is in use"; 223fcdef46bSNithin Dabilpuram break; 224fcdef46bSNithin Dabilpuram case NIX_AF_ERR_PTP_CONFIG_FAIL: 225fcdef46bSNithin Dabilpuram err_msg = "PTP config failed"; 226fcdef46bSNithin Dabilpuram break; 227cb0e45cbSPavan Nikhilesh case SSO_ERR_DEVICE_NOT_BOUNDED: 228cb0e45cbSPavan Nikhilesh err_msg = "SSO pf/vf not found"; 229cb0e45cbSPavan Nikhilesh break; 230f752780fSAkhil Goyal case MCS_ERR_DEVICE_NOT_FOUND: 231f752780fSAkhil Goyal err_msg = "MCS device not found"; 232f752780fSAkhil Goyal break; 233014a9e22SJerin Jacob case UTIL_ERR_FS: 234014a9e22SJerin Jacob err_msg = "file operation failed"; 235014a9e22SJerin Jacob break; 236014a9e22SJerin Jacob case UTIL_ERR_INVALID_MODEL: 237014a9e22SJerin Jacob err_msg = "Invalid RoC model"; 238014a9e22SJerin Jacob break; 23962dcba5dSHiral Shah case NIX_AF_ERR_RSS_NOSPC_FIELD: 24062dcba5dSHiral Shah err_msg = "No space or unsupported fields"; 24162dcba5dSHiral Shah break; 24262dcba5dSHiral Shah case NIX_AF_ERR_RSS_NOSPC_ALGO: 24362dcba5dSHiral Shah err_msg = "No space to add new flow hash algo"; 24462dcba5dSHiral Shah break; 245014a9e22SJerin Jacob default: 246014a9e22SJerin Jacob /** 247014a9e22SJerin Jacob * Handle general error (as defined in linux errno.h) 248014a9e22SJerin Jacob */ 249014a9e22SJerin Jacob if (abs(errorcode) < 300) 250014a9e22SJerin Jacob err_msg = strerror(abs(errorcode)); 251014a9e22SJerin Jacob else 252014a9e22SJerin Jacob err_msg = "Unknown error code"; 253014a9e22SJerin Jacob break; 254014a9e22SJerin Jacob } 255014a9e22SJerin Jacob 256014a9e22SJerin Jacob return err_msg; 257014a9e22SJerin Jacob } 25803cc9bd9SJerin Jacob 25903cc9bd9SJerin Jacob void 26003cc9bd9SJerin Jacob roc_clk_freq_get(uint16_t *rclk_freq, uint16_t *sclk_freq) 26103cc9bd9SJerin Jacob { 26203cc9bd9SJerin Jacob *rclk_freq = dev_rclk_freq; 26303cc9bd9SJerin Jacob *sclk_freq = dev_sclk_freq; 26403cc9bd9SJerin Jacob } 265