[PATCH 5/6] event/cnxk: support to set runtime queue attributes
Van Haaren, Harry
harry.van.haaren at intel.com
Wed Mar 30 13:05:09 CEST 2022
> -----Original Message-----
> From: Shijith Thotton <sthotton at marvell.com>
> Sent: Tuesday, March 29, 2022 2:11 PM
> To: dev at dpdk.org; jerinj at marvell.com
> Cc: Shijith Thotton <sthotton at marvell.com>; pbhagavatula at marvell.com
> Subject: [PATCH 5/6] event/cnxk: support to set runtime queue attributes
<snip>
> +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);
> +
> + *attr_value = attr_id == RTE_EVENT_QUEUE_ATTR_WEIGHT ?
> + dev->mlt_prio[queue_id].weight :
> + dev->mlt_prio[queue_id].affinity;
This is future-bug prone, as adding a new Eventdev attr will return .affinity silently,
instead of the attr that is being requested.
Prefer a switch(attr_id), and explicitly handle each attr_id, with a default case
to return -1, showing the PMD refusing to handle the attr requested to the caller.
On reviewing the below, the set() below does this perfectly... except the return?
> +
> + return 0;
> +}
> +
> +int
> +cnxk_sso_queue_attribute_set(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);
> + uint8_t priority, weight, affinity;
> + struct rte_event_queue_conf *conf;
> +
> + conf = &event_dev->data->queues_cfg[queue_id];
> +
> + switch (attr_id) {
> + case RTE_EVENT_QUEUE_ATTR_PRIORITY:
> + conf->priority = attr_value;
> + break;
> + case RTE_EVENT_QUEUE_ATTR_WEIGHT:
> + dev->mlt_prio[queue_id].weight = attr_value;
> + break;
> + case RTE_EVENT_QUEUE_ATTR_AFFINITY:
> + dev->mlt_prio[queue_id].affinity = attr_value;
> + break;
> + default:
> + plt_sso_dbg("Ignored setting attribute id %u", attr_id);
> + return 0;
> + }
Why return 0 here? This is a failure, the PMD did *not* set the attribute ID.
Make the user aware of that fact, return -1; or -EINVAL or something.
Document the explicit return values at Eventdev header level, so all PMDs can
align on the return values, providing consistency to the application.
<snip>
More information about the dev
mailing list