From patchwork Tue Apr 26 03:59:45 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ankur Dwivedi X-Patchwork-Id: 110244 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 57777A0093; Tue, 26 Apr 2022 06:01:03 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 3C455406A2; Tue, 26 Apr 2022 06:01:03 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by mails.dpdk.org (Postfix) with ESMTP id 0214340691 for ; Tue, 26 Apr 2022 06:01:00 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.1.2/8.16.1.2) with ESMTP id 23PNexS8011319; Mon, 25 Apr 2022 21:00:59 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : mime-version : content-transfer-encoding : content-type; s=pfpt0220; bh=u877XQrTffyXNF2GN6SiZA5PpRmzFbdXyIkcw4sbwQE=; b=dLrz16pIdiJryNIPHbWHF9GjKJnL2MwUb9N1dvIOS4DlwY3VCEqvF5+iWZuapxSY+z3N Faq5jdn5slCR7zdySTZFXm8PoUpfViBslShWl5W295g9uRhnNg1RiqaKh61x1Gx7Os38 yaFfxx7fLeBZSzTlzIIM1nldX+vai5Oxv6jBjDiMYoqQHboQVHpva7k/xtZTDNQ4o/WG Q1UccBS1fUlOTTTJ8cNwPSCsBbr10YaqeYcndgHX/YWDNcJ2hn6K3oLJ5ZC0PdmQRsf1 dkAPpiTALFtmdnc7VGmptiedhJfAp6DW6IQjhCsWLMsYl682C9wKnF2qcCHKRq3RvUs2 Ew== Received: from dc5-exch01.marvell.com ([199.233.59.181]) by mx0a-0016f401.pphosted.com (PPS) with ESMTPS id 3fmetqrqrr-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Mon, 25 Apr 2022 21:00:59 -0700 Received: from DC5-EXCH01.marvell.com (10.69.176.38) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 25 Apr 2022 21:00:54 -0700 Received: from maili.marvell.com (10.69.176.80) by DC5-EXCH01.marvell.com (10.69.176.38) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 25 Apr 2022 21:00:54 -0700 Received: from hyd1349.t110.caveonetworks.com.com (unknown [10.29.45.13]) by maili.marvell.com (Postfix) with ESMTP id 67B905B696B; Mon, 25 Apr 2022 21:00:01 -0700 (PDT) From: Ankur Dwivedi To: CC: , , , , Ankur Dwivedi Subject: [PATCH] eventdev/timer_adapter: add telemetry support Date: Tue, 26 Apr 2022 09:29:45 +0530 Message-ID: <20220426035945.8851-1-adwivedi@marvell.com> X-Mailer: git-send-email 2.28.0 MIME-Version: 1.0 X-Proofpoint-ORIG-GUID: WPfd_yw5__glFvvPQSQp8O_3x_9soyPj X-Proofpoint-GUID: WPfd_yw5__glFvvPQSQp8O_3x_9soyPj X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.858,Hydra:6.0.486,FMLib:17.11.64.514 definitions=2022-04-26_01,2022-04-25_03,2022-02-23_01 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Adds telemetry support to get timer adapter info and timer adapter statistics. Signed-off-by: Ankur Dwivedi Reviewed-by: Jerin Jacob Kollanukkaran --- lib/eventdev/rte_event_timer_adapter.c | 91 ++++++++++++++++++++++++++ 1 file changed, 91 insertions(+) diff --git a/lib/eventdev/rte_event_timer_adapter.c b/lib/eventdev/rte_event_timer_adapter.c index 7dc39386c9..e0d978d641 100644 --- a/lib/eventdev/rte_event_timer_adapter.c +++ b/lib/eventdev/rte_event_timer_adapter.c @@ -14,6 +14,7 @@ #include #include #include +#include #include "event_timer_adapter_pmd.h" #include "eventdev_pmd.h" @@ -1249,3 +1250,93 @@ static const struct event_timer_adapter_ops swtim_ops = { .arm_tmo_tick_burst = swtim_arm_tmo_tick_burst, .cancel_burst = swtim_cancel_burst, }; + +static int +handle_ta_info(const char *cmd __rte_unused, const char *params, + struct rte_tel_data *d) +{ + struct rte_event_timer_adapter_info adapter_info; + struct rte_event_timer_adapter *adapter; + uint16_t adapter_id; + int ret; + + if (params == NULL || strlen(params) == 0 || !isdigit(*params)) + return -1; + + adapter_id = atoi(params); + + if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) { + EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id); + return -EINVAL; + } + + adapter = &adapters[adapter_id]; + + ret = rte_event_timer_adapter_get_info(adapter, &adapter_info); + if (ret < 0) { + EVTIM_LOG_ERR("Failed to get info for timer adapter id %u", adapter_id); + return ret; + } + + rte_tel_data_start_dict(d); + rte_tel_data_add_dict_u64(d, "timer_adapter_id", adapter_id); + rte_tel_data_add_dict_u64(d, "min_resolution_ns", adapter_info.min_resolution_ns); + rte_tel_data_add_dict_u64(d, "max_tmo_ns", adapter_info.max_tmo_ns); + rte_tel_data_add_dict_u64(d, "event_dev_id", adapter_info.conf.event_dev_id); + rte_tel_data_add_dict_u64(d, "socket_id", adapter_info.conf.socket_id); + rte_tel_data_add_dict_u64(d, "clk_src", adapter_info.conf.clk_src); + rte_tel_data_add_dict_u64(d, "timer_tick_ns", adapter_info.conf.timer_tick_ns); + rte_tel_data_add_dict_u64(d, "nb_timers", adapter_info.conf.nb_timers); + rte_tel_data_add_dict_u64(d, "flags", adapter_info.conf.flags); + + return 0; +} + +static int +handle_ta_stats(const char *cmd __rte_unused, const char *params, + struct rte_tel_data *d) +{ + struct rte_event_timer_adapter_stats stats; + struct rte_event_timer_adapter *adapter; + uint16_t adapter_id; + int ret; + + if (params == NULL || strlen(params) == 0 || !isdigit(*params)) + return -1; + + adapter_id = atoi(params); + + if (adapter_id >= RTE_EVENT_TIMER_ADAPTER_NUM_MAX) { + EVTIM_LOG_ERR("Invalid timer adapter id %u", adapter_id); + return -EINVAL; + } + + adapter = &adapters[adapter_id]; + + ret = rte_event_timer_adapter_stats_get(adapter, &stats); + if (ret < 0) { + EVTIM_LOG_ERR("Failed to get stats for timer adapter id %u", adapter_id); + return ret; + } + + rte_tel_data_start_dict(d); + rte_tel_data_add_dict_u64(d, "timer_adapter_id", adapter_id); + rte_tel_data_add_dict_u64(d, "evtim_exp_count", stats.evtim_exp_count); + rte_tel_data_add_dict_u64(d, "ev_enq_count", stats.ev_enq_count); + rte_tel_data_add_dict_u64(d, "ev_inv_count", stats.ev_inv_count); + rte_tel_data_add_dict_u64(d, "evtim_retry_count", stats.evtim_retry_count); + rte_tel_data_add_dict_u64(d, "adapter_tick_count", stats.adapter_tick_count); + + return 0; +} + +RTE_INIT(ta_init_telemetry) +{ + rte_telemetry_register_cmd("/eventdev/ta_info", + handle_ta_info, + "Returns Timer adapter info. Parameter: Timer adapter id"); + + rte_telemetry_register_cmd("/eventdev/ta_stats", + handle_ta_stats, + "Returns Timer adapter stats. Parameter: Timer adapter id"); +}