From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 1C96CA034C; Mon, 9 May 2022 14:44:24 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B5A04407FF; Mon, 9 May 2022 14:44:23 +0200 (CEST) Received: from mail-il1-f180.google.com (mail-il1-f180.google.com [209.85.166.180]) by mails.dpdk.org (Postfix) with ESMTP id C85614068F for ; Mon, 9 May 2022 14:44:22 +0200 (CEST) Received: by mail-il1-f180.google.com with SMTP id h11so9190619ila.5 for ; Mon, 09 May 2022 05:44:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=E/+WA3lNwWiRBruCBS4/wNgDoDA9IkFFpzBppsXTwco=; b=RJ1pHXpxcf+DhwxyEt9O80wXkkZj9R3IZ8DMJzbD2oBYSSRaYbfoy136lri5Q6Tvel FaxANB31n45Z89BG93Xk7PPtN/13VC/orsagvEIdu0XarCSVAm4x7BoW/GmzE+9wb3+8 XJuTThlSFrH3KZ3lu14EtXLBvik1s5tY6Lpjyt9IOdCCTQnP+wmU5+HsiKZcKpfpYvJ4 JglY2yK/eBzjZmdNZZ3c7H61kTLpgjrUM8gIli0wbievqlhKOD8Pxr/99llt3BVaw7h6 LuvVzyzQXK9OzE5yyIZnbD62vi3oAkw0/IFYqzlV4ERl78cY7EZKT48dNYM0ULZtWoZg uqLw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=E/+WA3lNwWiRBruCBS4/wNgDoDA9IkFFpzBppsXTwco=; b=Hr9yPq+1n3K0K0Hf0OCsFDtNR9Tvxm9HkLuAWk5RxZF+KW/rYDwycZc6PFuWUF8gN1 H3RcUxsQQ7/0oDOdY5vmp/8z07K/92pwoM4/KS6GjgirRsdOnNKqPGTErNU5HkRbu30k P0IfPWaz7ozqepB3datB2FcLPqfcKOK0UubMuKu2oLp+zP0lN9I8J6Z+ZDsmq1oEhslR UYWqNSQpkAxrVXkxSJPDh6tSdKjbKO8G1JBWGa9JkuuK5pSypKdwtXGzrl1XTPu9q068 zjp0asDwc20mFPtQK8jZez3kdwxYDK7dtfiskCaW/bHHivJyC6uNyc8TY89aJ3GRYcyk 1q8Q== X-Gm-Message-State: AOAM532LruMzW+ymOmrV29Ko+9eRl7UFxPADMXtCQmpx8vIKQqtgyZeh Jz9Sgud1zbhFP+ZLHKyYEcX1CQSv6tlr7bpyGe8= X-Google-Smtp-Source: ABdhPJxZ+RM2PKgmowLPJ5KouD5GHWL5pyh2r0MSxGQr+RtPDE8Cdg3P8DPk75MdhK1+WfYs6rdYMG3GY8oqRK8rv8Q= X-Received: by 2002:a05:6e02:1d8a:b0:2cd:fa75:6395 with SMTP id h10-20020a056e021d8a00b002cdfa756395mr6677541ila.294.1652100261986; Mon, 09 May 2022 05:44:21 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jerin Jacob Date: Mon, 9 May 2022 18:13:55 +0530 Message-ID: Subject: Re: [PATCH v2 1/6] eventdev: support to set queue attributes at runtime To: Shijith Thotton Cc: dpdk-dev , Jerin Jacob , Pavan Nikhilesh , "Van Haaren, Harry" , =?UTF-8?Q?Mattias_R=C3=B6nnblom?= , Ray Kinsella Content-Type: text/plain; charset="UTF-8" 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 On Tue, Apr 5, 2022 at 11:12 AM Shijith Thotton wrote: > > Added a new eventdev API rte_event_queue_attr_set(), to set event queue > attributes at runtime from the values set during initialization using > rte_event_queue_setup(). PMD's supporting this feature should expose the > capability RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR. > > Signed-off-by: Shijith Thotton Please update release notes. With the above change, Acked-by: Jerin Jacob > --- > doc/guides/eventdevs/features/default.ini | 1 + > lib/eventdev/eventdev_pmd.h | 22 +++++++++++++++ > lib/eventdev/rte_eventdev.c | 26 ++++++++++++++++++ > lib/eventdev/rte_eventdev.h | 33 ++++++++++++++++++++++- > lib/eventdev/version.map | 3 +++ > 5 files changed, 84 insertions(+), 1 deletion(-) > > diff --git a/doc/guides/eventdevs/features/default.ini b/doc/guides/eventdevs/features/default.ini > index 2ea233463a..00360f60c6 100644 > --- a/doc/guides/eventdevs/features/default.ini > +++ b/doc/guides/eventdevs/features/default.ini > @@ -17,6 +17,7 @@ runtime_port_link = > multiple_queue_port = > carry_flow_id = > maintenance_free = > +runtime_queue_attr = > > ; > ; Features of a default Ethernet Rx adapter. > diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h > index ce469d47a6..3b85d9f7a5 100644 > --- a/lib/eventdev/eventdev_pmd.h > +++ b/lib/eventdev/eventdev_pmd.h > @@ -341,6 +341,26 @@ typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev, > typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev, > uint8_t queue_id); > > +/** > + * Set an event queue attribute at runtime. > + * > + * @param dev > + * Event device pointer > + * @param queue_id > + * Event queue index > + * @param attr_id > + * Event queue attribute id > + * @param attr_value > + * Event queue attribute value > + * > + * @return > + * - 0: Success. > + * - <0: Error code on failure. > + */ > +typedef int (*eventdev_queue_attr_set_t)(struct rte_eventdev *dev, > + uint8_t queue_id, uint32_t attr_id, > + uint64_t attr_value); > + > /** > * Retrieve the default event port configuration. > * > @@ -1211,6 +1231,8 @@ struct eventdev_ops { > /**< Set up an event queue. */ > eventdev_queue_release_t queue_release; > /**< Release an event queue. */ > + eventdev_queue_attr_set_t queue_attr_set; > + /**< Set an event queue attribute. */ > > eventdev_port_default_conf_get_t port_def_conf; > /**< Get default port configuration. */ > diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c > index 532a253553..a31e99be02 100644 > --- a/lib/eventdev/rte_eventdev.c > +++ b/lib/eventdev/rte_eventdev.c > @@ -844,6 +844,32 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id, > return 0; > } > > +int > +rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id, > + uint64_t attr_value) > +{ > + struct rte_eventdev *dev; > + > + RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); > + dev = &rte_eventdevs[dev_id]; > + if (!is_valid_queue(dev, queue_id)) { > + RTE_EDEV_LOG_ERR("Invalid queue_id=%" PRIu8, queue_id); > + return -EINVAL; > + } > + > + if (!(dev->data->event_dev_cap & > + RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR)) { > + RTE_EDEV_LOG_ERR( > + "Device %" PRIu8 "does not support changing queue attributes at runtime", > + dev_id); > + return -ENOTSUP; > + } > + > + RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_attr_set, -ENOTSUP); > + return (*dev->dev_ops->queue_attr_set)(dev, queue_id, attr_id, > + attr_value); > +} > + > int > rte_event_port_link(uint8_t dev_id, uint8_t port_id, > const uint8_t queues[], const uint8_t priorities[], > diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h > index 42a5660169..16e9d5fb5b 100644 > --- a/lib/eventdev/rte_eventdev.h > +++ b/lib/eventdev/rte_eventdev.h > @@ -225,7 +225,7 @@ struct rte_event; > /**< Event scheduling prioritization is based on the priority associated with > * each event queue. > * > - * @see rte_event_queue_setup() > + * @see rte_event_queue_setup(), rte_event_queue_attr_set() > */ > #define RTE_EVENT_DEV_CAP_EVENT_QOS (1ULL << 1) > /**< Event scheduling prioritization is based on the priority associated with > @@ -307,6 +307,13 @@ struct rte_event; > * global pool, or process signaling related to load balancing. > */ > > +#define RTE_EVENT_DEV_CAP_RUNTIME_QUEUE_ATTR (1ULL << 11) > +/**< Event device is capable of changing the queue attributes at runtime i.e after > + * rte_event_queue_setup() or rte_event_start() call sequence. If this flag is > + * not set, eventdev queue attributes can only be configured during > + * rte_event_queue_setup(). > + */ > + > /* Event device priority levels */ > #define RTE_EVENT_DEV_PRIORITY_HIGHEST 0 > /**< Highest priority expressed across eventdev subsystem > @@ -702,6 +709,30 @@ int > rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id, > uint32_t *attr_value); > > +/** > + * Set an event queue attribute. > + * > + * @param dev_id > + * Eventdev id > + * @param queue_id > + * Eventdev queue id > + * @param attr_id > + * The attribute ID to set > + * @param attr_value > + * The attribute value to set > + * > + * @return > + * - 0: Successfully set attribute. > + * - -EINVAL: invalid device, queue or attr_id. > + * - -ENOTSUP: device does not support setting event attribute. > + * - -EBUSY: device is in running state > + * - <0: failed to set event queue attribute > + */ > +__rte_experimental > +int > +rte_event_queue_attr_set(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id, > + uint64_t attr_value); > + > /* Event port specific APIs */ > > /* Event port configuration bitmap flags */ > diff --git a/lib/eventdev/version.map b/lib/eventdev/version.map > index cd5dada07f..c581b75c18 100644 > --- a/lib/eventdev/version.map > +++ b/lib/eventdev/version.map > @@ -108,6 +108,9 @@ EXPERIMENTAL { > > # added in 22.03 > rte_event_eth_rx_adapter_event_port_get; > + > + # added in 22.07 > + rte_event_queue_attr_set; > }; > > INTERNAL { > -- > 2.25.1 >