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