xref: /dpdk/drivers/common/cnxk/roc_utils.c (revision 318ee1b0468299e92411ea8616073c477743b34e)
1 /* SPDX-License-Identifier: BSD-3-Clause
2  * Copyright(C) 2021 Marvell.
3  */
4 
5 #include "roc_api.h"
6 #include "roc_priv.h"
7 
8 const char *
9 roc_error_msg_get(int errorcode)
10 {
11 	const char *err_msg;
12 
13 	switch (errorcode) {
14 	case NIX_AF_ERR_PARAM:
15 	case NIX_ERR_PARAM:
16 	case NPA_ERR_PARAM:
17 	case NPC_ERR_PARAM:
18 	case SSO_ERR_PARAM:
19 	case MCS_ERR_PARAM:
20 	case RVU_ERR_PARAM:
21 	case UTIL_ERR_PARAM:
22 		err_msg = "Invalid parameter";
23 		break;
24 	case NIX_ERR_NO_MEM:
25 	case NPC_ERR_NO_MEM:
26 	case RVU_ERR_NO_MEM:
27 		err_msg = "Out of memory";
28 		break;
29 	case NIX_ERR_INVALID_RANGE:
30 	case NPC_ERR_INVALID_RANGE:
31 		err_msg = "Range is not supported";
32 		break;
33 	case NIX_ERR_INTERNAL:
34 	case NPC_ERR_INTERNAL:
35 		err_msg = "Internal error";
36 		break;
37 	case NIX_ERR_OP_NOTSUP:
38 		err_msg = "Operation not supported";
39 		break;
40 	case NIX_ERR_HW_NOTSUP:
41 	case MCS_ERR_HW_NOTSUP:
42 		err_msg = "Hardware does not support";
43 		break;
44 	case NIX_ERR_QUEUE_INVALID_RANGE:
45 		err_msg = "Invalid Queue range";
46 		break;
47 	case NIX_ERR_AQ_READ_FAILED:
48 		err_msg = "AQ read failed";
49 		break;
50 	case NIX_ERR_AQ_WRITE_FAILED:
51 		err_msg = "AQ write failed";
52 		break;
53 	case NIX_ERR_TM_LEAF_NODE_GET:
54 		err_msg = "TM leaf node get failed";
55 		break;
56 	case NIX_ERR_TM_INVALID_LVL:
57 		err_msg = "TM node level invalid";
58 		break;
59 	case NIX_ERR_TM_INVALID_PRIO:
60 		err_msg = "TM node priority invalid";
61 		break;
62 	case NIX_ERR_TM_INVALID_PARENT:
63 		err_msg = "TM parent id invalid";
64 		break;
65 	case NIX_ERR_TM_NODE_EXISTS:
66 		err_msg = "TM Node Exists";
67 		break;
68 	case NIX_ERR_TM_INVALID_NODE:
69 		err_msg = "TM node id invalid";
70 		break;
71 	case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
72 		err_msg = "TM shaper profile invalid";
73 		break;
74 	case NIX_ERR_TM_PKT_MODE_MISMATCH:
75 		err_msg = "shaper profile pkt mode mismatch";
76 		break;
77 	case NIX_ERR_TM_WEIGHT_EXCEED:
78 		err_msg = "TM DWRR weight exceeded";
79 		break;
80 	case NIX_ERR_TM_CHILD_EXISTS:
81 		err_msg = "TM node children exists";
82 		break;
83 	case NIX_ERR_TM_INVALID_PEAK_SZ:
84 		err_msg = "TM peak size invalid";
85 		break;
86 	case NIX_ERR_TM_INVALID_PEAK_RATE:
87 		err_msg = "TM peak rate invalid";
88 		break;
89 	case NIX_ERR_TM_INVALID_COMMIT_SZ:
90 		err_msg = "TM commit size invalid";
91 		break;
92 	case NIX_ERR_TM_INVALID_COMMIT_RATE:
93 		err_msg = "TM commit rate invalid";
94 		break;
95 	case NIX_ERR_TM_SHAPER_PROFILE_IN_USE:
96 		err_msg = "TM shaper profile in use";
97 		break;
98 	case NIX_ERR_TM_SHAPER_PROFILE_EXISTS:
99 		err_msg = "TM shaper profile exists";
100 		break;
101 	case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
102 		err_msg = "length adjust invalid";
103 		break;
104 	case NIX_ERR_TM_INVALID_TREE:
105 		err_msg = "TM tree invalid";
106 		break;
107 	case NIX_ERR_TM_PARENT_PRIO_UPDATE:
108 		err_msg = "TM node parent and prio update failed";
109 		break;
110 	case NIX_ERR_TM_PRIO_EXCEEDED:
111 		err_msg = "TM node priority exceeded";
112 		break;
113 	case NIX_ERR_TM_PRIO_ORDER:
114 		err_msg = "TM node priority not in order";
115 		break;
116 	case NIX_ERR_TM_MULTIPLE_RR_GROUPS:
117 		err_msg = "TM multiple rr groups";
118 		break;
119 	case NIX_ERR_TM_SQ_UPDATE_FAIL:
120 		err_msg = "TM SQ update failed";
121 		break;
122 	case NIX_ERR_NDC_SYNC:
123 		err_msg = "NDC Sync failed";
124 		break;
125 	case NPC_ERR_INVALID_SPEC:
126 		err_msg = "NPC invalid spec";
127 		break;
128 	case NPC_ERR_INVALID_MASK:
129 		err_msg = "NPC invalid mask";
130 		break;
131 	case NPC_ERR_INVALID_KEX:
132 		err_msg = "NPC invalid key";
133 		break;
134 	case NPC_ERR_INVALID_SIZE:
135 		err_msg = "NPC invalid key size";
136 		break;
137 	case NPC_ERR_ACTION_NOTSUP:
138 		err_msg = "NPC action not supported";
139 		break;
140 	case NPC_ERR_PATTERN_NOTSUP:
141 		err_msg = "NPC pattern not supported";
142 		break;
143 	case NPC_ERR_MCAM_ALLOC:
144 		err_msg = "MCAM entry alloc failed";
145 		break;
146 	case NPA_ERR_ALLOC:
147 		err_msg = "NPA alloc failed";
148 		break;
149 	case NPA_ERR_INVALID_BLOCK_SZ:
150 		err_msg = "NPA invalid block size";
151 		break;
152 	case NPA_ERR_AURA_ID_ALLOC:
153 		err_msg = "NPA aura id alloc failed";
154 		break;
155 	case NPA_ERR_AURA_POOL_INIT:
156 		err_msg = "NPA aura pool init failed";
157 		break;
158 	case NPA_ERR_AURA_POOL_FINI:
159 		err_msg = "NPA aura pool fini failed";
160 		break;
161 	case NPA_ERR_BASE_INVALID:
162 		err_msg = "NPA invalid base";
163 		break;
164 	case NPA_ERR_DEVICE_NOT_BOUNDED:
165 		err_msg = "NPA device is not bounded";
166 		break;
167 	case NIX_AF_ERR_AQ_FULL:
168 		err_msg = "AQ full";
169 		break;
170 	case NIX_AF_ERR_AQ_ENQUEUE:
171 		err_msg = "AQ enqueue failed";
172 		break;
173 	case NIX_AF_ERR_AF_LF_INVALID:
174 		err_msg = "Invalid NIX LF";
175 		break;
176 	case NIX_AF_ERR_AF_LF_ALLOC:
177 		err_msg = "NIX LF alloc failed";
178 		break;
179 	case NIX_AF_ERR_TLX_INVALID:
180 		err_msg = "Invalid NIX TLX";
181 		break;
182 	case NIX_AF_ERR_TLX_ALLOC_FAIL:
183 		err_msg = "NIX TLX alloc failed";
184 		break;
185 	case NIX_AF_ERR_RSS_SIZE_INVALID:
186 		err_msg = "Invalid RSS size";
187 		break;
188 	case NIX_AF_ERR_RSS_GRPS_INVALID:
189 		err_msg = "Invalid RSS groups";
190 		break;
191 	case NIX_AF_ERR_FRS_INVALID:
192 		err_msg = "Invalid frame size";
193 		break;
194 	case NIX_AF_ERR_RX_LINK_INVALID:
195 		err_msg = "Invalid Rx link";
196 		break;
197 	case NIX_AF_INVAL_TXSCHQ_CFG:
198 		err_msg = "Invalid Tx scheduling config";
199 		break;
200 	case NIX_AF_SMQ_FLUSH_FAILED:
201 		err_msg = "SMQ flush failed";
202 		break;
203 	case NIX_AF_ERR_LF_RESET:
204 		err_msg = "NIX LF reset failed";
205 		break;
206 	case NIX_AF_ERR_MARK_CFG_FAIL:
207 		err_msg = "Marking config failed";
208 		break;
209 	case NIX_AF_ERR_LSO_CFG_FAIL:
210 		err_msg = "LSO config failed";
211 		break;
212 	case NIX_AF_INVAL_NPA_PF_FUNC:
213 		err_msg = "Invalid NPA pf_func";
214 		break;
215 	case NIX_AF_INVAL_SSO_PF_FUNC:
216 		err_msg = "Invalid SSO pf_func";
217 		break;
218 	case NIX_AF_ERR_TX_VTAG_NOSPC:
219 		err_msg = "No space for Tx VTAG";
220 		break;
221 	case NIX_AF_ERR_RX_VTAG_INUSE:
222 		err_msg = "Rx VTAG is in use";
223 		break;
224 	case NIX_AF_ERR_PTP_CONFIG_FAIL:
225 		err_msg = "PTP config failed";
226 		break;
227 	case SSO_ERR_DEVICE_NOT_BOUNDED:
228 		err_msg = "SSO pf/vf not found";
229 		break;
230 	case MCS_ERR_DEVICE_NOT_FOUND:
231 		err_msg = "MCS device not found";
232 		break;
233 	case UTIL_ERR_FS:
234 		err_msg = "file operation failed";
235 		break;
236 	case UTIL_ERR_INVALID_MODEL:
237 		err_msg = "Invalid RoC model";
238 		break;
239 	case NIX_AF_ERR_RSS_NOSPC_FIELD:
240 		err_msg = "No space or unsupported fields";
241 		break;
242 	case NIX_AF_ERR_RSS_NOSPC_ALGO:
243 		err_msg = "No space to add new flow hash algo";
244 		break;
245 	default:
246 		/**
247 		 * Handle general error (as defined in linux errno.h)
248 		 */
249 		if (abs(errorcode) < 300)
250 			err_msg = strerror(abs(errorcode));
251 		else
252 			err_msg = "Unknown error code";
253 		break;
254 	}
255 
256 	return err_msg;
257 }
258 
259 void
260 roc_clk_freq_get(uint16_t *rclk_freq, uint16_t *sclk_freq)
261 {
262 	*rclk_freq = dev_rclk_freq;
263 	*sclk_freq = dev_sclk_freq;
264 }
265