This patch moves telemetry further down the build, and adds it as a
dependency for EAL. Telemetry V2 is now configured to build by default,
and the legacy support is built when the telemetry config flag is set.
Telemetry now has EAL flags, shown below:
"--telemetry" = Enables telemetry (this is default if no flags given)
"--no-telemetry" = Disables telemetry
When telemetry is enabled, it will attempt to open the new socket
version, and also the legacy support socket (this will depend on Jansson
external dependency and telemetry config flag, as before).
Signed-off-by: Ciara Power <ciara.power@intel.com>
Signed-off-by: Bruce Richardson <bruce.richardson@intel.com>
Reviewed-by: Keith Wiles <keith.wiles@intel.com>
27 files changed:
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
#
CONFIG_RTE_LIBRTE_LATENCY_STATS=y
#
-# Compile librte_telemetry
+# Compile librte_telemetry legacy support
#
CONFIG_RTE_LIBRTE_TELEMETRY=n
#
CONFIG_RTE_LIBRTE_TELEMETRY=n
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
CFLAGS += -DALLOW_EXPERIMENTAL_API
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
+LDLIBS += -lm -lrte_telemetry
# workaround for a gcc bug with noreturn attribute
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
# workaround for a gcc bug with noreturn attribute
# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=12603
CFLAGS_main.o += -Wno-return-type
endif
CFLAGS_main.o += -Wno-return-type
endif
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
include $(RTE_SDK)/mk/rte.extapp.mk
endif
endif
include $(RTE_SDK)/mk/rte.extapp.mk
endif
endif
#include <rte_spinlock.h>
#include <rte_power_empty_poll.h>
#include <rte_metrics.h>
#include <rte_spinlock.h>
#include <rte_power_empty_poll.h>
#include <rte_metrics.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
#include <rte_telemetry.h>
#include "perf_core.h"
#include "main.h"
#include "perf_core.h"
#include "main.h"
if (ret < 0)
RTE_LOG(WARNING, POWER, "failed to update metrcis\n");
}
if (ret < 0)
RTE_LOG(WARNING, POWER, "failed to update metrcis\n");
}
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_app_stats(const char *cmd __rte_unused,
const char *params __rte_unused,
static int
handle_app_stats(const char *cmd __rte_unused,
const char *params __rte_unused,
static void
telemetry_setup_timer(void)
{
static void
telemetry_setup_timer(void)
{
rte_spinlock_init(&stats[lcore_id].telemetry_lock);
}
rte_timer_init(&telemetry_timer);
rte_spinlock_init(&stats[lcore_id].telemetry_lock);
}
rte_timer_init(&telemetry_timer);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/l3fwd-power/stats",
handle_app_stats,
"Returns global power stats. Parameters: None");
rte_telemetry_register_cmd("/l3fwd-power/stats",
handle_app_stats,
"Returns global power stats. Parameters: None");
rte_eal_mp_remote_launch(main_telemetry_loop, NULL,
SKIP_MASTER);
}
rte_eal_mp_remote_launch(main_telemetry_loop, NULL,
SKIP_MASTER);
}
endif
allow_experimental_apis = true
endif
allow_experimental_apis = true
-deps += ['power', 'timer', 'lpm', 'hash', 'metrics']
+deps += ['power', 'timer', 'lpm', 'hash', 'metrics', 'telemetry']
sources = files(
'main.c', 'perf_core.c'
)
sources = files(
'main.c', 'perf_core.c'
)
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_LIBRTE_KVARGS) += librte_kvargs
include $(RTE_SDK)/mk/rte.vars.mk
DIRS-$(CONFIG_RTE_LIBRTE_KVARGS) += librte_kvargs
+DIRS-y += librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_EAL) += librte_eal
-DEPDIRS-librte_eal := librte_kvargs
+DEPDIRS-librte_eal := librte_kvargs librte_telemetry
DIRS-$(CONFIG_RTE_LIBRTE_PCI) += librte_pci
DEPDIRS-librte_pci := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_RING) += librte_ring
DIRS-$(CONFIG_RTE_LIBRTE_PCI) += librte_pci
DEPDIRS-librte_pci := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_RING) += librte_ring
DEPDIRS-librte_cfgfile := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline
DEPDIRS-librte_cmdline := librte_eal librte_net
DEPDIRS-librte_cfgfile := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_CMDLINE) += librte_cmdline
DEPDIRS-librte_cmdline := librte_eal librte_net
-DIRS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += librte_telemetry
-DEPDIRS-librte_telemetry := librte_eal
DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev
DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring
DEPDIRS-librte_ethdev += librte_mbuf
DIRS-$(CONFIG_RTE_LIBRTE_ETHER) += librte_ethdev
DEPDIRS-librte_ethdev := librte_net librte_eal librte_mempool librte_ring
DEPDIRS-librte_ethdev += librte_mbuf
{OPT_LEGACY_MEM, 0, NULL, OPT_LEGACY_MEM_NUM },
{OPT_SINGLE_FILE_SEGMENTS, 0, NULL, OPT_SINGLE_FILE_SEGMENTS_NUM},
{OPT_MATCH_ALLOCATIONS, 0, NULL, OPT_MATCH_ALLOCATIONS_NUM},
{OPT_LEGACY_MEM, 0, NULL, OPT_LEGACY_MEM_NUM },
{OPT_SINGLE_FILE_SEGMENTS, 0, NULL, OPT_SINGLE_FILE_SEGMENTS_NUM},
{OPT_MATCH_ALLOCATIONS, 0, NULL, OPT_MATCH_ALLOCATIONS_NUM},
+ {OPT_TELEMETRY, 0, NULL, OPT_TELEMETRY_NUM },
+ {OPT_NO_TELEMETRY, 0, NULL, OPT_NO_TELEMETRY_NUM },
+ case OPT_TELEMETRY_NUM:
+ break;
+ case OPT_NO_TELEMETRY_NUM:
+ conf->no_telemetry = 1;
+ break;
/* don't know what to do, leave this to caller */
default:
/* don't know what to do, leave this to caller */
default:
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
" disable secondary process support\n"
" --"OPT_BASE_VIRTADDR" Base virtual address\n"
" --"OPT_IN_MEMORY" Operate entirely in memory. This will\n"
" disable secondary process support\n"
" --"OPT_BASE_VIRTADDR" Base virtual address\n"
+ " --"OPT_TELEMETRY" Enable telemetry support (on by default)\n"
+ " --"OPT_NO_TELEMETRY" Disable telemetry support\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n"
" --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n"
"\nEAL options for DEBUG use only:\n"
" --"OPT_HUGE_UNLINK" Unlink hugepage files after init\n"
" --"OPT_NO_HUGE" Use malloc instead of hugetlbfs\n"
rte_cpuset_t ctrl_cpuset; /**< cpuset for ctrl threads */
volatile unsigned int init_complete;
/**< indicates whether EAL has completed initialization */
rte_cpuset_t ctrl_cpuset; /**< cpuset for ctrl threads */
volatile unsigned int init_complete;
/**< indicates whether EAL has completed initialization */
+ unsigned int no_telemetry; /**< true to disable Telemetry */
};
extern struct internal_config internal_config; /**< Global EAL configuration. */
};
extern struct internal_config internal_config; /**< Global EAL configuration. */
OPT_IOVA_MODE_NUM,
#define OPT_MATCH_ALLOCATIONS "match-allocations"
OPT_MATCH_ALLOCATIONS_NUM,
OPT_IOVA_MODE_NUM,
#define OPT_MATCH_ALLOCATIONS "match-allocations"
OPT_MATCH_ALLOCATIONS_NUM,
+#define OPT_TELEMETRY "telemetry"
+ OPT_TELEMETRY_NUM,
+#define OPT_NO_TELEMETRY "no-telemetry"
+ OPT_NO_TELEMETRY_NUM,
LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrte_kvargs
LDLIBS += -lpthread
LDLIBS += -lgcc_s
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
EXPORT_MAP := ../rte_eal_version.map
EXPORT_MAP := ../rte_eal_version.map
#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
#include <rte_option.h>
#include <rte_atomic.h>
#include <malloc_heap.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
#include "eal_private.h"
#include "eal_thread.h"
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
+ if (!internal_config.no_telemetry) {
+ const char *error_str;
+ if (rte_telemetry_init(rte_eal_get_runtime_dir(),
+ &error_str) != 0) {
+ rte_eal_init_alert(error_str);
+ return -1;
+ }
+ }
+deps += ['kvargs', 'telemetry']
LDLIBS += -lgcc_s
LDLIBS += -lrt
LDLIBS += -lrte_kvargs
LDLIBS += -lgcc_s
LDLIBS += -lrt
LDLIBS += -lrte_kvargs
+LDLIBS += -lrte_telemetry
ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y)
LDLIBS += -lnuma
endif
ifeq ($(CONFIG_RTE_EAL_NUMA_AWARE_HUGEPAGES),y)
LDLIBS += -lnuma
endif
#include <malloc_heap.h>
#include <rte_vfio.h>
#include <rte_option.h>
#include <malloc_heap.h>
#include <rte_vfio.h>
#include <rte_option.h>
+#include <rte_telemetry.h>
#include "eal_private.h"
#include "eal_thread.h"
#include "eal_private.h"
#include "eal_thread.h"
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
rte_eal_init_alert("Cannot clear runtime directory\n");
return -1;
}
+ if (!internal_config.no_telemetry) {
+ const char *error_str;
+ if (rte_telemetry_init(rte_eal_get_runtime_dir(),
+ &error_str) != 0) {
+ rte_eal_init_alert(error_str);
+ return -1;
+ }
+ }
+deps += ['kvargs', 'telemetry']
if has_libnuma == 1
dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true)
endif
if has_libnuma == 1
dpdk_conf.set10('RTE_EAL_NUMA_AWARE_HUGEPAGES', true)
endif
+deps += ['kvargs']
+if not is_windows
+ deps += ['telemetry']
+endif
if dpdk_conf.has('RTE_USE_LIBBSD')
ext_deps += libbsd
endif
if dpdk_conf.has('RTE_USE_LIBBSD')
ext_deps += libbsd
endif
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
LDLIBS += -lrte_net -lrte_eal -lrte_mempool -lrte_ring
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
LDLIBS += -lrte_net -lrte_eal -lrte_mempool -lrte_ring
-LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter
+LDLIBS += -lrte_mbuf -lrte_kvargs -lrte_meter -lrte_telemetry
EXPORT_MAP := rte_ethdev_version.map
EXPORT_MAP := rte_ethdev_version.map
SRCS-y += ethdev_profile.c
SRCS-y += ethdev_trace_points.c
SRCS-y += ethdev_profile.c
SRCS-y += ethdev_trace_points.c
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
-
#
# Export include files
#
#
# Export include files
#
'rte_tm.h',
'rte_tm_driver.h')
'rte_tm.h',
'rte_tm_driver.h')
-deps += ['net', 'kvargs', 'meter']
-
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
+deps += ['net', 'kvargs', 'meter', 'telemetry']
#include <rte_kvargs.h>
#include <rte_class.h>
#include <rte_ether.h>
#include <rte_kvargs.h>
#include <rte_class.h>
#include <rte_ether.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
#include <rte_telemetry.h>
#include "rte_ethdev_trace.h"
#include "rte_ethdev.h"
#include "rte_ethdev_trace.h"
#include "rte_ethdev.h"
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_port_list(const char *cmd __rte_unused,
const char *params __rte_unused,
static int
handle_port_list(const char *cmd __rte_unused,
const char *params __rte_unused,
"full-duplex" : "half-duplex");
return 0;
}
"full-duplex" : "half-duplex");
return 0;
}
RTE_INIT(ethdev_init_log)
{
rte_eth_dev_logtype = rte_log_register("lib.ethdev");
if (rte_eth_dev_logtype >= 0)
rte_log_set_level(rte_eth_dev_logtype, RTE_LOG_INFO);
RTE_INIT(ethdev_init_log)
{
rte_eth_dev_logtype = rte_log_register("lib.ethdev");
if (rte_eth_dev_logtype >= 0)
rte_log_set_level(rte_eth_dev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/ethdev/list", handle_port_list,
"Returns list of available ethdev ports. Takes no parameters");
rte_telemetry_register_cmd("/ethdev/xstats", handle_port_xstats,
rte_telemetry_register_cmd("/ethdev/list", handle_port_list,
"Returns list of available ethdev ports. Takes no parameters");
rte_telemetry_register_cmd("/ethdev/xstats", handle_port_xstats,
rte_telemetry_register_cmd("/ethdev/link_status",
handle_port_link_status,
"Returns the link status for a port. Parameters: int port_id");
rte_telemetry_register_cmd("/ethdev/link_status",
handle_port_link_status,
"Returns the link status for a port. Parameters: int port_id");
# build flags
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
# build flags
CFLAGS += -O3
CFLAGS += $(WERROR_FLAGS)
-LDLIBS += -lrte_eal
-
-ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
-LDLIBS += -lrte_telemetry
-endif
+LDLIBS += -lrte_eal -lrte_telemetry
# library source files
SRCS-y += rte_rawdev.c
# library source files
SRCS-y += rte_rawdev.c
sources = files('rte_rawdev.c')
headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h')
sources = files('rte_rawdev.c')
headers = files('rte_rawdev.h', 'rte_rawdev_pmd.h')
-if dpdk_conf.has('RTE_LIBRTE_TELEMETRY')
- deps += ['telemetry']
-endif
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_errno.h>
#include <rte_common.h>
#include <rte_malloc.h>
#include <rte_errno.h>
-#ifdef RTE_LIBRTE_TELEMETRY
#include <rte_telemetry.h>
#include <rte_telemetry.h>
#include "rte_rawdev.h"
#include "rte_rawdev_pmd.h"
#include "rte_rawdev.h"
#include "rte_rawdev_pmd.h"
-#ifdef RTE_LIBRTE_TELEMETRY
static int
handle_dev_list(const char *cmd __rte_unused,
const char *params __rte_unused,
static int
handle_dev_list(const char *cmd __rte_unused,
const char *params __rte_unused,
free(rawdev_xstats);
return 0;
}
free(rawdev_xstats);
return 0;
}
RTE_INIT(librawdev_init_log)
{
librawdev_logtype = rte_log_register("lib.rawdev");
if (librawdev_logtype >= 0)
rte_log_set_level(librawdev_logtype, RTE_LOG_INFO);
RTE_INIT(librawdev_init_log)
{
librawdev_logtype = rte_log_register("lib.rawdev");
if (librawdev_logtype >= 0)
rte_log_set_level(librawdev_logtype, RTE_LOG_INFO);
-#ifdef RTE_LIBRTE_TELEMETRY
rte_telemetry_register_cmd("/rawdev/list", handle_dev_list,
"Returns list of available rawdev ports. Takes no parameters");
rte_telemetry_register_cmd("/rawdev/xstats", handle_dev_xstats,
"Returns the xstats for a rawdev port. Parameters: int port_id");
rte_telemetry_register_cmd("/rawdev/list", handle_dev_list,
"Returns list of available rawdev ports. Takes no parameters");
rte_telemetry_register_cmd("/rawdev/xstats", handle_dev_xstats,
"Returns the xstats for a rawdev port. Parameters: int port_id");
CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(ARCH_DIR)/include
CFLAGS += -pthread
CFLAGS += -I$(RTE_SDK)/lib/librte_eal/$(ARCH_DIR)/include
CFLAGS += -pthread
LDLIBS += -lpthread
EXPORT_MAP := rte_telemetry_version.map
# library source files
LDLIBS += -lpthread
EXPORT_MAP := rte_telemetry_version.map
# library source files
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry.c
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry_data.c
-SRCS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += telemetry_legacy.c
+SRCS-y += telemetry.c
+SRCS-y += telemetry_data.c
+SRCS-y += telemetry_legacy.c
-SYMLINK-$(CONFIG_RTE_LIBRTE_TELEMETRY)-include := rte_telemetry.h
+SYMLINK-y-include := rte_telemetry.h
include $(RTE_SDK)/mk/rte.lib.mk
include $(RTE_SDK)/mk/rte.lib.mk
sources = files('telemetry.c', 'telemetry_data.c', 'telemetry_legacy.c')
headers = files('rte_telemetry.h')
includes += include_directories('../librte_metrics')
sources = files('telemetry.c', 'telemetry_data.c', 'telemetry_legacy.c')
headers = files('rte_telemetry.h')
includes += include_directories('../librte_metrics')
-dpdk_app_link_libraries += ['telemetry']
*/
__rte_experimental
int
*/
__rte_experimental
int
-rte_telemetry_init(void);
+rte_telemetry_init(const char *runtime_dir, const char **err_str);
+
#include <rte_common.h>
#include <rte_spinlock.h>
#include <rte_version.h>
#include <rte_common.h>
#include <rte_spinlock.h>
#include <rte_version.h>
#include "rte_telemetry.h"
#include "telemetry_json.h"
#include "rte_telemetry.h"
#include "telemetry_json.h"
-rte_telemetry_init(void)
+rte_telemetry_init(const char *runtime_dir, const char **err_str)
- const char *error_str;
- if (telemetry_v2_init(rte_eal_get_runtime_dir()) != 0) {
- error_str = telemetry_log_error;
- printf("Error initialising telemetry - %s", error_str);
+ if (telemetry_v2_init(runtime_dir) != 0) {
+ *err_str = telemetry_log_error;
+ printf("Error initialising telemetry - %s", *err_str);
- if (telemetry_legacy_init(rte_eal_get_runtime_dir()) != 0) {
- error_str = telemetry_log_error;
- printf("No telemetry legacy support- %s", error_str);
+ if (telemetry_legacy_init(runtime_dir) != 0) {
+ *err_str = telemetry_log_error;
+ printf("No telemetry legacy support- %s", *err_str);
-
-static struct rte_option option = {
- .name = "telemetry",
- .usage = "Enable telemetry backend",
- .cb = &rte_telemetry_init,
- .enabled = 0
-};
-
-RTE_INIT(telemetry_register_op) {
- rte_option_register(&option);
-}
# core libs which are widely reused, so their deps are kept to a minimum.
libraries = [
'kvargs', # eal depends on kvargs
# core libs which are widely reused, so their deps are kept to a minimum.
libraries = [
'kvargs', # eal depends on kvargs
+ 'telemetry', # basic info querying
'eal', # everything depends on eal
'eal', # everything depends on eal
'ring',
'rcu', # rcu depends on ring
'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core
'ring',
'rcu', # rcu depends on ring
'mempool', 'mbuf', 'net', 'meter', 'ethdev', 'pci', # core
_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics
_LDLIBS-$(CONFIG_RTE_LIBRTE_JOBSTATS) += -lrte_jobstats
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -lrte_metrics
+ifeq ($(CONFIG_RTE_LIBRTE_TELEMETRY),y)
+_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += -ljansson
+endif
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --no-whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats
_LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats
_LDLIBS-$(CONFIG_RTE_LIBRTE_METRICS) += --no-whole-archive
_LDLIBS-$(CONFIG_RTE_LIBRTE_BITRATE) += -lrte_bitratestats
_LDLIBS-$(CONFIG_RTE_LIBRTE_LATENCY_STATS) += -lrte_latencystats
_LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member
_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost
_LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs
_LDLIBS-$(CONFIG_RTE_LIBRTE_MEMBER) += -lrte_member
_LDLIBS-$(CONFIG_RTE_LIBRTE_VHOST) += -lrte_vhost
_LDLIBS-$(CONFIG_RTE_LIBRTE_KVARGS) += -lrte_kvargs
+_LDLIBS-y += -lrte_telemetry
_LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf
_LDLIBS-$(CONFIG_RTE_LIBRTE_NET) += -lrte_net
_LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lrte_ethdev
_LDLIBS-$(CONFIG_RTE_LIBRTE_MBUF) += -lrte_mbuf
_LDLIBS-$(CONFIG_RTE_LIBRTE_NET) += -lrte_net
_LDLIBS-$(CONFIG_RTE_LIBRTE_ETHER) += -lrte_ethdev
_LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2
_LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci
_LDLIBS-$(CONFIG_RTE_LIBRTE_OCTEONTX2_MEMPOOL) += -lrte_mempool_octeontx2
_LDLIBS-$(CONFIG_RTE_LIBRTE_RING) += -lrte_ring
_LDLIBS-$(CONFIG_RTE_LIBRTE_PCI) += -lrte_pci
-_LDLIBS-$(CONFIG_RTE_LIBRTE_TELEMETRY) += -lrte_telemetry -ljansson
_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal
_LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline
_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder
_LDLIBS-$(CONFIG_RTE_LIBRTE_EAL) += -lrte_eal
_LDLIBS-$(CONFIG_RTE_LIBRTE_CMDLINE) += -lrte_cmdline
_LDLIBS-$(CONFIG_RTE_LIBRTE_REORDER) += -lrte_reorder