From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
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 <dev@dpdk.org>; Mon,  9 May 2022 14:44:22 +0200 (CEST)
Received: by mail-il1-f180.google.com with SMTP id h11so9190619ila.5
 for <dev@dpdk.org>; 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: <cover.1648549553.git.sthotton@marvell.com>
 <cover.1649136534.git.sthotton@marvell.com>
 <df23224740ce9dcb3d754ac0017ec800bfb5660f.1649136534.git.sthotton@marvell.com>
In-Reply-To: <df23224740ce9dcb3d754ac0017ec800bfb5660f.1649136534.git.sthotton@marvell.com>
From: Jerin Jacob <jerinjacobk@gmail.com>
Date: Mon, 9 May 2022 18:13:55 +0530
Message-ID: <CALBAE1PvL=3-DqeRHmZ_SJEDZHLPjCm73LtSy6uO3HBosGD9sA@mail.gmail.com>
Subject: Re: [PATCH v2 1/6] eventdev: support to set queue attributes at
 runtime
To: Shijith Thotton <sthotton@marvell.com>
Cc: dpdk-dev <dev@dpdk.org>, Jerin Jacob <jerinj@marvell.com>, 
 Pavan Nikhilesh <pbhagavatula@marvell.com>, "Van Haaren,
 Harry" <harry.van.haaren@intel.com>, 
 =?UTF-8?Q?Mattias_R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>, 
 Ray Kinsella <mdr@ashroe.eu>
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 <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org

On Tue, Apr 5, 2022 at 11:12 AM Shijith Thotton <sthotton@marvell.com> 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 <sthotton@marvell.com>

Please update release notes.
With the above change,

Acked-by: Jerin Jacob <jerinj@marvell.com>


> ---
>  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
>