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