vdpa/mlx5: add task ring for multi-thread management
[dpdk.git] / lib / eventdev / rte_eventdev.c
index 532a253..1dc4f96 100644 (file)
@@ -730,6 +730,25 @@ rte_event_port_setup(uint8_t dev_id, uint8_t port_id,
        return 0;
 }
 
+void
+rte_event_port_quiesce(uint8_t dev_id, uint8_t port_id,
+                      rte_eventdev_port_flush_t release_cb, void *args)
+{
+       struct rte_eventdev *dev;
+
+       RTE_EVENTDEV_VALID_DEVID_OR_RET(dev_id);
+       dev = &rte_eventdevs[dev_id];
+
+       if (!is_valid_port(dev, port_id)) {
+               RTE_EDEV_LOG_ERR("Invalid port_id=%" PRIu8, port_id);
+               return;
+       }
+
+       if (dev->dev_ops->port_quiesce)
+               (*dev->dev_ops->port_quiesce)(dev, dev->data->ports[port_id],
+                                             release_cb, args);
+}
+
 int
 rte_event_dev_attr_get(uint8_t dev_id, uint32_t attr_id,
                       uint32_t *attr_value)
@@ -838,12 +857,50 @@ rte_event_queue_attr_get(uint8_t dev_id, uint8_t queue_id, uint32_t attr_id,
 
                *attr_value = conf->schedule_type;
                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);
+               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);
+               break;
        default:
                return -EINVAL;
        };
        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[],