From: Jerin Jacob <jerin.jacob@caviumnetworks.com>
To: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Cc: santosh.shukla@caviumnetworks.com, erik.g.carrillo@intel.com,
dev@dpdk.org
Subject: Re: [PATCH v3 03/12] event/octeontx: add support to create and free timer adapter
Date: Sun, 8 Apr 2018 13:09:30 +0530 [thread overview]
Message-ID: <20180408073928.GA6880@jerin> (raw)
In-Reply-To: <20180403150514.24201-4-pbhagavatula@caviumnetworks.com>
-----Original Message-----
> Date: Tue, 3 Apr 2018 20:35:05 +0530
> From: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> To: jerin.jacob@caviumnetworks.com, santosh.shukla@caviumnetworks.com,
> erik.g.carrillo@intel.com
> Cc: dev@dpdk.org, Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> Subject: [dpdk-dev] [PATCH v3 03/12] event/octeontx: add support to create
> and free timer adapter
> X-Mailer: git-send-email 2.16.3
>
> When the application requests to create a timer device, Octeontx TIM
> create does the following:
> - Get the requested TIMvf ring based on adapter_id.
> - Verify the config parameters supplied.
> - Allocate memory required for
> * Buckets based on min and max timeout supplied.
> * Allocate the chunk pool based on the number of timers.
> - Clear the interrupts.
>
> On Free:
> - Free the allocated bucket and chunk memory.
> - Free private data used by TIMvf.
>
> Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
> ---
> +static int
> +timvf_ring_create(struct rte_event_timer_adapter *adptr)
> +{
> +
> + switch (rcfg->clk_src) {
> + case RTE_EVENT_TIMER_ADAPTER_CPU_CLK:
while defining the enum, equate TIM_CLK_SRC_SCLK, TIM_CLK_SRC_GPIO..
values to RTE_EVENT_TIMER_ADAPTER_CPU_CLK,
RTE_EVENT_TIMER_ADAPTER_EXT_CLK0 ..
etc to avoid switch case.
> + timr->clk_src = TIM_CLK_SRC_SCLK;
> + break;
> + case RTE_EVENT_TIMER_ADAPTER_EXT_CLK0:
> + timr->clk_src = TIM_CLK_SRC_GPIO;
> + break;
> + case RTE_EVENT_TIMER_ADAPTER_EXT_CLK1:
> + timr->clk_src = TIM_CLK_SRC_GTI;
> + break;
> + case RTE_EVENT_TIMER_ADAPTER_EXT_CLK2:
> + timr->clk_src = TIM_CLK_SRC_PTP;
> + break;
> + default:
> + timvf_log_err("Invalid clk source specified.");
> + goto cfg_err;
> + }
> +
> + timvf_write64(0, (uint8_t *)timr->vbar0 + TIM_VRING_BASE);
> + timvf_write64(0, (uint8_t *)timr->vbar0 + TIM_VF_NRSPERR_INT);
> + timvf_write64(0, (uint8_t *)timr->vbar0 + TIM_VF_NRSPERR_INT_W1S);
> + timvf_write64(0x7, (uint8_t *)timr->vbar0 + TIM_VF_NRSPERR_ENA_W1C);
> + timvf_write64(0x7, (uint8_t *)timr->vbar0 + TIM_VF_NRSPERR_ENA_W1S);
> +
> + return 0;
> +mem_err:
> + rte_free(timr);
> + return -ENOMEM;
> +cfg_err:
> + rte_free(timr);
> + return -EINVAL;
> +}
> +
> +static int
> +timvf_ring_free(struct rte_event_timer_adapter *adptr)
> +{
> + struct timvf_ring *timr = adptr->data->adapter_priv;
> + rte_mempool_free(timr->meta.chunk_pool);
> + rte_free(timr->meta.bkt);
> + rte_free(adptr->data->adapter_priv);
> + return 0;
> +}
> +
> +static struct rte_event_timer_adapter_ops timvf_ops = {
use const
> + .init = timvf_ring_create,
Found additional tab
> + .uninit = timvf_ring_free,
> + .get_info = timvf_ring_info_get,
> +};
> +
> +int
> +timvf_timer_adapter_caps_get(const struct rte_eventdev *dev, uint64_t flags,
> + uint32_t *caps, const struct rte_event_timer_adapter_ops **ops)
> +{
> + RTE_SET_USED(dev);
> + RTE_SET_USED(flags);
> + *caps = RTE_EVENT_TIMER_ADAPTER_CAP_INTERNAL_PORT;
> + *ops = &timvf_ops;
> + return -EINVAL;
> +}
> +enum timvf_clk_src {
> + TIM_CLK_SRC_SCLK,
See above comment.
> + TIM_CLK_SRC_GPIO,
> + TIM_CLK_SRC_GTI,
> + TIM_CLK_SRC_PTP,
> +};
> +
> +struct timvf_meta {
> + bkt_id get_target_bkt;
> + refill_chunk refill_chunk;
> + struct rte_reciprocal_u64 fast_div;
> + uint64_t ring_start_cyc;
> + uint32_t nb_bkts;
> + struct tim_mem_bucket *bkt;
> + void *chunk_pool;
> + uint64_t tck_int;
> +};
> +
> +struct timvf_ring {
> + struct timvf_meta meta;
IMO, Additional 'meta' indirection can be avoid to reduce the code
clutter.
> + uint64_t tck_nsec;
> + void *vbar0;
> + void *bkt_pos;
> + uint64_t max_tout;
> + uint64_t nb_chunks;
> + enum timvf_clk_src clk_src;
> + uint16_t tim_ring_id;
> +} __rte_cache_aligned;
> +
next prev parent reply other threads:[~2018-04-08 7:39 UTC|newest]
Thread overview: 75+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-16 21:36 [PATCH 0/9] event/octeontx: add event timer adapter driver Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 01/10] eal: add API to align variable to previous power of 2 Pavan Nikhilesh
2018-02-17 4:49 ` Jerin Jacob
2018-02-16 21:36 ` [PATCH 02/10] mempool/octeontx: probe timvf PCIe devices Pavan Nikhilesh
2018-02-17 4:54 ` Jerin Jacob
2018-02-19 9:19 ` Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 03/10] event/octeontx: add support to create and free timer adapter Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 04/10] event/octeontx: add support to start and stop timer device Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 05/10] event/octeontx: add support for arm and cancel Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 06/10] event/octeontx: add single producer timer arm variant Pavan Nikhilesh
2018-03-07 19:41 ` Carrillo, Erik G
2018-02-16 21:36 ` [PATCH 07/10] event/octeontx: optimize timer adapter resolution parameters Pavan Nikhilesh
2018-02-17 5:06 ` Jerin Jacob
2018-02-19 9:34 ` Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 08/10] event/octeontx: add option to use fpavf as chunk pool Pavan Nikhilesh
[not found] ` <ecf8b7bc-ef88-514e-41ae-f54bfeca0284@caviumnetworks.com>
2018-02-19 9:15 ` Pavan Nikhilesh
2018-02-23 20:17 ` Carrillo, Erik G
2018-02-26 19:25 ` Pavan Nikhilesh
2018-02-16 21:36 ` [PATCH 09/10] event/octeontx: add timer adapter SW traversal routine Pavan Nikhilesh
2018-02-17 5:01 ` Jerin Jacob
2018-02-16 21:37 ` [PATCH 10/10] maintainers: claim responsibility for octeontx timvf Pavan Nikhilesh
2018-02-17 5:03 ` Jerin Jacob
2018-03-14 13:52 ` [PATCH v2 00/11] event/octeontx: add event timer adapter driver Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 01/11] mempool/octeontx: probe timvf PCIe devices Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 02/11] usertools: add Cavium TIM as an event device Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 03/11] event/octeontx: add support to create and free timer adapter Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 04/11] event/octeontx: add support to start and stop timer device Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 05/11] event/octeontx: add multiproducer timer arm and cancel Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 06/11] event/octeontx: add single producer timer arm variant Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 07/11] event/octeontx: add burst mode for timer arm Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 08/11] event/octeontx: optimize timer adapter resolution parameters Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 09/11] event/octeontx: add option to use fpavf as chunk pool Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 10/11] doc: update eventdev OcteonTx documentation Pavan Nikhilesh
2018-03-14 13:52 ` [PATCH v2 11/11] maintainers: claim responsibility for octeontx timvf Pavan Nikhilesh
2018-04-03 15:05 ` [PATCH v3 00/12] event/octeontx: add event timer adapter driver Pavan Nikhilesh
2018-04-03 15:05 ` [PATCH v3 01/12] mempool/octeontx: probe timvf PCIe devices Pavan Nikhilesh
2018-04-08 2:19 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 02/12] usertools: add Cavium TIM as an event device Pavan Nikhilesh
2018-04-08 3:23 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 03/12] event/octeontx: add support to create and free timer adapter Pavan Nikhilesh
2018-04-08 7:39 ` Jerin Jacob [this message]
2018-04-03 15:05 ` [PATCH v3 04/12] event/octeontx: add support to start and stop timer device Pavan Nikhilesh
2018-04-08 7:47 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 05/12] event/octeontx: add event timer stats get and reset Pavan Nikhilesh
2018-04-04 1:59 ` Carrillo, Erik G
2018-04-08 7:52 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 06/12] event/octeontx: add multiproducer timer arm and cancel Pavan Nikhilesh
2018-04-08 7:59 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 07/12] event/octeontx: add single producer timer arm variant Pavan Nikhilesh
2018-04-03 15:05 ` [PATCH v3 08/12] event/octeontx: add burst mode for timer arm Pavan Nikhilesh
2018-04-04 2:15 ` Carrillo, Erik G
2018-04-08 8:06 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 09/12] event/octeontx: optimize timer adapter resolution parameters Pavan Nikhilesh
2018-04-08 8:09 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 10/12] event/octeontx: add option to use fpavf as chunk pool Pavan Nikhilesh
2018-04-03 15:05 ` [PATCH v3 11/12] doc: update eventdev OcteonTx documentation Pavan Nikhilesh
2018-04-04 2:19 ` Carrillo, Erik G
2018-04-08 8:13 ` Jerin Jacob
2018-04-03 15:05 ` [PATCH v3 12/12] maintainers: claim responsibility for octeontx timvf Pavan Nikhilesh
2018-04-08 8:15 ` Jerin Jacob
2018-04-08 2:55 ` [PATCH v3 00/12] event/octeontx: add event timer adapter driver Jerin Jacob
2018-04-08 8:58 ` Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 00/11] " Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 01/11] usertools: add Cavium TIM as an event device Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 02/11] event/octeontx: add support to probe timvf PCIe devices Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 03/11] event/octeontx: add support to create and free timer adapter Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 04/11] event/octeontx: add support to start and stop timer device Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 05/11] event/octeontx: add event timer stats get and reset Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 06/11] event/octeontx: add multiproducer timer arm and cancel Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 07/11] event/octeontx: add single producer timer arm variant Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 08/11] event/octeontx: add burst mode for timer arm Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 09/11] event/octeontx: optimize timer adapter resolution parameters Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 10/11] event/octeontx: add option to use fpavf as chunk pool Pavan Nikhilesh
2018-04-09 21:00 ` [PATCH v4 11/11] doc: update eventdev OcteonTx documentation Pavan Nikhilesh
2018-04-12 12:30 ` [PATCH v4 00/11] event/octeontx: add event timer adapter driver Jerin Jacob
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=20180408073928.GA6880@jerin \
--to=jerin.jacob@caviumnetworks.com \
--cc=dev@dpdk.org \
--cc=erik.g.carrillo@intel.com \
--cc=pbhagavatula@caviumnetworks.com \
--cc=santosh.shukla@caviumnetworks.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.