DPDK patches and discussions
 help / color / mirror / Atom feed
From: Shijith Thotton <sthotton@marvell.com>
To: Erik Gabriel Carrillo <erik.g.carrillo@intel.com>
Cc: Shijith Thotton <sthotton@marvell.com>,
	Pavan Nikhilesh <pbhagavatula@marvell.com>,
	Jerin Jacob <jerinj@marvell.com>, <dev@dpdk.org>
Subject: [dpdk-dev] [PATCH 1/3] eventdev: introduce adapter flags for periodic mode
Date: Tue, 9 Mar 2021 02:15:41 +0530	[thread overview]
Message-ID: <20210308204543.2903723-2-sthotton@marvell.com> (raw)
In-Reply-To: <20210308204543.2903723-1-sthotton@marvell.com>

A timer adapter in periodic mode can be used to arm periodic timers.
This patch adds flags used to advertise capability and configure timer
adapter in periodic mode. Capability flag should be set for adapters
which support periodic mode.

Below is a programming sequence on the usage:
	/* check for periodic mode support by reading capability. */
	rte_event_timer_adapter_caps_get(...);

	/* create adapter in periodic mode by setting periodic flag
	   (RTE_EVENT_TIMER_ADAPTER_F_PERIODIC) and resolution. */
	rte_event_timer_adapter_create_ext(...);

	/* arm periodic timer of configured resolution */
	rte_event_timer_arm_burst(...);

	/* timer event will be periodically generated at configured
	   resolution till cancel is called. */
	while (running) { rte_event_dequeue_burst(...); }

	/* cancel periodic timer which stops generating events */
	rte_event_timer_cancel_burst(...);

Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
 doc/guides/prog_guide/event_timer_adapter.rst | 33 +++++++++++++++++++
 lib/librte_eventdev/rte_event_timer_adapter.h |  6 ++++
 lib/librte_eventdev/rte_eventdev.h            |  3 ++
 3 files changed, 42 insertions(+)

diff --git a/doc/guides/prog_guide/event_timer_adapter.rst b/doc/guides/prog_guide/event_timer_adapter.rst
index a95efbe0d..fcdecdb3b 100644
--- a/doc/guides/prog_guide/event_timer_adapter.rst
+++ b/doc/guides/prog_guide/event_timer_adapter.rst
@@ -252,6 +252,39 @@ be canceled by calling ``rte_event_timer_cancel_burst()``:
          */
 	rte_event_timer_cancel_burst(adapter, &conn->timer, 1);
 
+Timer adapter in periodic mode
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+A periodic timer is a timer, which expires at fixed time intervals continuously
+till it is cancelled.  A timer adapter can be configured to arm such timers by
+configuring it in periodic mode.  Capability flag
+``RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC`` can be used to check if an adapter
+supports periodic mode. An adapter in periodic mode can only be used to arm
+periodic timers.
+
+Example config to create an adapter in periodic mode with 100ms resolution:
+
+.. code-block:: c
+
+	#define NSECPERSEC 1E9 // No of ns in 1 sec
+	const struct rte_event_timer_adapter_conf adapter_config = {
+                .event_dev_id = event_dev_id,
+                .timer_adapter_id = 0,
+                .clk_src = RTE_EVENT_TIMER_ADAPTER_CPU_CLK,
+                .timer_tick_ns = NSECPERSEC / 10, // 100 milliseconds
+                .nb_timers = 100,
+                .timer_adapter_flags = RTE_EVENT_TIMER_ADAPTER_F_PERIODIC,
+	};
+
+``timer_adapter_flags`` is set to include periodic flag
+``RTE_EVENT_TIMER_ADAPTER_F_PERIODIC`` and ``timer_tick_ns`` to resolution.
+Maximum timeout (``max_tmo_nsec``) does not apply for periodic mode.
+
+After starting the adapter, event timer arm APIs can be used to arm periodic
+timers.  Timer events will be generated at configured ``timer_tick_ns``
+intervals.  Event generation can be stopped using cancel API
+``rte_event_timer_cancel_burst``.
+
 Processing Timer Expiry Events
 ------------------------------
 
