get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/69613/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 69613,
    "url": "https://patches.dpdk.org/api/patches/69613/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20200430160137.59135-5-ciara.power@intel.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20200430160137.59135-5-ciara.power@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20200430160137.59135-5-ciara.power@intel.com",
    "date": "2020-04-30T16:01:23",
    "name": "[v5,04/18] telemetry: invert dependency on metrics",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "e7e894bb5af3ea4f3262ae5fd88bb56d6fdd5ceb",
    "submitter": {
        "id": 978,
        "url": "https://patches.dpdk.org/api/people/978/?format=api",
        "name": "Power, Ciara",
        "email": "ciara.power@intel.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20200430160137.59135-5-ciara.power@intel.com/mbox/",
    "series": [
        {
            "id": 9771,
            "url": "https://patches.dpdk.org/api/series/9771/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=9771",
            "date": "2020-04-30T16:01:19",
            "name": "update and simplify telemetry library.",
            "version": 5,
            "mbox": "https://patches.dpdk.org/series/9771/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/69613/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/69613/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 6AF60A00C5;\n\tThu, 30 Apr 2020 18:02:55 +0200 (CEST)",
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 3B6C51DBB9;\n\tThu, 30 Apr 2020 18:02:07 +0200 (CEST)",
            "from mga04.intel.com (mga04.intel.com [192.55.52.120])\n by dpdk.org (Postfix) with ESMTP id 013401DBB9\n for <dev@dpdk.org>; Thu, 30 Apr 2020 18:02:04 +0200 (CEST)",
            "from orsmga003.jf.intel.com ([10.7.209.27])\n by fmsmga104.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 30 Apr 2020 09:02:04 -0700",
            "from silpixa00399953.ir.intel.com (HELO\n silpixa00399953.ger.corp.intel.com) ([10.237.222.53])\n by orsmga003.jf.intel.com with ESMTP; 30 Apr 2020 09:02:01 -0700"
        ],
        "IronPort-SDR": [
            "\n F2I4Gko7+FWqzvylNbe4RlNCxUMCYR+iwd/8Z404btF5Sx15AjaA1H7aqMbUsOjRI721q8GmTC\n zF/wNu4HjU1Q==",
            "\n dCJI3mJgwh5DJNryjwAmjXaudZh/A7uEuzk/xDcEDKNafEPXX0J/gzjH29TNNxNMceHQ/hXRJc\n puqCoudwFbBQ=="
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.73,336,1583222400\"; d=\"scan'208\";a=\"258345051\"",
        "From": "Ciara Power <ciara.power@intel.com>",
        "To": "dev@dpdk.org,\n\tkevin.laatz@intel.com",
        "Cc": "reshma.pattan@intel.com, jerinjacobk@gmail.com, david.marchand@redhat.com,\n keith.wiles@intel.com, mb@smartsharesystems.com, thomas@monjalon.net,\n stephen@networkplumber.org, bluca@debian.org,\n Bruce Richardson <bruce.richardson@intel.com>",
        "Date": "Thu, 30 Apr 2020 17:01:23 +0100",
        "Message-Id": "<20200430160137.59135-5-ciara.power@intel.com>",
        "X-Mailer": "git-send-email 2.17.1",
        "In-Reply-To": "<20200430160137.59135-1-ciara.power@intel.com>",
        "References": "<20200319171907.60891-1-ciara.power@intel.com>\n <20200430160137.59135-1-ciara.power@intel.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v5 04/18] telemetry: invert dependency on metrics",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Bruce Richardson <bruce.richardson@intel.com>\n\nRather than having the telemetry library depend on the metrics\nlib we invert the dependency so that metrics instead depends\non telemetry lib, and registers the needed functions with it\nat init time. This prepares the way for a cleaner telemetry\narchitecture to be applied in later patches.\n\nSigned-off-by: Bruce Richardson <bruce.richardson@intel.com>\nReviewed-by: Keith Wiles <keith.wiles@intel.com>\n---\n lib/Makefile                                  |  7 +++--\n lib/librte_metrics/Makefile                   |  3 +-\n lib/librte_metrics/meson.build                |  3 +-\n lib/librte_metrics/rte_metrics.c              |  5 ++++\n lib/librte_metrics/rte_metrics.h              |  2 ++\n lib/librte_metrics/rte_metrics_telemetry.c    | 14 +++++++++\n lib/librte_telemetry/Makefile                 |  4 +--\n lib/librte_telemetry/meson.build              |  2 +-\n lib/librte_telemetry/rte_telemetry.c          | 19 ++++++++----\n lib/librte_telemetry/rte_telemetry_internal.h | 30 +++++++++++++++++++\n lib/librte_telemetry/rte_telemetry_parser.c   |  5 ++--\n .../rte_telemetry_version.map                 |  1 +\n lib/meson.build                               |  3 +-\n mk/rte.app.mk                                 |  6 +---\n 14 files changed, 82 insertions(+), 22 deletions(-)",
    "diff": "diff --git a/lib/Makefile b/lib/Makefile\nindex 300ab7d748..0f6fb65293 100644\n--- a/lib/Makefile\n+++ b/lib/Makefile\n@@ -22,6 +22,8 @@ DIRS-$(CONFIG_RTE_LIBRTE_CFGFILE) += librte_cfgfile\n DEPDIRS-librte_cfgfile := librte_eal\n DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline\n DEPDIRS-librte_cmdline := librte_eal librte_net\n+DIRS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += librte_telemetry\n+DEPDIRS-librte_telemetry := librte_eal\n DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev\n DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring\n DEPDIRS-librte_ethdev += librte_mbuf\n@@ -72,6 +74,9 @@ DIRS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += librte_jobstats\n DEPDIRS-librte_jobstats := librte_eal\n DIRS-$(CONFIG_RTE_LIBRTE_METRICS) += librte_metrics\n DEPDIRS-librte_metrics := librte_eal librte_ethdev\n+ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)\n+DEPDIRS-librte_metrics += librte_telemetry\n+endif\n DIRS-$(CONFIG_RTE_LIBRTE_BITRATE) += librte_bitratestats\n DEPDIRS-librte_bitratestats := librte_eal librte_metrics librte_ethdev\n DIRS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += librte_latencystats\n@@ -114,8 +119,6 @@ DEPDIRS-librte_bpf := librte_eal librte_mempool librte_mbuf librte_ethdev\n DIRS-$(CONFIG_RTE_LIBRTE_IPSEC) += librte_ipsec\n DEPDIRS-librte_ipsec := librte_eal librte_mbuf librte_cryptodev librte_security \\\n \t\t\tlibrte_net librte_hash\n-DIRS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += librte_telemetry\n-DEPDIRS-librte_telemetry := librte_eal librte_metrics librte_ethdev\n DIRS-$(CONFIG_RTE_LIBRTE_RCU) += librte_rcu\n DEPDIRS-librte_rcu := librte_eal librte_ring\n \ndiff --git a/lib/librte_metrics/Makefile b/lib/librte_metrics/Makefile\nindex aa4d8546f3..1264d3bbb0 100644\n--- a/lib/librte_metrics/Makefile\n+++ b/lib/librte_metrics/Makefile\n@@ -18,9 +18,10 @@ ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)\n SRCS-y += rte_metrics_telemetry.c\n SYMLINK-$(CONFIG_RTE_LIBRTE_METRICS)-include += rte_metrics_telemetry.h\n \n-LDLIBS += -lrte_ethdev\n+LDLIBS += -lrte_ethdev -lrte_telemetry\n LDLIBS += -ljansson\n \n+CFLAGS += -I$(RTE_SDK)/lib/librte_telemetry/\n endif\n \n # Install header file\ndiff --git a/lib/librte_metrics/meson.build b/lib/librte_metrics/meson.build\nindex a39bc7a2a6..27ccbd6550 100644\n--- a/lib/librte_metrics/meson.build\n+++ b/lib/librte_metrics/meson.build\n@@ -9,5 +9,6 @@ if jansson.found()\n \text_deps += jansson\n \tsources += files('rte_metrics_telemetry.c')\n \theaders = files('rte_metrics_telemetry.h')\n-\tdeps += ['ethdev']\n+\tdeps += ['ethdev', 'telemetry']\n+\tincludes += include_directories('../librte_telemetry')\n endif\ndiff --git a/lib/librte_metrics/rte_metrics.c b/lib/librte_metrics/rte_metrics.c\nindex 9b38d7787c..e07670219f 100644\n--- a/lib/librte_metrics/rte_metrics.c\n+++ b/lib/librte_metrics/rte_metrics.c\n@@ -13,6 +13,8 @@\n #include <rte_memzone.h>\n #include <rte_spinlock.h>\n \n+int metrics_initialized;\n+\n #define RTE_METRICS_MEMZONE_NAME \"RTE_METRICS\"\n \n /**\n@@ -60,6 +62,8 @@ rte_metrics_init(int socket_id)\n \tstruct rte_metrics_data_s *stats;\n \tconst struct rte_memzone *memzone;\n \n+\tif (metrics_initialized)\n+\t\treturn;\n \tif (rte_eal_process_type() != RTE_PROC_PRIMARY)\n \t\treturn;\n \n@@ -73,6 +77,7 @@ rte_metrics_init(int socket_id)\n \tstats = memzone->addr;\n \tmemset(stats, 0, sizeof(struct rte_metrics_data_s));\n \trte_spinlock_init(&stats->lock);\n+\tmetrics_initialized = 1;\n }\n \n int\ndiff --git a/lib/librte_metrics/rte_metrics.h b/lib/librte_metrics/rte_metrics.h\nindex 466ca98c31..fbe64ddf2b 100644\n--- a/lib/librte_metrics/rte_metrics.h\n+++ b/lib/librte_metrics/rte_metrics.h\n@@ -30,6 +30,8 @@\n extern \"C\" {\n #endif\n \n+extern int metrics_initialized;\n+\n /** Maximum length of metric name (including null-terminator) */\n #define RTE_METRICS_MAX_NAME_LEN 64\n #define RTE_METRICS_MAX_METRICS 256\ndiff --git a/lib/librte_metrics/rte_metrics_telemetry.c b/lib/librte_metrics/rte_metrics_telemetry.c\nindex 1b9dfa4cb5..a207a19609 100644\n--- a/lib/librte_metrics/rte_metrics_telemetry.c\n+++ b/lib/librte_metrics/rte_metrics_telemetry.c\n@@ -6,6 +6,9 @@\n \n #include <rte_ethdev.h>\n #include <rte_string_fns.h>\n+#ifdef RTE_LIBRTE_TELEMETRY\n+#include <rte_telemetry_internal.h>\n+#endif\n \n #include \"rte_metrics.h\"\n #include \"rte_metrics_telemetry.h\"\n@@ -76,6 +79,7 @@ rte_metrics_tel_reg_all_ethdev(int *metrics_register_done, int *reg_index_list)\n \tint ret, nb_drv_idx = 0;\n \tuint16_t d;\n \n+\trte_metrics_init(rte_socket_id());\n \tRTE_ETH_FOREACH_DEV(d) {\n \t\tint i;\n \t\t/* Different device types have different numbers of stats, so\n@@ -417,6 +421,16 @@ rte_metrics_tel_extract_data(struct telemetry_encode_param *ep, json_t *data)\n \n RTE_INIT(metrics_ctor)\n {\n+#ifdef RTE_LIBRTE_TELEMETRY\n+\tstatic const struct metrics_functions fns = {\n+\t\t.reg_all_ethdev = rte_metrics_tel_reg_all_ethdev,\n+\t\t.encode_json_format = rte_metrics_tel_encode_json_format,\n+\t\t.get_port_stats_ids = rte_metrics_tel_get_port_stats_ids,\n+\t\t.get_ports_stats_json = rte_metrics_tel_get_ports_stats_json,\n+\t\t.extract_data = rte_metrics_tel_extract_data\n+\t};\n+\trte_telemetry_set_metrics_fns(&fns); /* assign them to telemetry lib */\n+#endif\n \tmetrics_log_level = rte_log_register(\"lib.metrics\");\n \tif (metrics_log_level >= 0)\n \t\trte_log_set_level(metrics_log_level, RTE_LOG_ERR);\ndiff --git a/lib/librte_telemetry/Makefile b/lib/librte_telemetry/Makefile\nindex 12009b9a7c..2d7e442ab0 100644\n--- a/lib/librte_telemetry/Makefile\n+++ b/lib/librte_telemetry/Makefile\n@@ -8,9 +8,9 @@ LIB = librte_telemetry.a\n \n CFLAGS += -O3\n CFLAGS += $(WERROR_FLAGS) -I$(SRCDIR)\n+CFLAGS += -I$(RTE_SDK)/lib/librte_metrics/\n \n-LDLIBS += -lrte_eal -lrte_ethdev\n-LDLIBS += -lrte_metrics\n+LDLIBS += -lrte_eal\n LDLIBS += -lpthread\n LDLIBS += -ljansson\n \ndiff --git a/lib/librte_telemetry/meson.build b/lib/librte_telemetry/meson.build\nindex 1bdf128c1a..18b214a8e8 100644\n--- a/lib/librte_telemetry/meson.build\n+++ b/lib/librte_telemetry/meson.build\n@@ -3,7 +3,7 @@\n \n sources = files('rte_telemetry.c', 'rte_telemetry_parser.c', 'rte_telemetry_parser_test.c')\n headers = files('rte_telemetry.h', 'rte_telemetry_internal.h', 'rte_telemetry_parser.h')\n-deps += ['metrics', 'ethdev']\n+includes += include_directories('../librte_metrics')\n \n jansson = dependency('jansson', required: false)\n if jansson.found()\ndiff --git a/lib/librte_telemetry/rte_telemetry.c b/lib/librte_telemetry/rte_telemetry.c\nindex 2022ce68eb..2fb8ffe873 100644\n--- a/lib/librte_telemetry/rte_telemetry.c\n+++ b/lib/librte_telemetry/rte_telemetry.c\n@@ -10,10 +10,10 @@\n #include <jansson.h>\n \n #include <rte_eal.h>\n-#include <rte_ethdev.h>\n #include <rte_metrics.h>\n #include <rte_option.h>\n #include <rte_string_fns.h>\n+#include <rte_lcore.h>\n \n #include \"rte_telemetry.h\"\n #include \"rte_telemetry_internal.h\"\n@@ -43,6 +43,15 @@ struct json_data {\n \tint stat_value;\n };\n \n+/* global array of functions pointers to metrics library */\n+const struct metrics_functions *metrics_fns;\n+\n+void\n+rte_telemetry_set_metrics_fns(const struct metrics_functions *fns)\n+{\n+\tmetrics_fns = fns;\n+}\n+\n static void\n rte_telemetry_get_runtime_dir(char *socket_path, size_t size)\n {\n@@ -145,7 +154,7 @@ rte_telemetry_send_global_stats_values(struct telemetry_encode_param *ep,\n \t\treturn -1;\n \t}\n \n-\tret = rte_metrics_tel_encode_json_format(ep, &json_buffer);\n+\tret = metrics_fns->encode_json_format(ep, &json_buffer);\n \tif (ret < 0) {\n \t\tTELEMETRY_LOG_ERR(\"JSON encode function failed\");\n \t\tret = rte_telemetry_send_error_response(telemetry, ret);\n@@ -190,7 +199,7 @@ rte_telemetry_send_ports_stats_values(struct telemetry_encode_param *ep,\n \t\tgoto einval_fail;\n \t}\n \n-\tret = rte_metrics_tel_get_ports_stats_json(ep, telemetry->reg_index,\n+\tret = metrics_fns->get_ports_stats_json(ep, telemetry->reg_index,\n \t\t\t&json_buffer);\n \tif (ret < 0) {\n \t\tTELEMETRY_LOG_ERR(\"Function for get_ports_stats_json\"\n@@ -222,8 +231,7 @@ rte_telemetry_initial_accept(struct telemetry_impl *telemetry)\n \tint ret;\n \tint selftest = 0;\n \n-\tret = rte_metrics_tel_reg_all_ethdev(\n-\t\t\t&telemetry->metrics_register_done,\n+\tret = metrics_fns->reg_all_ethdev(&telemetry->metrics_register_done,\n \t\t\ttelemetry->reg_index);\n \tif (ret < 0) {\n \t\tTELEMETRY_LOG_ERR(\"Failed to register ethdev metrics\");\n@@ -467,7 +475,6 @@ rte_telemetry_init(void)\n \t}\n \n \tstatic_telemetry->socket_id = rte_socket_id();\n-\trte_metrics_init(static_telemetry->socket_id);\n \n \tret = pthread_attr_init(&attr);\n \tif (ret != 0) {\ndiff --git a/lib/librte_telemetry/rte_telemetry_internal.h b/lib/librte_telemetry/rte_telemetry_internal.h\nindex ca70e2ed77..2ef72b1ec3 100644\n--- a/lib/librte_telemetry/rte_telemetry_internal.h\n+++ b/lib/librte_telemetry/rte_telemetry_internal.h\n@@ -10,6 +10,36 @@\n #ifndef _RTE_TELEMETRY_INTERNAL_H_\n #define _RTE_TELEMETRY_INTERNAL_H_\n \n+/* function types for the functions coming from metrics library */\n+typedef int32_t (*metrics_tel_reg_all_ethdev_t)(int *metrics_register_done,\n+\t\tint *reg_index_list);\n+\n+typedef int32_t (*metrics_tel_encode_json_format_t)(\n+\t\tstruct telemetry_encode_param *ep, char **json_buffer);\n+\n+typedef int32_t (*metrics_tel_get_port_stats_ids_t)(\n+\t\tstruct telemetry_encode_param *ep);\n+\n+typedef int32_t (*metrics_tel_get_ports_stats_json_t)(\n+\t\tstruct telemetry_encode_param *ep,\n+\t\tint *reg_index, char **json_buffer);\n+\n+typedef int32_t (*metrics_tel_extract_data_t)(struct telemetry_encode_param *ep,\n+\t\tjson_t *data);\n+\n+struct metrics_functions {\n+\tmetrics_tel_reg_all_ethdev_t reg_all_ethdev;\n+\tmetrics_tel_encode_json_format_t encode_json_format;\n+\tmetrics_tel_get_port_stats_ids_t get_port_stats_ids;\n+\tmetrics_tel_get_ports_stats_json_t get_ports_stats_json;\n+\tmetrics_tel_extract_data_t extract_data;\n+};\n+extern const struct metrics_functions *metrics_fns;\n+\n+/* API for use by metrics libraries to provide the functions to use */\n+__rte_experimental\n+void rte_telemetry_set_metrics_fns(const struct metrics_functions *fns);\n+\n /* Logging Macros */\n extern int telemetry_log_level;\n \ndiff --git a/lib/librte_telemetry/rte_telemetry_parser.c b/lib/librte_telemetry/rte_telemetry_parser.c\nindex 4e236e1e6a..7dc84c2cf3 100644\n--- a/lib/librte_telemetry/rte_telemetry_parser.c\n+++ b/lib/librte_telemetry/rte_telemetry_parser.c\n@@ -10,7 +10,6 @@\n \n #include <rte_metrics.h>\n #include <rte_common.h>\n-#include <rte_ethdev.h>\n #include <rte_metrics_telemetry.h>\n \n #include \"rte_telemetry_internal.h\"\n@@ -202,7 +201,7 @@ rte_telemetry_command_ports_all_stat_values(struct telemetry_impl *telemetry,\n \t\treturn -1;\n \t}\n \n-\tret = rte_metrics_tel_get_port_stats_ids(&ep);\n+\tret = metrics_fns->get_port_stats_ids(&ep);\n \tif (ret < 0) {\n \t\tTELEMETRY_LOG_ERR(\"Could not get ports stat values\");\n \t\tret = rte_telemetry_send_error_response(telemetry, ret);\n@@ -276,7 +275,7 @@ rte_telemetry_command_ports_stats_values_by_name(struct telemetry_impl\n \t\treturn -1;\n \t}\n \n-\tret = rte_metrics_tel_extract_data(&ep, data);\n+\tret = metrics_fns->extract_data(&ep, data);\n \tif (ret < 0) {\n \t\tTELEMETRY_LOG_ERR(\"Extracting JSON data failed\");\n \t\tret = rte_telemetry_send_error_response(telemetry, ret);\ndiff --git a/lib/librte_telemetry/rte_telemetry_version.map b/lib/librte_telemetry/rte_telemetry_version.map\nindex fa62d7718c..a80058c59c 100644\n--- a/lib/librte_telemetry/rte_telemetry_version.map\n+++ b/lib/librte_telemetry/rte_telemetry_version.map\n@@ -5,6 +5,7 @@ EXPERIMENTAL {\n \trte_telemetry_init;\n \trte_telemetry_parse;\n \trte_telemetry_selftest;\n+\trte_telemetry_set_metrics_fns;\n \n \tlocal: *;\n };\ndiff --git a/lib/meson.build b/lib/meson.build\nindex 07a65a6256..56bcb9a154 100644\n--- a/lib/meson.build\n+++ b/lib/meson.build\n@@ -11,6 +11,7 @@\n libraries = [\n \t'kvargs', # eal depends on kvargs\n \t'eal', # everything depends on eal\n+\t'telemetry',\n \t'ring',\n \t'rcu', # rcu depends on ring\n \t'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core\n@@ -32,7 +33,7 @@ libraries = [\n \t# add pkt framework libs which use other libs from above\n \t'port', 'table', 'pipeline',\n \t# flow_classify lib depends on pkt framework table lib\n-\t'flow_classify', 'bpf', 'telemetry']\n+\t'flow_classify', 'bpf']\n \n if is_windows\n \tlibraries = ['kvargs','eal'] # only supported libraries for windows\ndiff --git a/mk/rte.app.mk b/mk/rte.app.mk\nindex f22ab9ea18..c0b781d062 100644\n--- a/mk/rte.app.mk\n+++ b/mk/rte.app.mk\n@@ -49,11 +49,6 @@ _LDLIBS-$(CONFIG_RTE_LIBRTE_FIB)            += -lrte_fib\n _LDLIBS-$(CONFIG_RTE_LIBRTE_RIB)            += -lrte_rib\n _LDLIBS-$(CONFIG_RTE_LIBRTE_LPM)            += -lrte_lpm\n _LDLIBS-$(CONFIG_RTE_LIBRTE_ACL)            += -lrte_acl\n-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --no-as-needed\n-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --whole-archive\n-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += -lrte_telemetry -ljansson\n-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --no-whole-archive\n-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += --as-needed\n _LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS)       += -lrte_jobstats\n _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS)        += --whole-archive\n _LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS)        += -lrte_metrics\n@@ -95,6 +90,7 @@ _LDLIBS-$(CONFIG_RTE_DRIVER_MEMPOOL_RING)   += -lrte_mempool_ring\n _LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2\n _LDLIBS-$(CONFIG_RTE_LIBRTE_RING)           += -lrte_ring\n _LDLIBS-$(CONFIG_RTE_LIBRTE_PCI)            += -lrte_pci\n+_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY)      += -lrte_telemetry -ljansson\n _LDLIBS-$(CONFIG_RTE_LIBRTE_EAL)            += -lrte_eal\n _LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE)        += -lrte_cmdline\n _LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER)        += -lrte_reorder\n",
    "prefixes": [
        "v5",
        "04/18"
    ]
}