* [PATCH] eventdev: add weight and affinity attributes to queue conf
@ 2022-08-10 7:36 Shijith Thotton
2022-09-14 12:34 ` Jerin Jacob
0 siblings, 1 reply; 3+ messages in thread
From: Shijith Thotton @ 2022-08-10 7:36 UTC (permalink / raw)
To: jerinj; +Cc: Shijith Thotton, dev, Ray Kinsella, Pavan Nikhilesh
Added new fields to represent event queue weight and affinity in
rte_event_queue_conf structure. Internal op to get queue attribute is
removed as it is no longer needed. Updated driver to use the new field.
Signed-off-by: Shijith Thotton <sthotton@marvell.com>
---
doc/guides/rel_notes/deprecation.rst | 3 --
doc/guides/rel_notes/release_22_11.rst | 3 ++
drivers/event/cnxk/cn10k_eventdev.c | 1 -
drivers/event/cnxk/cn9k_eventdev.c | 1 -
drivers/event/cnxk/cnxk_eventdev.c | 42 ++++++--------------------
drivers/event/cnxk/cnxk_eventdev.h | 9 ------
lib/eventdev/eventdev_pmd.h | 22 --------------
lib/eventdev/rte_eventdev.c | 10 +++---
lib/eventdev/rte_eventdev.h | 16 ++++++++++
9 files changed, 33 insertions(+), 74 deletions(-)
diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
index e7583cae4c..13e7c6370e 100644
--- a/doc/guides/rel_notes/deprecation.rst
+++ b/doc/guides/rel_notes/deprecation.rst
@@ -206,9 +206,6 @@ Deprecation Notices
``rte_event_vector::elem_offset`` gives the number of valid elements left
to process from the ``rte_event_vector::elem_offset``.
-* eventdev: New fields to represent event queue weight and affinity
- will be added to ``rte_event_queue_conf`` structure in DPDK 22.11.
-
* metrics: The function ``rte_metrics_init`` will have a non-void return
in order to notify errors instead of calling ``rte_exit``.
diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst
index 8c021cf050..8ffd71e650 100644
--- a/doc/guides/rel_notes/release_22_11.rst
+++ b/doc/guides/rel_notes/release_22_11.rst
@@ -88,6 +88,9 @@ API Changes
ABI Changes
-----------
+* eventdev: Added ``weight`` and ``affinity`` fields to ``rte_event_queue_conf``
+ structure.
+
.. This section should contain ABI changes. Sample format:
* sample: Add a short 1-2 sentence description of the ABI change
diff --git a/drivers/event/cnxk/cn10k_eventdev.c b/drivers/event/cnxk/cn10k_eventdev.c
index 5a0cab40a9..aa8ae394bc 100644
--- a/drivers/event/cnxk/cn10k_eventdev.c
+++ b/drivers/event/cnxk/cn10k_eventdev.c
@@ -922,7 +922,6 @@ static struct eventdev_ops cn10k_sso_dev_ops = {
.queue_def_conf = cnxk_sso_queue_def_conf,
.queue_setup = cnxk_sso_queue_setup,
.queue_release = cnxk_sso_queue_release,
- .queue_attr_get = cnxk_sso_queue_attribute_get,
.queue_attr_set = cnxk_sso_queue_attribute_set,
.port_def_conf = cnxk_sso_port_def_conf,
diff --git a/drivers/event/cnxk/cn9k_eventdev.c b/drivers/event/cnxk/cn9k_eventdev.c
index 2e27030049..58c72a580a 100644
--- a/drivers/event/cnxk/cn9k_eventdev.c
+++ b/drivers/event/cnxk/cn9k_eventdev.c
@@ -1153,7 +1153,6 @@ static struct eventdev_ops cn9k_sso_dev_ops = {
.queue_def_conf = cnxk_sso_queue_def_conf,
.queue_setup = cnxk_sso_queue_setup,
.queue_release = cnxk_sso_queue_release,
- .queue_attr_get = cnxk_sso_queue_attribute_get,
.queue_attr_set = cnxk_sso_queue_attribute_set,
.port_def_conf = cnxk_sso_port_def_conf,
diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
index 97dcf7b66e..45c53ffb4e 100644
--- a/drivers/event/cnxk/cnxk_eventdev.c
+++ b/drivers/event/cnxk/cnxk_eventdev.c
@@ -321,6 +321,8 @@ cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
queue_conf->nb_atomic_order_sequences = (1ULL << 20);
queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES;
queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL;
+ queue_conf->weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
+ queue_conf->affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
}
int
@@ -330,18 +332,12 @@ cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
uint8_t priority, weight, affinity;
- /* Default weight and affinity */
- dev->mlt_prio[queue_id].weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
- dev->mlt_prio[queue_id].affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
-
priority = CNXK_QOS_NORMALIZE(queue_conf->priority, 0,
RTE_EVENT_DEV_PRIORITY_LOWEST,
CNXK_SSO_PRIORITY_CNT);
- weight = CNXK_QOS_NORMALIZE(
- dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
- RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
- affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
- RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
+ weight = CNXK_QOS_NORMALIZE(queue_conf->weight, CNXK_SSO_WEIGHT_MIN,
+ RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
+ affinity = CNXK_QOS_NORMALIZE(queue_conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
CNXK_SSO_AFFINITY_CNT);
plt_sso_dbg("Queue=%u prio=%u weight=%u affinity=%u", queue_id,
@@ -358,22 +354,6 @@ cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id)
RTE_SET_USED(queue_id);
}
-int
-cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev, uint8_t queue_id,
- uint32_t attr_id, uint32_t *attr_value)
-{
- struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
-
- if (attr_id == RTE_EVENT_QUEUE_ATTR_WEIGHT)
- *attr_value = dev->mlt_prio[queue_id].weight;
- else if (attr_id == RTE_EVENT_QUEUE_ATTR_AFFINITY)
- *attr_value = dev->mlt_prio[queue_id].affinity;
- else
- return -EINVAL;
-
- return 0;
-}
-
int
cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
uint32_t attr_id, uint64_t attr_value)
@@ -389,10 +369,10 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
conf->priority = attr_value;
break;
case RTE_EVENT_QUEUE_ATTR_WEIGHT:
- dev->mlt_prio[queue_id].weight = attr_value;
+ conf->weight = attr_value;
break;
case RTE_EVENT_QUEUE_ATTR_AFFINITY:
- dev->mlt_prio[queue_id].affinity = attr_value;
+ conf->affinity = attr_value;
break;
case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_FLOWS:
case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_ORDER_SEQUENCES:
@@ -409,11 +389,9 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
priority = CNXK_QOS_NORMALIZE(conf->priority, 0,
RTE_EVENT_DEV_PRIORITY_LOWEST,
CNXK_SSO_PRIORITY_CNT);
- weight = CNXK_QOS_NORMALIZE(
- dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
- RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
- affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
- RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
+ weight = CNXK_QOS_NORMALIZE(conf->weight, CNXK_SSO_WEIGHT_MIN,
+ RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
+ affinity = CNXK_QOS_NORMALIZE(conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
CNXK_SSO_AFFINITY_CNT);
return roc_sso_hwgrp_set_priority(&dev->sso, queue_id, weight, affinity,
diff --git a/drivers/event/cnxk/cnxk_eventdev.h b/drivers/event/cnxk/cnxk_eventdev.h
index bfd0c5627e..d78fb4ea2f 100644
--- a/drivers/event/cnxk/cnxk_eventdev.h
+++ b/drivers/event/cnxk/cnxk_eventdev.h
@@ -88,11 +88,6 @@ struct cnxk_sso_qos {
uint16_t iaq_prcnt;
};
-struct cnxk_sso_mlt_prio {
- uint8_t weight;
- uint8_t affinity;
-};
-
struct cnxk_sso_evdev {
struct roc_sso sso;
uint8_t max_event_queues;
@@ -123,7 +118,6 @@ struct cnxk_sso_evdev {
uint64_t *timer_adptr_sz;
uint16_t vec_pool_cnt;
uint64_t *vec_pools;
- struct cnxk_sso_mlt_prio mlt_prio[RTE_EVENT_MAX_QUEUES_PER_DEV];
/* Dev args */
uint32_t xae_cnt;
uint8_t qos_queue_cnt;
@@ -250,9 +244,6 @@ void cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
int cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
const struct rte_event_queue_conf *queue_conf);
void cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id);
-int cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev,
- uint8_t queue_id, uint32_t attr_id,
- uint32_t *attr_value);
int cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev,
uint8_t queue_id, uint32_t attr_id,
uint64_t attr_value);
diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h
index 69402668d8..8879e43feb 100644
--- a/lib/eventdev/eventdev_pmd.h
+++ b/lib/eventdev/eventdev_pmd.h
@@ -341,26 +341,6 @@ typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
uint8_t queue_id);
-/**
- * Get 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[out] attr_value
- * Event queue attribute value
- *
- * @return
- * - 0: Success.
- * - <0: Error code on failure.
- */
-typedef int (*eventdev_queue_attr_get_t)(struct rte_eventdev *dev,
- uint8_t queue_id, uint32_t attr_id,
- uint32_t *attr_value);
-
/**
* Set an event queue attribute at runtime.
*
@@ -1268,8 +1248,6 @@ struct eventdev_ops {
/**< Set up an event queue. */
eventdev_queue_release_t queue_release;
/**< Release an event queue. */
- eventdev_queue_attr_get_t queue_attr_get;
- /**< Get an event queue attribute. */
eventdev_queue_attr_set_t queue_attr_set;
/**< Set an event queue attribute. */
diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c
index 1dc4f966be..b96185b25d 100644
--- a/lib/eventdev/rte_eventdev.c
+++ b/lib/eventdev/rte_eventdev.c
@@ -859,15 +859,13 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
break;
case RTE_EVENT_QUEUE_ATTR_WEIGHT:
*attr_value = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
- if (dev->dev_ops->queue_attr_get)
- return (*dev->dev_ops->queue_attr_get)(
- dev, queue_id, attr_id, attr_value);
+ if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
+ *attr_value = conf->weight;
break;
case RTE_EVENT_QUEUE_ATTR_AFFINITY:
*attr_value = RTE_EVENT_QUEUE_AFFINITY_LOWEST;
- if (dev->dev_ops->queue_attr_get)
- return (*dev->dev_ops->queue_attr_get)(
- dev, queue_id, attr_id, attr_value);
+ if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
+ *attr_value = conf->affinity;
break;
default:
return -EINVAL;
diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
index 6a6f6ea4c1..f1908b82b2 100644
--- a/lib/eventdev/rte_eventdev.h
+++ b/lib/eventdev/rte_eventdev.h
@@ -640,6 +640,22 @@ struct rte_event_queue_conf {
* event device supported priority value.
* Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability
*/
+ uint8_t weight;
+ /**< Weight of the event queue relative to other event queues.
+ * The requested weight should be in the range of
+ * [RTE_EVENT_DEV_WEIGHT_HIGHEST, RTE_EVENT_DEV_WEIGHT_LOWEST].
+ * The implementation shall normalize the requested weight to event
+ * device supported weight value.
+ * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
+ */
+ uint8_t affinity;
+ /**< Affinity of the event queue relative to other event queues.
+ * The requested affinity should be in the range of
+ * [RTE_EVENT_DEV_AFFINITY_HIGHEST, RTE_EVENT_DEV_AFFINITY_LOWEST].
+ * The implementation shall normalize the requested affinity to event
+ * device supported affinity value.
+ * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
+ */
};
/**
--
2.25.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] eventdev: add weight and affinity attributes to queue conf
2022-08-10 7:36 [PATCH] eventdev: add weight and affinity attributes to queue conf Shijith Thotton
@ 2022-09-14 12:34 ` Jerin Jacob
2022-09-15 16:53 ` Jerin Jacob
0 siblings, 1 reply; 3+ messages in thread
From: Jerin Jacob @ 2022-09-14 12:34 UTC (permalink / raw)
To: Shijith Thotton, McDaniel, Timothy, Gujjar, Abhinandan S,
Van Haaren, Harry, Hemant Agrawal, Liang Ma,
Mattias Rönnblom, Erik Gabriel Carrillo, Nipun Gupta,
Jayatheerthan, Jay, Peter Mccarthy
Cc: jerinj, dev, Ray Kinsella, Pavan Nikhilesh
On Wed, Aug 10, 2022 at 1:13 PM Shijith Thotton <sthotton@marvell.com> wrote:
>
> Added new fields to represent event queue weight and affinity in
> rte_event_queue_conf structure. Internal op to get queue attribute is
> removed as it is no longer needed. Updated driver to use the new field.
>
> Signed-off-by: Shijith Thotton <sthotton@marvell.com>
Acked-by: Jerin Jacob <jerinj@marvell.com>
+ eventdev PMD maintainers to raise any feedback before merging to next-eventdev
> ---
> doc/guides/rel_notes/deprecation.rst | 3 --
> doc/guides/rel_notes/release_22_11.rst | 3 ++
> drivers/event/cnxk/cn10k_eventdev.c | 1 -
> drivers/event/cnxk/cn9k_eventdev.c | 1 -
> drivers/event/cnxk/cnxk_eventdev.c | 42 ++++++--------------------
> drivers/event/cnxk/cnxk_eventdev.h | 9 ------
> lib/eventdev/eventdev_pmd.h | 22 --------------
> lib/eventdev/rte_eventdev.c | 10 +++---
> lib/eventdev/rte_eventdev.h | 16 ++++++++++
> 9 files changed, 33 insertions(+), 74 deletions(-)
>
> diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
> index e7583cae4c..13e7c6370e 100644
> --- a/doc/guides/rel_notes/deprecation.rst
> +++ b/doc/guides/rel_notes/deprecation.rst
> @@ -206,9 +206,6 @@ Deprecation Notices
> ``rte_event_vector::elem_offset`` gives the number of valid elements left
> to process from the ``rte_event_vector::elem_offset``.
>
> -* eventdev: New fields to represent event queue weight and affinity
> - will be added to ``rte_event_queue_conf`` structure in DPDK 22.11.
> -
> * metrics: The function ``rte_metrics_init`` will have a non-void return
> in order to notify errors instead of calling ``rte_exit``.
>
> diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst
> index 8c021cf050..8ffd71e650 100644
> --- a/doc/guides/rel_notes/release_22_11.rst
> +++ b/doc/guides/rel_notes/release_22_11.rst
> @@ -88,6 +88,9 @@ API Changes
> ABI Changes
> -----------
>
> +* eventdev: Added ``weight`` and ``affinity`` fields to ``rte_event_queue_conf``
> + structure.
> +
> .. This section should contain ABI changes. Sample format:
>
> * sample: Add a short 1-2 sentence description of the ABI change
> diff --git a/drivers/event/cnxk/cn10k_eventdev.c b/drivers/event/cnxk/cn10k_eventdev.c
> index 5a0cab40a9..aa8ae394bc 100644
> --- a/drivers/event/cnxk/cn10k_eventdev.c
> +++ b/drivers/event/cnxk/cn10k_eventdev.c
> @@ -922,7 +922,6 @@ static struct eventdev_ops cn10k_sso_dev_ops = {
> .queue_def_conf = cnxk_sso_queue_def_conf,
> .queue_setup = cnxk_sso_queue_setup,
> .queue_release = cnxk_sso_queue_release,
> - .queue_attr_get = cnxk_sso_queue_attribute_get,
> .queue_attr_set = cnxk_sso_queue_attribute_set,
>
> .port_def_conf = cnxk_sso_port_def_conf,
> diff --git a/drivers/event/cnxk/cn9k_eventdev.c b/drivers/event/cnxk/cn9k_eventdev.c
> index 2e27030049..58c72a580a 100644
> --- a/drivers/event/cnxk/cn9k_eventdev.c
> +++ b/drivers/event/cnxk/cn9k_eventdev.c
> @@ -1153,7 +1153,6 @@ static struct eventdev_ops cn9k_sso_dev_ops = {
> .queue_def_conf = cnxk_sso_queue_def_conf,
> .queue_setup = cnxk_sso_queue_setup,
> .queue_release = cnxk_sso_queue_release,
> - .queue_attr_get = cnxk_sso_queue_attribute_get,
> .queue_attr_set = cnxk_sso_queue_attribute_set,
>
> .port_def_conf = cnxk_sso_port_def_conf,
> diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
> index 97dcf7b66e..45c53ffb4e 100644
> --- a/drivers/event/cnxk/cnxk_eventdev.c
> +++ b/drivers/event/cnxk/cnxk_eventdev.c
> @@ -321,6 +321,8 @@ cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
> queue_conf->nb_atomic_order_sequences = (1ULL << 20);
> queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES;
> queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL;
> + queue_conf->weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> + queue_conf->affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
> }
>
> int
> @@ -330,18 +332,12 @@ cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
> struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
> uint8_t priority, weight, affinity;
>
> - /* Default weight and affinity */
> - dev->mlt_prio[queue_id].weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> - dev->mlt_prio[queue_id].affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
> -
> priority = CNXK_QOS_NORMALIZE(queue_conf->priority, 0,
> RTE_EVENT_DEV_PRIORITY_LOWEST,
> CNXK_SSO_PRIORITY_CNT);
> - weight = CNXK_QOS_NORMALIZE(
> - dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
> - RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> - affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
> - RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> + weight = CNXK_QOS_NORMALIZE(queue_conf->weight, CNXK_SSO_WEIGHT_MIN,
> + RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> + affinity = CNXK_QOS_NORMALIZE(queue_conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> CNXK_SSO_AFFINITY_CNT);
>
> plt_sso_dbg("Queue=%u prio=%u weight=%u affinity=%u", queue_id,
> @@ -358,22 +354,6 @@ cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id)
> RTE_SET_USED(queue_id);
> }
>
> -int
> -cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev, uint8_t queue_id,
> - uint32_t attr_id, uint32_t *attr_value)
> -{
> - struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
> -
> - if (attr_id == RTE_EVENT_QUEUE_ATTR_WEIGHT)
> - *attr_value = dev->mlt_prio[queue_id].weight;
> - else if (attr_id == RTE_EVENT_QUEUE_ATTR_AFFINITY)
> - *attr_value = dev->mlt_prio[queue_id].affinity;
> - else
> - return -EINVAL;
> -
> - return 0;
> -}
> -
> int
> cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> uint32_t attr_id, uint64_t attr_value)
> @@ -389,10 +369,10 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> conf->priority = attr_value;
> break;
> case RTE_EVENT_QUEUE_ATTR_WEIGHT:
> - dev->mlt_prio[queue_id].weight = attr_value;
> + conf->weight = attr_value;
> break;
> case RTE_EVENT_QUEUE_ATTR_AFFINITY:
> - dev->mlt_prio[queue_id].affinity = attr_value;
> + conf->affinity = attr_value;
> break;
> case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_FLOWS:
> case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_ORDER_SEQUENCES:
> @@ -409,11 +389,9 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> priority = CNXK_QOS_NORMALIZE(conf->priority, 0,
> RTE_EVENT_DEV_PRIORITY_LOWEST,
> CNXK_SSO_PRIORITY_CNT);
> - weight = CNXK_QOS_NORMALIZE(
> - dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
> - RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> - affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
> - RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> + weight = CNXK_QOS_NORMALIZE(conf->weight, CNXK_SSO_WEIGHT_MIN,
> + RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> + affinity = CNXK_QOS_NORMALIZE(conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> CNXK_SSO_AFFINITY_CNT);
>
> return roc_sso_hwgrp_set_priority(&dev->sso, queue_id, weight, affinity,
> diff --git a/drivers/event/cnxk/cnxk_eventdev.h b/drivers/event/cnxk/cnxk_eventdev.h
> index bfd0c5627e..d78fb4ea2f 100644
> --- a/drivers/event/cnxk/cnxk_eventdev.h
> +++ b/drivers/event/cnxk/cnxk_eventdev.h
> @@ -88,11 +88,6 @@ struct cnxk_sso_qos {
> uint16_t iaq_prcnt;
> };
>
> -struct cnxk_sso_mlt_prio {
> - uint8_t weight;
> - uint8_t affinity;
> -};
> -
> struct cnxk_sso_evdev {
> struct roc_sso sso;
> uint8_t max_event_queues;
> @@ -123,7 +118,6 @@ struct cnxk_sso_evdev {
> uint64_t *timer_adptr_sz;
> uint16_t vec_pool_cnt;
> uint64_t *vec_pools;
> - struct cnxk_sso_mlt_prio mlt_prio[RTE_EVENT_MAX_QUEUES_PER_DEV];
> /* Dev args */
> uint32_t xae_cnt;
> uint8_t qos_queue_cnt;
> @@ -250,9 +244,6 @@ void cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
> int cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
> const struct rte_event_queue_conf *queue_conf);
> void cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id);
> -int cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev,
> - uint8_t queue_id, uint32_t attr_id,
> - uint32_t *attr_value);
> int cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev,
> uint8_t queue_id, uint32_t attr_id,
> uint64_t attr_value);
> diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h
> index 69402668d8..8879e43feb 100644
> --- a/lib/eventdev/eventdev_pmd.h
> +++ b/lib/eventdev/eventdev_pmd.h
> @@ -341,26 +341,6 @@ typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
> typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
> uint8_t queue_id);
>
> -/**
> - * Get 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[out] attr_value
> - * Event queue attribute value
> - *
> - * @return
> - * - 0: Success.
> - * - <0: Error code on failure.
> - */
> -typedef int (*eventdev_queue_attr_get_t)(struct rte_eventdev *dev,
> - uint8_t queue_id, uint32_t attr_id,
> - uint32_t *attr_value);
> -
> /**
> * Set an event queue attribute at runtime.
> *
> @@ -1268,8 +1248,6 @@ struct eventdev_ops {
> /**< Set up an event queue. */
> eventdev_queue_release_t queue_release;
> /**< Release an event queue. */
> - eventdev_queue_attr_get_t queue_attr_get;
> - /**< Get an event queue attribute. */
> eventdev_queue_attr_set_t queue_attr_set;
> /**< Set an event queue attribute. */
>
> diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c
> index 1dc4f966be..b96185b25d 100644
> --- a/lib/eventdev/rte_eventdev.c
> +++ b/lib/eventdev/rte_eventdev.c
> @@ -859,15 +859,13 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
> break;
> case RTE_EVENT_QUEUE_ATTR_WEIGHT:
> *attr_value = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> - if (dev->dev_ops->queue_attr_get)
> - return (*dev->dev_ops->queue_attr_get)(
> - dev, queue_id, attr_id, attr_value);
> + if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
> + *attr_value = conf->weight;
> break;
> case RTE_EVENT_QUEUE_ATTR_AFFINITY:
> *attr_value = RTE_EVENT_QUEUE_AFFINITY_LOWEST;
> - if (dev->dev_ops->queue_attr_get)
> - return (*dev->dev_ops->queue_attr_get)(
> - dev, queue_id, attr_id, attr_value);
> + if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
> + *attr_value = conf->affinity;
> break;
> default:
> return -EINVAL;
> diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
> index 6a6f6ea4c1..f1908b82b2 100644
> --- a/lib/eventdev/rte_eventdev.h
> +++ b/lib/eventdev/rte_eventdev.h
> @@ -640,6 +640,22 @@ struct rte_event_queue_conf {
> * event device supported priority value.
> * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability
> */
> + uint8_t weight;
> + /**< Weight of the event queue relative to other event queues.
> + * The requested weight should be in the range of
> + * [RTE_EVENT_DEV_WEIGHT_HIGHEST, RTE_EVENT_DEV_WEIGHT_LOWEST].
> + * The implementation shall normalize the requested weight to event
> + * device supported weight value.
> + * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
> + */
> + uint8_t affinity;
> + /**< Affinity of the event queue relative to other event queues.
> + * The requested affinity should be in the range of
> + * [RTE_EVENT_DEV_AFFINITY_HIGHEST, RTE_EVENT_DEV_AFFINITY_LOWEST].
> + * The implementation shall normalize the requested affinity to event
> + * device supported affinity value.
> + * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
> + */
> };
>
> /**
> --
> 2.25.1
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [PATCH] eventdev: add weight and affinity attributes to queue conf
2022-09-14 12:34 ` Jerin Jacob
@ 2022-09-15 16:53 ` Jerin Jacob
0 siblings, 0 replies; 3+ messages in thread
From: Jerin Jacob @ 2022-09-15 16:53 UTC (permalink / raw)
To: Shijith Thotton, McDaniel, Timothy, Gujjar, Abhinandan S,
Van Haaren, Harry, Hemant Agrawal, Liang Ma,
Mattias Rönnblom, Erik Gabriel Carrillo, Nipun Gupta,
Jayatheerthan, Jay, Peter Mccarthy
Cc: jerinj, dev, Ray Kinsella, Pavan Nikhilesh
On Wed, Sep 14, 2022 at 6:04 PM Jerin Jacob <jerinjacobk@gmail.com> wrote:
>
> On Wed, Aug 10, 2022 at 1:13 PM Shijith Thotton <sthotton@marvell.com> wrote:
> >
> > Added new fields to represent event queue weight and affinity in
> > rte_event_queue_conf structure. Internal op to get queue attribute is
> > removed as it is no longer needed. Updated driver to use the new field.
> >
> > Signed-off-by: Shijith Thotton <sthotton@marvell.com>
>
> Acked-by: Jerin Jacob <jerinj@marvell.com>
>
> + eventdev PMD maintainers to raise any feedback before merging to next-eventdev
Applied to dpdk-next-net-eventdev/for-main. Thanks
>
>
> > ---
> > doc/guides/rel_notes/deprecation.rst | 3 --
> > doc/guides/rel_notes/release_22_11.rst | 3 ++
> > drivers/event/cnxk/cn10k_eventdev.c | 1 -
> > drivers/event/cnxk/cn9k_eventdev.c | 1 -
> > drivers/event/cnxk/cnxk_eventdev.c | 42 ++++++--------------------
> > drivers/event/cnxk/cnxk_eventdev.h | 9 ------
> > lib/eventdev/eventdev_pmd.h | 22 --------------
> > lib/eventdev/rte_eventdev.c | 10 +++---
> > lib/eventdev/rte_eventdev.h | 16 ++++++++++
> > 9 files changed, 33 insertions(+), 74 deletions(-)
> >
> > diff --git a/doc/guides/rel_notes/deprecation.rst b/doc/guides/rel_notes/deprecation.rst
> > index e7583cae4c..13e7c6370e 100644
> > --- a/doc/guides/rel_notes/deprecation.rst
> > +++ b/doc/guides/rel_notes/deprecation.rst
> > @@ -206,9 +206,6 @@ Deprecation Notices
> > ``rte_event_vector::elem_offset`` gives the number of valid elements left
> > to process from the ``rte_event_vector::elem_offset``.
> >
> > -* eventdev: New fields to represent event queue weight and affinity
> > - will be added to ``rte_event_queue_conf`` structure in DPDK 22.11.
> > -
> > * metrics: The function ``rte_metrics_init`` will have a non-void return
> > in order to notify errors instead of calling ``rte_exit``.
> >
> > diff --git a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst
> > index 8c021cf050..8ffd71e650 100644
> > --- a/doc/guides/rel_notes/release_22_11.rst
> > +++ b/doc/guides/rel_notes/release_22_11.rst
> > @@ -88,6 +88,9 @@ API Changes
> > ABI Changes
> > -----------
> >
> > +* eventdev: Added ``weight`` and ``affinity`` fields to ``rte_event_queue_conf``
> > + structure.
> > +
> > .. This section should contain ABI changes. Sample format:
> >
> > * sample: Add a short 1-2 sentence description of the ABI change
> > diff --git a/drivers/event/cnxk/cn10k_eventdev.c b/drivers/event/cnxk/cn10k_eventdev.c
> > index 5a0cab40a9..aa8ae394bc 100644
> > --- a/drivers/event/cnxk/cn10k_eventdev.c
> > +++ b/drivers/event/cnxk/cn10k_eventdev.c
> > @@ -922,7 +922,6 @@ static struct eventdev_ops cn10k_sso_dev_ops = {
> > .queue_def_conf = cnxk_sso_queue_def_conf,
> > .queue_setup = cnxk_sso_queue_setup,
> > .queue_release = cnxk_sso_queue_release,
> > - .queue_attr_get = cnxk_sso_queue_attribute_get,
> > .queue_attr_set = cnxk_sso_queue_attribute_set,
> >
> > .port_def_conf = cnxk_sso_port_def_conf,
> > diff --git a/drivers/event/cnxk/cn9k_eventdev.c b/drivers/event/cnxk/cn9k_eventdev.c
> > index 2e27030049..58c72a580a 100644
> > --- a/drivers/event/cnxk/cn9k_eventdev.c
> > +++ b/drivers/event/cnxk/cn9k_eventdev.c
> > @@ -1153,7 +1153,6 @@ static struct eventdev_ops cn9k_sso_dev_ops = {
> > .queue_def_conf = cnxk_sso_queue_def_conf,
> > .queue_setup = cnxk_sso_queue_setup,
> > .queue_release = cnxk_sso_queue_release,
> > - .queue_attr_get = cnxk_sso_queue_attribute_get,
> > .queue_attr_set = cnxk_sso_queue_attribute_set,
> >
> > .port_def_conf = cnxk_sso_port_def_conf,
> > diff --git a/drivers/event/cnxk/cnxk_eventdev.c b/drivers/event/cnxk/cnxk_eventdev.c
> > index 97dcf7b66e..45c53ffb4e 100644
> > --- a/drivers/event/cnxk/cnxk_eventdev.c
> > +++ b/drivers/event/cnxk/cnxk_eventdev.c
> > @@ -321,6 +321,8 @@ cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
> > queue_conf->nb_atomic_order_sequences = (1ULL << 20);
> > queue_conf->event_queue_cfg = RTE_EVENT_QUEUE_CFG_ALL_TYPES;
> > queue_conf->priority = RTE_EVENT_DEV_PRIORITY_NORMAL;
> > + queue_conf->weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> > + queue_conf->affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
> > }
> >
> > int
> > @@ -330,18 +332,12 @@ cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
> > struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
> > uint8_t priority, weight, affinity;
> >
> > - /* Default weight and affinity */
> > - dev->mlt_prio[queue_id].weight = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> > - dev->mlt_prio[queue_id].affinity = RTE_EVENT_QUEUE_AFFINITY_HIGHEST;
> > -
> > priority = CNXK_QOS_NORMALIZE(queue_conf->priority, 0,
> > RTE_EVENT_DEV_PRIORITY_LOWEST,
> > CNXK_SSO_PRIORITY_CNT);
> > - weight = CNXK_QOS_NORMALIZE(
> > - dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
> > - RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> > - affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
> > - RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> > + weight = CNXK_QOS_NORMALIZE(queue_conf->weight, CNXK_SSO_WEIGHT_MIN,
> > + RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> > + affinity = CNXK_QOS_NORMALIZE(queue_conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> > CNXK_SSO_AFFINITY_CNT);
> >
> > plt_sso_dbg("Queue=%u prio=%u weight=%u affinity=%u", queue_id,
> > @@ -358,22 +354,6 @@ cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id)
> > RTE_SET_USED(queue_id);
> > }
> >
> > -int
> > -cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev, uint8_t queue_id,
> > - uint32_t attr_id, uint32_t *attr_value)
> > -{
> > - struct cnxk_sso_evdev *dev = cnxk_sso_pmd_priv(event_dev);
> > -
> > - if (attr_id == RTE_EVENT_QUEUE_ATTR_WEIGHT)
> > - *attr_value = dev->mlt_prio[queue_id].weight;
> > - else if (attr_id == RTE_EVENT_QUEUE_ATTR_AFFINITY)
> > - *attr_value = dev->mlt_prio[queue_id].affinity;
> > - else
> > - return -EINVAL;
> > -
> > - return 0;
> > -}
> > -
> > int
> > cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> > uint32_t attr_id, uint64_t attr_value)
> > @@ -389,10 +369,10 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> > conf->priority = attr_value;
> > break;
> > case RTE_EVENT_QUEUE_ATTR_WEIGHT:
> > - dev->mlt_prio[queue_id].weight = attr_value;
> > + conf->weight = attr_value;
> > break;
> > case RTE_EVENT_QUEUE_ATTR_AFFINITY:
> > - dev->mlt_prio[queue_id].affinity = attr_value;
> > + conf->affinity = attr_value;
> > break;
> > case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_FLOWS:
> > case RTE_EVENT_QUEUE_ATTR_NB_ATOMIC_ORDER_SEQUENCES:
> > @@ -409,11 +389,9 @@ cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev, uint8_t queue_id,
> > priority = CNXK_QOS_NORMALIZE(conf->priority, 0,
> > RTE_EVENT_DEV_PRIORITY_LOWEST,
> > CNXK_SSO_PRIORITY_CNT);
> > - weight = CNXK_QOS_NORMALIZE(
> > - dev->mlt_prio[queue_id].weight, CNXK_SSO_WEIGHT_MIN,
> > - RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> > - affinity = CNXK_QOS_NORMALIZE(dev->mlt_prio[queue_id].affinity, 0,
> > - RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> > + weight = CNXK_QOS_NORMALIZE(conf->weight, CNXK_SSO_WEIGHT_MIN,
> > + RTE_EVENT_QUEUE_WEIGHT_HIGHEST, CNXK_SSO_WEIGHT_CNT);
> > + affinity = CNXK_QOS_NORMALIZE(conf->affinity, 0, RTE_EVENT_QUEUE_AFFINITY_HIGHEST,
> > CNXK_SSO_AFFINITY_CNT);
> >
> > return roc_sso_hwgrp_set_priority(&dev->sso, queue_id, weight, affinity,
> > diff --git a/drivers/event/cnxk/cnxk_eventdev.h b/drivers/event/cnxk/cnxk_eventdev.h
> > index bfd0c5627e..d78fb4ea2f 100644
> > --- a/drivers/event/cnxk/cnxk_eventdev.h
> > +++ b/drivers/event/cnxk/cnxk_eventdev.h
> > @@ -88,11 +88,6 @@ struct cnxk_sso_qos {
> > uint16_t iaq_prcnt;
> > };
> >
> > -struct cnxk_sso_mlt_prio {
> > - uint8_t weight;
> > - uint8_t affinity;
> > -};
> > -
> > struct cnxk_sso_evdev {
> > struct roc_sso sso;
> > uint8_t max_event_queues;
> > @@ -123,7 +118,6 @@ struct cnxk_sso_evdev {
> > uint64_t *timer_adptr_sz;
> > uint16_t vec_pool_cnt;
> > uint64_t *vec_pools;
> > - struct cnxk_sso_mlt_prio mlt_prio[RTE_EVENT_MAX_QUEUES_PER_DEV];
> > /* Dev args */
> > uint32_t xae_cnt;
> > uint8_t qos_queue_cnt;
> > @@ -250,9 +244,6 @@ void cnxk_sso_queue_def_conf(struct rte_eventdev *event_dev, uint8_t queue_id,
> > int cnxk_sso_queue_setup(struct rte_eventdev *event_dev, uint8_t queue_id,
> > const struct rte_event_queue_conf *queue_conf);
> > void cnxk_sso_queue_release(struct rte_eventdev *event_dev, uint8_t queue_id);
> > -int cnxk_sso_queue_attribute_get(struct rte_eventdev *event_dev,
> > - uint8_t queue_id, uint32_t attr_id,
> > - uint32_t *attr_value);
> > int cnxk_sso_queue_attribute_set(struct rte_eventdev *event_dev,
> > uint8_t queue_id, uint32_t attr_id,
> > uint64_t attr_value);
> > diff --git a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h
> > index 69402668d8..8879e43feb 100644
> > --- a/lib/eventdev/eventdev_pmd.h
> > +++ b/lib/eventdev/eventdev_pmd.h
> > @@ -341,26 +341,6 @@ typedef int (*eventdev_queue_setup_t)(struct rte_eventdev *dev,
> > typedef void (*eventdev_queue_release_t)(struct rte_eventdev *dev,
> > uint8_t queue_id);
> >
> > -/**
> > - * Get 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[out] attr_value
> > - * Event queue attribute value
> > - *
> > - * @return
> > - * - 0: Success.
> > - * - <0: Error code on failure.
> > - */
> > -typedef int (*eventdev_queue_attr_get_t)(struct rte_eventdev *dev,
> > - uint8_t queue_id, uint32_t attr_id,
> > - uint32_t *attr_value);
> > -
> > /**
> > * Set an event queue attribute at runtime.
> > *
> > @@ -1268,8 +1248,6 @@ struct eventdev_ops {
> > /**< Set up an event queue. */
> > eventdev_queue_release_t queue_release;
> > /**< Release an event queue. */
> > - eventdev_queue_attr_get_t queue_attr_get;
> > - /**< Get an event queue attribute. */
> > eventdev_queue_attr_set_t queue_attr_set;
> > /**< Set an event queue attribute. */
> >
> > diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c
> > index 1dc4f966be..b96185b25d 100644
> > --- a/lib/eventdev/rte_eventdev.c
> > +++ b/lib/eventdev/rte_eventdev.c
> > @@ -859,15 +859,13 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
> > break;
> > case RTE_EVENT_QUEUE_ATTR_WEIGHT:
> > *attr_value = RTE_EVENT_QUEUE_WEIGHT_LOWEST;
> > - if (dev->dev_ops->queue_attr_get)
> > - return (*dev->dev_ops->queue_attr_get)(
> > - dev, queue_id, attr_id, attr_value);
> > + if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
> > + *attr_value = conf->weight;
> > break;
> > case RTE_EVENT_QUEUE_ATTR_AFFINITY:
> > *attr_value = RTE_EVENT_QUEUE_AFFINITY_LOWEST;
> > - if (dev->dev_ops->queue_attr_get)
> > - return (*dev->dev_ops->queue_attr_get)(
> > - dev, queue_id, attr_id, attr_value);
> > + if (dev->data->event_dev_cap & RTE_EVENT_DEV_CAP_QUEUE_QOS)
> > + *attr_value = conf->affinity;
> > break;
> > default:
> > return -EINVAL;
> > diff --git a/lib/eventdev/rte_eventdev.h b/lib/eventdev/rte_eventdev.h
> > index 6a6f6ea4c1..f1908b82b2 100644
> > --- a/lib/eventdev/rte_eventdev.h
> > +++ b/lib/eventdev/rte_eventdev.h
> > @@ -640,6 +640,22 @@ struct rte_event_queue_conf {
> > * event device supported priority value.
> > * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability
> > */
> > + uint8_t weight;
> > + /**< Weight of the event queue relative to other event queues.
> > + * The requested weight should be in the range of
> > + * [RTE_EVENT_DEV_WEIGHT_HIGHEST, RTE_EVENT_DEV_WEIGHT_LOWEST].
> > + * The implementation shall normalize the requested weight to event
> > + * device supported weight value.
> > + * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
> > + */
> > + uint8_t affinity;
> > + /**< Affinity of the event queue relative to other event queues.
> > + * The requested affinity should be in the range of
> > + * [RTE_EVENT_DEV_AFFINITY_HIGHEST, RTE_EVENT_DEV_AFFINITY_LOWEST].
> > + * The implementation shall normalize the requested affinity to event
> > + * device supported affinity value.
> > + * Valid when the device has RTE_EVENT_DEV_CAP_QUEUE_QOS capability.
> > + */
> > };
> >
> > /**
> > --
> > 2.25.1
> >
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2022-09-15 16:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-08-10 7:36 [PATCH] eventdev: add weight and affinity attributes to queue conf Shijith Thotton
2022-09-14 12:34 ` Jerin Jacob
2022-09-15 16:53 ` Jerin Jacob
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).