From: Shijith Thotton <sthotton@marvell.com>
To: "Mattias Rönnblom" <mattias.ronnblom@ericsson.com>,
"dev@dpdk.org" <dev@dpdk.org>,
"Jerin Jacob Kollanukkaran" <jerinj@marvell.com>
Cc: Pavan Nikhilesh Bhagavatula <pbhagavatula@marvell.com>,
Ray Kinsella <mdr@ashroe.eu>
Subject: RE: [PATCH 1/6] eventdev: support to set queue attributes at runtime
Date: Mon, 4 Apr 2022 11:45:11 +0000 [thread overview]
Message-ID: <PH0PR18MB4425676CD7BEDDA7A174C06AD9E59@PH0PR18MB4425.namprd18.prod.outlook.com> (raw)
In-Reply-To: <947ae15c-de5b-42e5-1a16-886869373d6a@ericsson.com>
>> 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>
>> ---
>> doc/guides/eventdevs/features/default.ini | 1 +
>> lib/eventdev/eventdev_pmd.h | 22 +++++++++++++
>> lib/eventdev/rte_eventdev.c | 31 ++++++++++++++++++
>> lib/eventdev/rte_eventdev.h | 38 ++++++++++++++++++++++-
>> lib/eventdev/version.map | 3 ++
>> 5 files changed, 94 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..6182749503 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,
>> + uint32_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..13c8af877e 100644
>> --- a/lib/eventdev/rte_eventdev.c
>> +++ b/lib/eventdev/rte_eventdev.c
>> @@ -844,6 +844,37 @@ 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,
>> + uint32_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 (attr_id > RTE_EVENT_QUEUE_ATTR_MAX) {
>> + RTE_EDEV_LOG_ERR("Invalid attribute ID %" PRIu8, attr_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..19710cd0c5 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
>> @@ -678,6 +685,11 @@ rte_event_queue_setup(uint8_t dev_id, uint8_t
>queue_id,
>> */
>> #define RTE_EVENT_QUEUE_ATTR_SCHEDULE_TYPE 4
>>
>> +/**
>> + * Maximum supported attribute ID.
>> + */
>> +#define RTE_EVENT_QUEUE_ATTR_MAX
>RTE_EVENT_QUEUE_ATTR_SCHEDULE_TYPE
>> +
>
>This #define will assure that every new attribute breaks the ABI. Is
>that intentional?
>
Will remove .
>> /**
>> * Get an attribute from a queue.
>> *
>> @@ -702,6 +714,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,
>> + uint32_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 {
next prev parent reply other threads:[~2022-04-04 11:45 UTC|newest]
Thread overview: 58+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-29 13:10 [PATCH 0/6] Extend and set event " Shijith Thotton
2022-03-29 13:11 ` [PATCH 1/6] eventdev: support to set " Shijith Thotton
2022-03-30 10:58 ` Van Haaren, Harry
2022-04-04 9:35 ` Shijith Thotton
2022-04-04 9:45 ` Van Haaren, Harry
2022-03-30 12:14 ` Mattias Rönnblom
2022-04-04 11:45 ` Shijith Thotton [this message]
2022-03-29 13:11 ` [PATCH 2/6] eventdev: add weight and affinity to queue attributes Shijith Thotton
2022-03-30 12:12 ` Mattias Rönnblom
2022-04-04 9:33 ` Shijith Thotton
2022-03-29 13:11 ` [PATCH 3/6] doc: announce change in event queue conf structure Shijith Thotton
2022-03-29 13:11 ` [PATCH 4/6] test/event: test cases to test runtime queue attribute Shijith Thotton
2022-03-29 13:11 ` [PATCH 5/6] event/cnxk: support to set runtime queue attributes Shijith Thotton
2022-03-30 11:05 ` Van Haaren, Harry
2022-04-04 7:59 ` Shijith Thotton
2022-03-29 13:11 ` [PATCH 6/6] common/cnxk: use lock when accessing mbox of SSO Shijith Thotton
2022-03-29 18:49 ` [PATCH 0/6] Extend and set event queue attributes at runtime Jerin Jacob
2022-03-30 10:52 ` Van Haaren, Harry
2022-04-04 7:57 ` Shijith Thotton
2022-04-05 5:40 ` [PATCH v2 " Shijith Thotton
2022-04-05 5:40 ` [PATCH v2 1/6] eventdev: support to set " Shijith Thotton
2022-05-09 12:43 ` Jerin Jacob
2022-04-05 5:40 ` [PATCH v2 2/6] eventdev: add weight and affinity to queue attributes Shijith Thotton
2022-05-09 12:46 ` Jerin Jacob
2022-04-05 5:41 ` [PATCH v2 3/6] doc: announce change in event queue conf structure Shijith Thotton
2022-05-09 12:47 ` Jerin Jacob
2022-05-15 10:24 ` [PATCH v3] " Shijith Thotton
2022-07-12 14:05 ` Jerin Jacob
2022-07-13 6:52 ` [EXT] " Pavan Nikhilesh Bhagavatula
2022-07-13 8:55 ` Mattias Rönnblom
2022-07-13 9:56 ` Pavan Nikhilesh Bhagavatula
2022-07-17 12:52 ` Thomas Monjalon
2022-04-05 5:41 ` [PATCH v2 4/6] test/event: test cases to test runtime queue attribute Shijith Thotton
2022-05-09 12:55 ` Jerin Jacob
2022-04-05 5:41 ` [PATCH v2 5/6] event/cnxk: support to set runtime queue attributes Shijith Thotton
2022-05-09 12:57 ` Jerin Jacob
2022-04-05 5:41 ` [PATCH v2 6/6] common/cnxk: use lock when accessing mbox of SSO Shijith Thotton
2022-04-11 11:07 ` [PATCH v2 0/6] Extend and set event queue attributes at runtime Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 0/5] " Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 1/5] eventdev: support to set " Shijith Thotton
2022-05-15 13:11 ` Mattias Rönnblom
2022-05-16 3:57 ` Shijith Thotton
2022-05-16 10:23 ` Mattias Rönnblom
2022-05-16 12:12 ` Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 2/5] eventdev: add weight and affinity to queue attributes Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 3/5] test/event: test cases to test runtime queue attribute Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 4/5] common/cnxk: use lock when accessing mbox of SSO Shijith Thotton
2022-05-15 9:53 ` [PATCH v3 5/5] event/cnxk: support to set runtime queue attributes Shijith Thotton
2022-05-16 17:35 ` [PATCH v4 0/5] Extend and set event queue attributes at runtime Shijith Thotton
2022-05-16 17:35 ` [PATCH v4 1/5] eventdev: support to set " Shijith Thotton
2022-05-16 18:02 ` Jerin Jacob
2022-05-17 8:55 ` Mattias Rönnblom
2022-05-17 13:35 ` Jerin Jacob
2022-05-19 8:49 ` Ray Kinsella
2022-05-16 17:35 ` [PATCH v4 2/5] eventdev: add weight and affinity to queue attributes Shijith Thotton
2022-05-16 17:35 ` [PATCH v4 3/5] test/event: test cases to test runtime queue attribute Shijith Thotton
2022-05-16 17:35 ` [PATCH v4 4/5] common/cnxk: use lock when accessing mbox of SSO Shijith Thotton
2022-05-16 17:35 ` [PATCH v4 5/5] event/cnxk: support to set runtime queue attributes Shijith Thotton
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=PH0PR18MB4425676CD7BEDDA7A174C06AD9E59@PH0PR18MB4425.namprd18.prod.outlook.com \
--to=sthotton@marvell.com \
--cc=dev@dpdk.org \
--cc=jerinj@marvell.com \
--cc=mattias.ronnblom@ericsson.com \
--cc=mdr@ashroe.eu \
--cc=pbhagavatula@marvell.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).