[v2,5/8] common/cnxk: handler to get rte tm error type
Checks
Commit Message
From: Satha Rao <skoteshwar@marvell.com>
Different TM handlers returns various platform specific errors,
this patch introduces new API to convert these internal error
types to RTE_TM* error types.
Also updated error message API with missed TM error types.
Signed-off-by: Satha Rao <skoteshwar@marvell.com>
---
drivers/common/cnxk/cnxk_utils.c | 68 ++++++++++++++++++++++++++++++++++++++++
drivers/common/cnxk/cnxk_utils.h | 11 +++++++
drivers/common/cnxk/meson.build | 5 +++
drivers/common/cnxk/roc_utils.c | 6 ++++
drivers/common/cnxk/version.map | 1 +
5 files changed, 91 insertions(+)
create mode 100644 drivers/common/cnxk/cnxk_utils.c
create mode 100644 drivers/common/cnxk/cnxk_utils.h
Comments
On Sat, Sep 18, 2021 at 8:02 PM <skoteshwar@marvell.com> wrote:
>
> From: Satha Rao <skoteshwar@marvell.com>
>
> Different TM handlers returns various platform specific errors,
> this patch introduces new API to convert these internal error
> types to RTE_TM* error types.
> Also updated error message API with missed TM error types.
Subject change suggestion:
common/cnxk: support TM error type get
>
> Signed-off-by: Satha Rao <skoteshwar@marvell.com>
> ---
> drivers/common/cnxk/cnxk_utils.c | 68 ++++++++++++++++++++++++++++++++++++++++
> drivers/common/cnxk/cnxk_utils.h | 11 +++++++
> drivers/common/cnxk/meson.build | 5 +++
> drivers/common/cnxk/roc_utils.c | 6 ++++
> drivers/common/cnxk/version.map | 1 +
> 5 files changed, 91 insertions(+)
> create mode 100644 drivers/common/cnxk/cnxk_utils.c
> create mode 100644 drivers/common/cnxk/cnxk_utils.h
>
> diff --git a/drivers/common/cnxk/cnxk_utils.c b/drivers/common/cnxk/cnxk_utils.c
> new file mode 100644
> index 0000000..4e56adc
> --- /dev/null
> +++ b/drivers/common/cnxk/cnxk_utils.c
> @@ -0,0 +1,68 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(C) 2021 Marvell.
> + */
> +#include <rte_log.h>
> +#include <rte_tm_driver.h>
> +
> +#include "roc_api.h"
> +#include "roc_priv.h"
> +
> +#include "cnxk_utils.h"
> +
> +int
> +roc_nix_tm_err_to_rte_err(int errorcode)
> +{
> + int err_type;
> +
> + switch (errorcode) {
> + case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PKT_ADJUST_LEN;
> + break;
> + case NIX_ERR_TM_INVALID_COMMIT_SZ:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_SIZE;
> + break;
> + case NIX_ERR_TM_INVALID_COMMIT_RATE:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_RATE;
> + break;
> + case NIX_ERR_TM_INVALID_PEAK_SZ:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_SIZE;
> + break;
> + case NIX_ERR_TM_INVALID_PEAK_RATE:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_RATE;
> + break;
> + case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
> + break;
> + case NIX_ERR_TM_SHAPER_PROFILE_IN_USE:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE;
> + break;
> + case NIX_ERR_TM_INVALID_NODE:
> + err_type = RTE_TM_ERROR_TYPE_NODE_ID;
> + break;
> + case NIX_ERR_TM_PKT_MODE_MISMATCH:
> + err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
> + break;
> + case NIX_ERR_TM_INVALID_PARENT:
> + case NIX_ERR_TM_PARENT_PRIO_UPDATE:
> + err_type = RTE_TM_ERROR_TYPE_NODE_PARENT_NODE_ID;
> + break;
> + case NIX_ERR_TM_PRIO_ORDER:
> + case NIX_ERR_TM_MULTIPLE_RR_GROUPS:
> + err_type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
> + break;
> + case NIX_ERR_TM_PRIO_EXCEEDED:
> + err_type = RTE_TM_ERROR_TYPE_CAPABILITIES;
> + break;
> + default:
> + /**
> + * Handle general error (as defined in linux errno.h)
> + */
> + if (abs(errorcode) < 300)
> + err_type = errorcode;
> + else
> + err_type = RTE_TM_ERROR_TYPE_UNSPECIFIED;
> + break;
> + }
> +
> + return err_type;
> +}
> diff --git a/drivers/common/cnxk/cnxk_utils.h b/drivers/common/cnxk/cnxk_utils.h
> new file mode 100644
> index 0000000..5463cd4
> --- /dev/null
> +++ b/drivers/common/cnxk/cnxk_utils.h
> @@ -0,0 +1,11 @@
> +/* SPDX-License-Identifier: BSD-3-Clause
> + * Copyright(C) 2021 Marvell.
> + */
> +#ifndef _CNXK_UTILS_H_
> +#define _CNXK_UTILS_H_
> +
> +#include "roc_platform.h"
> +
> +int __roc_api roc_nix_tm_err_to_rte_err(int errorcode);
> +
> +#endif /* _CNXK_UTILS_H_ */
> diff --git a/drivers/common/cnxk/meson.build b/drivers/common/cnxk/meson.build
> index 8a551d1..258429d 100644
> --- a/drivers/common/cnxk/meson.build
> +++ b/drivers/common/cnxk/meson.build
> @@ -61,5 +61,10 @@ sources = files(
> # Security common code
> sources += files('cnxk_security.c')
>
> +# common DPDK utilities code
> +sources += files('cnxk_utils.c')
> +
> includes += include_directories('../../bus/pci')
> includes += include_directories('../../../lib/net')
> +includes += include_directories('../../../lib/ethdev')
> +includes += include_directories('../../../lib/meter')
> diff --git a/drivers/common/cnxk/roc_utils.c b/drivers/common/cnxk/roc_utils.c
> index 9cb8708..751486f 100644
> --- a/drivers/common/cnxk/roc_utils.c
> +++ b/drivers/common/cnxk/roc_utils.c
> @@ -64,6 +64,9 @@
> case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
> err_msg = "TM shaper profile invalid";
> break;
> + case NIX_ERR_TM_PKT_MODE_MISMATCH:
> + err_msg = "shaper profile pkt mode mismatch";
> + break;
> case NIX_ERR_TM_WEIGHT_EXCEED:
> err_msg = "TM DWRR weight exceeded";
> break;
> @@ -88,6 +91,9 @@
> case NIX_ERR_TM_SHAPER_PROFILE_EXISTS:
> err_msg = "TM shaper profile exists";
> break;
> + case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
> + err_msg = "length adjust invalid";
> + break;
> case NIX_ERR_TM_INVALID_TREE:
> err_msg = "TM tree invalid";
> break;
> diff --git a/drivers/common/cnxk/version.map b/drivers/common/cnxk/version.map
> index 388f938..776cabb 100644
> --- a/drivers/common/cnxk/version.map
> +++ b/drivers/common/cnxk/version.map
> @@ -172,6 +172,7 @@ INTERNAL {
> roc_nix_eeprom_info_get;
> roc_nix_smq_flush;
> roc_nix_tm_dump;
> + roc_nix_tm_err_to_rte_err;
> roc_nix_tm_fini;
> roc_nix_tm_free_resources;
> roc_nix_tm_hierarchy_disable;
> --
> 1.8.3.1
>
new file mode 100644
@@ -0,0 +1,68 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2021 Marvell.
+ */
+#include <rte_log.h>
+#include <rte_tm_driver.h>
+
+#include "roc_api.h"
+#include "roc_priv.h"
+
+#include "cnxk_utils.h"
+
+int
+roc_nix_tm_err_to_rte_err(int errorcode)
+{
+ int err_type;
+
+ switch (errorcode) {
+ case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PKT_ADJUST_LEN;
+ break;
+ case NIX_ERR_TM_INVALID_COMMIT_SZ:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_SIZE;
+ break;
+ case NIX_ERR_TM_INVALID_COMMIT_RATE:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_COMMITTED_RATE;
+ break;
+ case NIX_ERR_TM_INVALID_PEAK_SZ:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_SIZE;
+ break;
+ case NIX_ERR_TM_INVALID_PEAK_RATE:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_PEAK_RATE;
+ break;
+ case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
+ break;
+ case NIX_ERR_TM_SHAPER_PROFILE_IN_USE:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE;
+ break;
+ case NIX_ERR_TM_INVALID_NODE:
+ err_type = RTE_TM_ERROR_TYPE_NODE_ID;
+ break;
+ case NIX_ERR_TM_PKT_MODE_MISMATCH:
+ err_type = RTE_TM_ERROR_TYPE_SHAPER_PROFILE_ID;
+ break;
+ case NIX_ERR_TM_INVALID_PARENT:
+ case NIX_ERR_TM_PARENT_PRIO_UPDATE:
+ err_type = RTE_TM_ERROR_TYPE_NODE_PARENT_NODE_ID;
+ break;
+ case NIX_ERR_TM_PRIO_ORDER:
+ case NIX_ERR_TM_MULTIPLE_RR_GROUPS:
+ err_type = RTE_TM_ERROR_TYPE_NODE_PRIORITY;
+ break;
+ case NIX_ERR_TM_PRIO_EXCEEDED:
+ err_type = RTE_TM_ERROR_TYPE_CAPABILITIES;
+ break;
+ default:
+ /**
+ * Handle general error (as defined in linux errno.h)
+ */
+ if (abs(errorcode) < 300)
+ err_type = errorcode;
+ else
+ err_type = RTE_TM_ERROR_TYPE_UNSPECIFIED;
+ break;
+ }
+
+ return err_type;
+}
new file mode 100644
@@ -0,0 +1,11 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(C) 2021 Marvell.
+ */
+#ifndef _CNXK_UTILS_H_
+#define _CNXK_UTILS_H_
+
+#include "roc_platform.h"
+
+int __roc_api roc_nix_tm_err_to_rte_err(int errorcode);
+
+#endif /* _CNXK_UTILS_H_ */
@@ -61,5 +61,10 @@ sources = files(
# Security common code
sources += files('cnxk_security.c')
+# common DPDK utilities code
+sources += files('cnxk_utils.c')
+
includes += include_directories('../../bus/pci')
includes += include_directories('../../../lib/net')
+includes += include_directories('../../../lib/ethdev')
+includes += include_directories('../../../lib/meter')
@@ -64,6 +64,9 @@
case NIX_ERR_TM_INVALID_SHAPER_PROFILE:
err_msg = "TM shaper profile invalid";
break;
+ case NIX_ERR_TM_PKT_MODE_MISMATCH:
+ err_msg = "shaper profile pkt mode mismatch";
+ break;
case NIX_ERR_TM_WEIGHT_EXCEED:
err_msg = "TM DWRR weight exceeded";
break;
@@ -88,6 +91,9 @@
case NIX_ERR_TM_SHAPER_PROFILE_EXISTS:
err_msg = "TM shaper profile exists";
break;
+ case NIX_ERR_TM_SHAPER_PKT_LEN_ADJUST:
+ err_msg = "length adjust invalid";
+ break;
case NIX_ERR_TM_INVALID_TREE:
err_msg = "TM tree invalid";
break;
@@ -172,6 +172,7 @@ INTERNAL {
roc_nix_eeprom_info_get;
roc_nix_smq_flush;
roc_nix_tm_dump;
+ roc_nix_tm_err_to_rte_err;
roc_nix_tm_fini;
roc_nix_tm_free_resources;
roc_nix_tm_hierarchy_disable;