aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/Makefile.am10
-rw-r--r--include/odp/api/abi-default/proto_stats.h40
-rw-r--r--include/odp/api/proto_stats.h28
-rw-r--r--include/odp/api/spec/proto_stats.h139
-rw-r--r--include/odp/arch/arm32-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/arm64-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/default-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/mips64-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/power64-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/x86_32-linux/odp/api/abi/proto_stats.h5
-rw-r--r--include/odp/arch/x86_64-linux/odp/api/abi/proto_stats.h5
-rw-r--r--platform/linux-generic/Makefile.am1
-rw-r--r--platform/linux-generic/include-abi/odp/api/abi/proto_stats.h37
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