On Tue, May 17, 2022 at 2:25 PM Mattias Rönnblom
<mattias.ronnb...@ericsson.com> wrote:
>
> On 2022-05-16 20:02, Jerin Jacob wrote:
> > On Mon, May 16, 2022 at 11:09 PM Shijith Thotton <sthot...@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 <sthot...@marvell.com>
> >> Acked-by: Jerin Jacob <jer...@marvell.com>
> >
> > Hi @Mattias Rönnblom
> >
> > Planning to merge this version for -rc1. Do you have any more comments
> > for this series?
> >
>
> No.


Series applied to dpdk-next-net-eventdev/for-main. Thanks

>
> >
> >> ---
> >>   doc/guides/eventdevs/features/default.ini |  1 +
> >>   doc/guides/rel_notes/release_22_07.rst    |  5 ++++
> >>   lib/eventdev/eventdev_pmd.h               | 22 ++++++++++++++++
> >>   lib/eventdev/rte_eventdev.c               | 26 ++++++++++++++++++
> >>   lib/eventdev/rte_eventdev.h               | 32 ++++++++++++++++++++++-
> >>   lib/eventdev/version.map                  |  3 +++
> >>   6 files changed, 88 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/doc/guides/rel_notes/release_22_07.rst 
> >> b/doc/guides/rel_notes/release_22_07.rst
> >> index 88d6e96cc1..a7a912d665 100644
> >> --- a/doc/guides/rel_notes/release_22_07.rst
> >> +++ b/doc/guides/rel_notes/release_22_07.rst
> >> @@ -65,6 +65,11 @@ New Features
> >>     * Added support for promiscuous mode on Windows.
> >>     * Added support for MTU on Windows.
> >>
> >> +* **Added support for setting queue attributes at runtime in eventdev.**
> >> +
> >> +  Added new API ``rte_event_queue_attr_set()``, to set event queue 
> >> attributes
> >> +  at runtime.
> >> +
> >>
> >>   Removed Items
> >>   -------------
> >> 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..a79b1397eb 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,29 @@ 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 the event attribute.
> >> + *   - <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
> >>
>

Reply via email to