><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. > Will change it similar to set().
>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. > Will update PMD and library with error number. ><snip>