On Fri, Mar 12, 2021 at 03:30:11PM +0000, Carrillo, Erik G wrote: > Hi Shijith, > > Some comments in-line: > > > -----Original Message----- > > From: Shijith Thotton <sthot...@marvell.com> > > Sent: Monday, March 8, 2021 2:46 PM > > To: Carrillo, Erik G <erik.g.carri...@intel.com> > > Cc: Shijith Thotton <sthot...@marvell.com>; Pavan Nikhilesh > > <pbhagavat...@marvell.com>; Jerin Jacob <jer...@marvell.com>; > > dev@dpdk.org > > Subject: [PATCH 1/3] eventdev: introduce adapter flags for periodic mode > > > > 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 <sthot...@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. > > This content can be reworked slightly and moved into the "Create and > Configure an Adapter Instance" section, perhaps as a subsection describing > the two adapter modes. >
Reworked as suggested in v2. > > + > > +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``. > > + > > I think this content should be worked into the "Arming Event Timers" section, > indicating how the timer behavior depends on the mode of the adapter that > specified in the arm call. > Reworked as suggested in v2. > > 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 > > I think we should also update the doxygen documentation for the > rte_event_timer_arm_burst to indicate that timer expiry events will be > generated once or periodically until the timer is stopped based on the mode > of the adapter that is specified. We can have a "see also" for the > RTE_EVENT_TIMER_ADAPTER_F_PERIODIC flag. > Updated comments in v2. > > @@ -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 > > */ > Thanks, Shijith