diff options
-rw-r--r-- | include/Makefile.am | 10 | ||||
-rw-r--r-- | include/odp/api/abi-default/proto_stats.h | 40 | ||||
-rw-r--r-- | include/odp/api/proto_stats.h | 28 | ||||
-rw-r--r-- | include/odp/api/spec/proto_stats.h | 139 | ||||
-rw-r--r-- | include/odp/arch/arm32-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/arm64-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/default-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/mips64-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/power64-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/x86_32-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | include/odp/arch/x86_64-linux/odp/api/abi/proto_stats.h | 5 | ||||
-rw-r--r-- | platform/linux-generic/Makefile.am | 1 | ||||
-rw-r--r-- | platform/linux-generic/include-abi/odp/api/abi/proto_stats.h | 37 |
13 files changed, 290 insertions, 0 deletions
diff --git a/include/Makefile.am b/include/Makefile.am index e5fa867c6..c0e598991 100644 --- a/include/Makefile.am +++ b/include/Makefile.am @@ -37,6 +37,7 @@ odpapiinclude_HEADERS = \ odp/api/packet_io_stats.h \ odp/api/protocols.h \ odp/api/pool.h \ + odp/api/proto_stats.h \ odp/api/queue.h \ odp/api/queue_types.h \ odp/api/random.h \ @@ -92,6 +93,7 @@ odpapispecinclude_HEADERS = \ odp/api/spec/protocols.h \ odp/api/spec/pool.h \ odp/api/spec/pool_types.h \ + odp/api/spec/proto_stats.h \ odp/api/spec/queue.h \ odp/api/spec/queue_types.h \ odp/api/spec/random.h \ @@ -144,6 +146,7 @@ odpapiabidefaultinclude_HEADERS = \ odp/api/abi-default/packet_types.h \ odp/api/abi-default/packet_flags.h \ odp/api/abi-default/packet_io.h \ + odp/api/abi-default/proto_stats.h \ odp/api/abi-default/pool.h \ odp/api/abi-default/queue.h \ odp/api/abi-default/queue_types.h \ @@ -193,6 +196,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/arm32-linux/odp/api/abi/packet_flags.h \ odp/arch/arm32-linux/odp/api/abi/packet_io.h \ odp/arch/arm32-linux/odp/api/abi/pool.h \ + odp/arch/arm32-linux/odp/api/abi/proto_stats.h \ odp/arch/arm32-linux/odp/api/abi/queue.h \ odp/arch/arm32-linux/odp/api/abi/queue_types.h \ odp/arch/arm32-linux/odp/api/abi/rwlock.h \ @@ -237,6 +241,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/arm64-linux/odp/api/abi/packet_flags.h \ odp/arch/arm64-linux/odp/api/abi/packet_io.h \ odp/arch/arm64-linux/odp/api/abi/pool.h \ + odp/arch/arm64-linux/odp/api/abi/proto_stats.h \ odp/arch/arm64-linux/odp/api/abi/queue.h \ odp/arch/arm64-linux/odp/api/abi/queue_types.h \ odp/arch/arm64-linux/odp/api/abi/rwlock.h \ @@ -281,6 +286,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/default-linux/odp/api/abi/packet_flags.h \ odp/arch/default-linux/odp/api/abi/packet_io.h \ odp/arch/default-linux/odp/api/abi/pool.h \ + odp/arch/default-linux/odp/api/abi/proto_stats.h \ odp/arch/default-linux/odp/api/abi/queue.h \ odp/arch/default-linux/odp/api/abi/queue_types.h \ odp/arch/default-linux/odp/api/abi/rwlock.h \ @@ -325,6 +331,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/mips64-linux/odp/api/abi/packet_flags.h \ odp/arch/mips64-linux/odp/api/abi/packet_io.h \ odp/arch/mips64-linux/odp/api/abi/pool.h \ + odp/arch/mips64-linux/odp/api/abi/proto_stats.h \ odp/arch/mips64-linux/odp/api/abi/queue.h \ odp/arch/mips64-linux/odp/api/abi/queue_types.h \ odp/arch/mips64-linux/odp/api/abi/rwlock.h \ @@ -369,6 +376,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/power64-linux/odp/api/abi/packet_flags.h \ odp/arch/power64-linux/odp/api/abi/packet_io.h \ odp/arch/power64-linux/odp/api/abi/pool.h \ + odp/arch/power64-linux/odp/api/abi/proto_stats.h \ odp/arch/power64-linux/odp/api/abi/queue.h \ odp/arch/power64-linux/odp/api/abi/queue_types.h \ odp/arch/power64-linux/odp/api/abi/rwlock.h \ @@ -413,6 +421,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/x86_32-linux/odp/api/abi/packet_flags.h \ odp/arch/x86_32-linux/odp/api/abi/packet_io.h \ odp/arch/x86_32-linux/odp/api/abi/pool.h \ + odp/arch/x86_32-linux/odp/api/abi/proto_stats.h \ odp/arch/x86_32-linux/odp/api/abi/queue.h \ odp/arch/x86_32-linux/odp/api/abi/queue_types.h \ odp/arch/x86_32-linux/odp/api/abi/rwlock.h \ @@ -457,6 +466,7 @@ odpapiabiarchinclude_HEADERS = \ odp/arch/x86_64-linux/odp/api/abi/packet_flags.h \ odp/arch/x86_64-linux/odp/api/abi/packet_io.h \ odp/arch/x86_64-linux/odp/api/abi/pool.h \ + odp/arch/x86_64-linux/odp/api/abi/proto_stats.h \ odp/arch/x86_64-linux/odp/api/abi/queue.h \ odp/arch/x86_64-linux/odp/api/abi/queue_types.h \ odp/arch/x86_64-linux/odp/api/abi/rwlock.h \ diff --git a/include/odp/api/abi-default/proto_stats.h b/include/odp/api/abi-default/proto_stats.h new file mode 100644 index 000000000..209521b5a --- /dev/null +++ b/include/odp/api/abi-default/proto_stats.h @@ -0,0 +1,40 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +/** + * @file + * + * ODP Proto Stats + */ + +#ifndef ODP_ABI_PROTO_STATS_H_ +#define ODP_ABI_PROTO_STATS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp/api/std_types.h> + +/** @internal Dummy type for strong typing */ +typedef struct { char dummy; /**< @internal Dummy */ } _odp_abi_proto_stats_t; + +/** @ingroup odp_proto_stats + * Operations on a proto stats object. + * @{ + */ + +typedef _odp_abi_proto_stats_t *odp_proto_stats_t; + +#define ODP_PROTO_STATS_INVALID ((odp_proto_stats_t)0) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/api/proto_stats.h b/include/odp/api/proto_stats.h new file mode 100644 index 000000000..9b434a16e --- /dev/null +++ b/include/odp/api/proto_stats.h @@ -0,0 +1,28 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +/** + * @file + * + * ODP proto stats + */ + +#ifndef ODP_API_PROTO_STATS_H_ +#define ODP_API_PROTO_STATS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp/api/std_types.h> +#include <odp/api/abi/queue.h> +#include <odp/api/abi/proto_stats.h> + +#include <odp/api/spec/proto_stats.h> + +#ifdef __cplusplus +} +#endif + +#endif diff --git a/include/odp/api/spec/proto_stats.h b/include/odp/api/spec/proto_stats.h new file mode 100644 index 000000000..a4a27af16 --- /dev/null +++ b/include/odp/api/spec/proto_stats.h @@ -0,0 +1,139 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +/** + * @file + * + * ODP Proto Stats + */ + +#ifndef ODP_API_SPEC_PROTO_STATS_H_ +#define ODP_API_SPEC_PROTO_STATS_H_ +#include <odp/visibility_begin.h> + +#ifdef __cplusplus +extern "C" { +#endif + +/** @addtogroup odp_proto_stats + * @{ + */ + +/** + * @def ODP_PROTO_STATS_INVALID + * Invalid proto stats handle + */ + +/** ODP proto stats params */ +typedef struct odp_proto_stats_param_t { +} odp_proto_stats_param_t; + +/** + * Proto stats capabilities + */ +typedef struct odp_proto_stats_capability_t { +} odp_proto_stats_capability_t; + +/** + * Initialize proto stats parameters + * + * Initialize an odp_proto_stats_param_t to its default values. + * By default all the statistics are disabled. + * + * @param param Proto stats parameter pointer. + */ +void odp_proto_stats_param_init(odp_proto_stats_param_t *param); + +/** + * Get proto stats capability + * + * Get supported protocol statistics and metadata for a PKTIO. + * + * @param pktio Packet IO handle + * @param[out] capa Pointer where capabilities are updated + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_proto_stats_capability(odp_pktio_t pktio, odp_proto_stats_capability_t *capa); + +/** + * Create a proto stats object + * + * Create a proto stats object with given name and parameters. + * A proto stats object can be created with any set of statistics but only the + * statistics that are supported by a PKTIO are updated in a proto stats object + * for that PKTIO associated packets. Same proto stats object can be used with + * any PKTIO. + * + * @param name Object name + * @param param Proto stats parameters + * + * @return Proto stats object handle + * @retval ODP_PROTO_STATS_INVALID on failure + */ +odp_proto_stats_t odp_proto_stats_create(const char *name, const odp_proto_stats_param_t *param); + +/** + * Lookup a proto stats object by name + * + * Lookup an already created proto stats object by name. + * + * @param name Proto stats object name + * + * @return Proto stats object handle + * @retval ODP_PROTO_STATS_INVALID on failure + */ +odp_proto_stats_t odp_proto_stats_lookup(const char *name); + +/** + * Destroy a proto stats object + * + * Destroy a proto stats object already created. + * + * @param stat Proto stats handle + * + * @retval 0 on success + * @retval <0 on failure + */ +int odp_proto_stats_destroy(odp_proto_stats_t stat); + +/** ODP proto stats counters */ +typedef struct odp_proto_stats_data_t { +} odp_proto_stats_data_t; + +/** + * Get all proto stats counters + * + * Get current values of all counters of the proto stats object. + * The values of counters that are not enabled in the proto stats object are undefined. + * + * @param stat Proto stats object handle + * @param[out] data Pointer to a caller allocated structure where the statistics will + * be written to. + * + * @retval =0 on success + * @retval <0 on failure + */ +int odp_proto_stats(odp_proto_stats_t stat, odp_proto_stats_data_t *data); + +/** + * Print proto stats object info to ODP log. + * + * Print implementation-defined proto stats debug information to ODP log. + * + * @param stat Proto stats object handle + */ +void odp_proto_stats_print(odp_proto_stats_t stat); + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#include <odp/visibility_end.h> +#endif diff --git a/include/odp/arch/arm32-linux/odp/api/abi/proto_stats.h b/include/odp/arch/arm32-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/arm32-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/arm64-linux/odp/api/abi/proto_stats.h b/include/odp/arch/arm64-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/arm64-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/default-linux/odp/api/abi/proto_stats.h b/include/odp/arch/default-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/default-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/mips64-linux/odp/api/abi/proto_stats.h b/include/odp/arch/mips64-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/mips64-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/power64-linux/odp/api/abi/proto_stats.h b/include/odp/arch/power64-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/power64-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/x86_32-linux/odp/api/abi/proto_stats.h b/include/odp/arch/x86_32-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/x86_32-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/include/odp/arch/x86_64-linux/odp/api/abi/proto_stats.h b/include/odp/arch/x86_64-linux/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..81108faa5 --- /dev/null +++ b/include/odp/arch/x86_64-linux/odp/api/abi/proto_stats.h @@ -0,0 +1,5 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +#include <odp/api/abi-default/proto_stats.h> diff --git a/platform/linux-generic/Makefile.am b/platform/linux-generic/Makefile.am index b12066365..55c37856a 100644 --- a/platform/linux-generic/Makefile.am +++ b/platform/linux-generic/Makefile.am @@ -70,6 +70,7 @@ odpapiabiarchinclude_HEADERS += \ include-abi/odp/api/abi/packet_types.h \ include-abi/odp/api/abi/packet_flags.h \ include-abi/odp/api/abi/packet_io.h \ + include-abi/odp/api/abi/proto_stats.h \ include-abi/odp/api/abi/pool.h \ include-abi/odp/api/abi/queue.h \ include-abi/odp/api/abi/queue_types.h \ diff --git a/platform/linux-generic/include-abi/odp/api/abi/proto_stats.h b/platform/linux-generic/include-abi/odp/api/abi/proto_stats.h new file mode 100644 index 000000000..2ebfa57cd --- /dev/null +++ b/platform/linux-generic/include-abi/odp/api/abi/proto_stats.h @@ -0,0 +1,37 @@ +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(C) 2021 Marvell. + */ + +/** + * @file + * + * ODP proto stats + */ + +#ifndef ODP_API_ABI_PROTO_STATS_H_ +#define ODP_API_ABI_PROTO_STATS_H_ + +#ifdef __cplusplus +extern "C" { +#endif + +#include <odp/api/std_types.h> +#include <odp/api/plat/strong_types.h> + +/** @ingroup odp_proto_stats + * @{ + */ + +typedef ODP_HANDLE_T(odp_proto_stats_t); + +#define ODP_PROTO_STATS_INVALID _odp_cast_scalar(odp_proto_stats_t, 0) + +/** + * @} + */ + +#ifdef __cplusplus +} +#endif + +#endif |