diff --git a/lib/librte_eventdev/rte_event_timer_adapter.h b/lib/librte_eventdev/rte_event_timer_adapter.h
index d2ebcb090..f9fc95711 100644
--- a/lib/librte_eventdev/rte_event_timer_adapter.h
+++ b/lib/librte_eventdev/rte_event_timer_adapter.h
@@ -151,6 +151,12 @@ enum rte_event_timer_adapter_clk_src {
  * @see struct rte_event_timer_adapter_conf::flags
  */
 
+#define RTE_EVENT_TIMER_ADAPTER_F_PERIODIC	(1ULL << 2)
+/**< Flag to configure event timer adapter in periodic mode.
+ *
+ * @see struct rte_event_timer_adapter_conf::flags
+ */
+
 /**
  * Timer adapter configuration structure
  */
diff --git a/lib/librte_eventdev/rte_eventdev.h b/lib/librte_eventdev/rte_eventdev.h
index ce1fc2ce0..9fc39e9ca 100644
--- a/lib/librte_eventdev/rte_eventdev.h
+++ b/lib/librte_eventdev/rte_eventdev.h
@@ -1154,6 +1154,9 @@ rte_event_eth_rx_adapter_caps_get(uint8_t dev_id, uint16_t eth_port_id,
 #define RTE_EVENT_TIMER_ADAPTER_CAP_INTERNAL_PORT (1ULL << 0)
 /**< This flag is set when the timer mechanism is in HW. */
 
+#define RTE_EVENT_TIMER_ADAPTER_CAP_PERIODIC      (1ULL << 1)
+/**< This flag is set if periodic mode is supported. */
+
 /**
  * Retrieve the event device's timer adapter capabilities.
  *
-- 
2.25.1


  reply	other threads:[~2021-03-08 20:46 UTC|newest]

Thread overview: 23+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-03-08 20:45 [dpdk-dev] [PATCH 0/3] periodic mode for event timer adapter Shijith Thotton
2021-03-08 20:45 ` Shijith Thotton [this message]
2021-03-09 20:04   ` [dpdk-dev] [PATCH 1/3] eventdev: introduce adapter flags for periodic mode Carrillo, Erik G
2021-03-10  9:14     ` Shijith Thotton
2021-03-11 20:47       ` Carrillo, Erik G
2021-03-12 15:30   ` Carrillo, Erik G
2021-03-14 16:49     ` Shijith Thotton
2021-03-08 20:45 ` [dpdk-dev] [PATCH 2/3] test/event: add unit tests for periodic timer Shijith Thotton
2021-03-08 20:45 ` [dpdk-dev] [PATCH 3/3] event/octeontx2: add timer periodic mode support Shijith Thotton
2021-03-14 16:45 ` [dpdk-dev] [PATCH v2 0/3] periodic mode for event timer adapter Shijith Thotton
2021-03-14 16:45   ` [dpdk-dev] [PATCH v2 1/3] eventdev: introduce adapter flags for periodic mode Shijith Thotton
2021-03-16 19:04     ` Carrillo, Erik G
2021-03-17  6:10       ` Shijith Thotton
2021-03-14 16:45   ` [dpdk-dev] [PATCH v2 2/3] test/event: add unit tests for periodic timer Shijith Thotton
2021-03-14 16:45   ` [dpdk-dev] [PATCH v2 3/3] event/octeontx2: add timer periodic mode support Shijith Thotton
2021-03-17  8:04   ` [dpdk-dev] [PATCH v3 0/3] periodic mode for event timer adapter Shijith Thotton
2021-03-17  8:04     ` [dpdk-dev] [PATCH v3 1/3] eventdev: introduce adapter flags for periodic mode Shijith Thotton
2021-03-17 18:07       ` Carrillo, Erik G
2021-03-22  9:50         ` Jerin Jacob
2021-03-17  8:04     ` [dpdk-dev] [PATCH v3 2/3] test/event: add unit tests for periodic timer Shijith Thotton
2021-03-17 18:11       ` Carrillo, Erik G
2021-03-17  8:04     ` [dpdk-dev] [PATCH v3 3/3] event/octeontx2: add timer periodic mode support Shijith Thotton
2021-03-21 14:43       ` Pavan Nikhilesh Bhagavatula

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210308204543.2903723-2-sthotton@marvell.com \
    --to=sthotton@marvell.com \
    --cc=dev@dpdk.org \
    --cc=erik.g.carrillo@intel.com \
    --cc=jerinj@marvell.com \
    --cc=pbhagavatula@marvell.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).