xref: /dpdk/drivers/common/cnxk/cnxk_utils.c (revision 1a362d745d202be79385d4a84af77adb8cf7fb6f)
1*1a362d74SSatha Rao /* SPDX-License-Identifier: BSD-3-Clause
2*1a362d74SSatha Rao  * Copyright(C) 2021 Marvell.
3*1a362d74SSatha Rao  */
4*1a362d74SSatha Rao #include <rte_log.h>
5*1a362d74SSatha Rao #include <rte_tm_driver.h>
6*1a362d74SSatha Rao 
7*1a362d74SSatha Rao #include "roc_api.h"
8*1a362d74SSatha Rao #include "roc_priv.h"
9*1a362d74SSatha Rao 
10*1a362d74SSatha Rao #include "cnxk_utils.h"
11*1a362d74SSatha Rao 
12*1a362d74SSatha Rao int
roc_nix_tm_err_to_rte_err(int errorcode)13*1a362d74SSatha Rao roc_nix_tm_err_to_rte_err(int errorcode)
14*1a362d74SSatha Rao {
15*1a362d74SSatha Rao 	int err_type;
16*1a362d74SSatha Rao 
17*1a362d74SSatha Rao 	switch (errorcode) {
18*1a362d74SSatha Rao 	case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
19*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PKT_ADJUST_LEN;
20*1a362d74SSatha Rao 		break;
21*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_COMMIT_SZ:
22*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_SIZE;
23*1a362d74SSatha Rao 		break;
24*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_COMMIT_RATE:
25*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_RATE;
26*1a362d74SSatha Rao 		break;
27*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_PEAK_SZ:
28*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_SIZE;
29*1a362d74SSatha Rao 		break;
30*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_PEAK_RATE:
31*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_RATE;
32*1a362d74SSatha Rao 		break;
33*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
34*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
35*1a362d74SSatha Rao 		break;
36*1a362d74SSatha Rao 	case NIX_ERR_TM_SHAPER_PROFILE_IN_USE:
37*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE;
38*1a362d74SSatha Rao 		break;
39*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_NODE:
40*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_NODE_ID;
41*1a362d74SSatha Rao 		break;
42*1a362d74SSatha Rao 	case NIX_ERR_TM_PKT_MODE_MISMATCH:
43*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
44*1a362d74SSatha Rao 		break;
45*1a362d74SSatha Rao 	case NIX_ERR_TM_INVALID_PARENT:
46*1a362d74SSatha Rao 	case NIX_ERR_TM_PARENT_PRIO_UPDATE:
47*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_NODE_PARENT_NODE_ID;
48*1a362d74SSatha Rao 		break;
49*1a362d74SSatha Rao 	case NIX_ERR_TM_PRIO_ORDER:
50*1a362d74SSatha Rao 	case NIX_ERR_TM_MULTIPLE_RR_GROUPS:
51*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
52*1a362d74SSatha Rao 		break;
53*1a362d74SSatha Rao 	case NIX_ERR_TM_PRIO_EXCEEDED:
54*1a362d74SSatha Rao 		err_type = RTE_TM_ERROR_TYPE_CAPABILITIES;
55*1a362d74SSatha Rao 		break;
56*1a362d74SSatha Rao 	default:
57*1a362d74SSatha Rao 		/**
58*1a362d74SSatha Rao 		 * Handle general error (as defined in linux errno.h)
59*1a362d74SSatha Rao 		 */
60*1a362d74SSatha Rao 		if (abs(errorcode) < 300)
61*1a362d74SSatha Rao 			err_type = errorcode;
62*1a362d74SSatha Rao 		else
63*1a362d74SSatha Rao 			err_type = RTE_TM_ERROR_TYPE_UNSPECIFIED;
64*1a362d74SSatha Rao 		break;
65*1a362d74SSatha Rao 	}
66*1a362d74SSatha Rao 
67*1a362d74SSatha Rao 	return err_type;
68*1a362d74SSatha Rao }
69