pci: remove eal prefix
[dpdk.git] / lib / librte_eventdev / rte_eventdev.c
index 68bfc3b..20afc3f 100644 (file)
@@ -125,7 +125,7 @@ rte_event_dev_info_get(uint8_t dev_id, struct rte_event_dev_info *dev_info)
 
        dev_info->dequeue_timeout_ns = dev->data->dev_conf.dequeue_timeout_ns;
 
-       dev_info->pci_dev = dev->pci_dev;
+       dev_info->dev = dev->dev;
        if (dev->driver)
                dev_info->driver_name = dev->driver->pci_drv.driver.name;
        return 0;
@@ -190,6 +190,8 @@ rte_event_dev_queue_config(struct rte_eventdev *dev, uint8_t nb_queues)
        return 0;
 }
 
+#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
+
 static inline int
 rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 {
@@ -251,6 +253,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
                                        "nb_ports %u", nb_ports);
                        return -(ENOMEM);
                }
+               for (i = 0; i < nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV; i++)
+                       dev->data->links_map[i] =
+                               EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
        } else if (dev->data->ports != NULL && nb_ports != 0) {/* re-config */
                RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->port_release, -ENOTSUP);
 
@@ -305,6 +310,10 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
 
                if (nb_ports > old_nb_ports) {
                        uint8_t new_ps = nb_ports - old_nb_ports;
+                       unsigned int old_links_map_end =
+                               old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
+                       unsigned int links_map_end =
+                               nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV;
 
                        memset(ports + old_nb_ports, 0,
                                sizeof(ports[0]) * new_ps);
@@ -312,9 +321,9 @@ rte_event_dev_port_config(struct rte_eventdev *dev, uint8_t nb_ports)
                                sizeof(ports_dequeue_depth[0]) * new_ps);
                        memset(ports_enqueue_depth + old_nb_ports, 0,
                                sizeof(ports_enqueue_depth[0]) * new_ps);
-                       memset(links_map +
-                               (old_nb_ports * RTE_EVENT_MAX_QUEUES_PER_DEV),
-                               0, sizeof(ports_enqueue_depth[0]) * new_ps);
+                       for (i = old_links_map_end; i < links_map_end; i++)
+                               links_map[i] =
+                                       EVENT_QUEUE_SERVICE_PRIORITY_INVALID;
                }
 
                dev->data->ports = ports;
@@ -359,7 +368,7 @@ rte_event_dev_configure(uint8_t dev_id,
        (*dev->dev_ops->dev_infos_get)(dev, &info);
 
        /* Check dequeue_timeout_ns value is in limit */
-       if (!dev_conf->event_dev_cfg & RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT) {
+       if (!(dev_conf->event_dev_cfg & RTE_EVENT_DEV_CFG_PER_DEQUEUE_TIMEOUT)) {
                if (dev_conf->dequeue_timeout_ns < info.min_dequeue_timeout_ns
                        || dev_conf->dequeue_timeout_ns >
                                 info.max_dequeue_timeout_ns) {
@@ -593,7 +602,6 @@ rte_event_queue_setup(uint8_t dev_id, uint8_t queue_id,
                RTE_FUNC_PTR_OR_ERR_RET(*dev->dev_ops->queue_def_conf,
                                        -ENOTSUP);
                (*dev->dev_ops->queue_def_conf)(dev, queue_id, &def_conf);
-               def_conf.event_queue_cfg = RTE_EVENT_QUEUE_CFG_DEFAULT;
                queue_conf = &def_conf;
        }
 
@@ -815,8 +823,6 @@ rte_event_port_link(uint8_t dev_id, uint8_t port_id,
        return diag;
 }
 
-#define EVENT_QUEUE_SERVICE_PRIORITY_INVALID (0xdead)
-
 int
 rte_event_port_unlink(uint8_t dev_id, uint8_t port_id,
                      uint8_t queues[], uint16_t nb_unlinks)
@@ -902,8 +908,7 @@ rte_event_dequeue_timeout_ticks(uint8_t dev_id, uint64_t ns,
        if (timeout_ticks == NULL)
                return -EINVAL;
 
-       (*dev->dev_ops->timeout_ticks)(dev, ns, timeout_ticks);
-       return 0;
+       return (*dev->dev_ops->timeout_ticks)(dev, ns, timeout_ticks);
 }
 
 int
@@ -920,6 +925,89 @@ rte_event_dev_dump(uint8_t dev_id, FILE *f)
 
 }
 
+static int
+xstats_get_count(uint8_t dev_id, enum rte_event_dev_xstats_mode mode,
+               uint8_t queue_port_id)
+{
+       struct rte_eventdev *dev = &rte_eventdevs[dev_id];
+       if (dev->dev_ops->xstats_get_names != NULL)
+               return (*dev->dev_ops->xstats_get_names)(dev, mode,
+                                                       queue_port_id,
+                                                       NULL, NULL, 0);
+       return 0;
+}
+
+int
+rte_event_dev_xstats_names_get(uint8_t dev_id,
+               enum rte_event_dev_xstats_mode mode, uint8_t queue_port_id,
+               struct rte_event_dev_xstats_name *xstats_names,
+               unsigned int *ids, unsigned int size)
+{
+       RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -ENODEV);
+       const int cnt_expected_entries = xstats_get_count(dev_id, mode,
+                                                         queue_port_id);
+       if (xstats_names == NULL || cnt_expected_entries < 0 ||
+                       (int)size < cnt_expected_entries)
+               return cnt_expected_entries;
+
+       /* dev_id checked above */
+       const struct rte_eventdev *dev = &rte_eventdevs[dev_id];
+
+       if (dev->dev_ops->xstats_get_names != NULL)
+               return (*dev->dev_ops->xstats_get_names)(dev, mode,
+                               queue_port_id, xstats_names, ids, size);
+
+       return -ENOTSUP;
+}
+
+/* retrieve eventdev extended statistics */
+int
+rte_event_dev_xstats_get(uint8_t dev_id, enum rte_event_dev_xstats_mode mode,
+               uint8_t queue_port_id, const unsigned int ids[],
+               uint64_t values[], unsigned int n)
+{
+       RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -ENODEV);
+       const struct rte_eventdev *dev = &rte_eventdevs[dev_id];
+
+       /* implemented by the driver */
+       if (dev->dev_ops->xstats_get != NULL)
+               return (*dev->dev_ops->xstats_get)(dev, mode, queue_port_id,
+                               ids, values, n);
+       return -ENOTSUP;
+}
+
+uint64_t
+rte_event_dev_xstats_by_name_get(uint8_t dev_id, const char *name,
+               unsigned int *id)
+{
+       RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, 0);
+       const struct rte_eventdev *dev = &rte_eventdevs[dev_id];
+       unsigned int temp = -1;
+
+       if (id != NULL)
+               *id = (unsigned int)-1;
+       else
+               id = &temp; /* ensure driver never gets a NULL value */
+
+       /* implemented by driver */
+       if (dev->dev_ops->xstats_get_by_name != NULL)
+               return (*dev->dev_ops->xstats_get_by_name)(dev, name, id);
+       return -ENOTSUP;
+}
+
+int rte_event_dev_xstats_reset(uint8_t dev_id,
+               enum rte_event_dev_xstats_mode mode, int16_t queue_port_id,
+               const uint32_t ids[], uint32_t nb_ids)
+{
+       RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL);
+       struct rte_eventdev *dev = &rte_eventdevs[dev_id];
+
+       if (dev->dev_ops->xstats_reset != NULL)
+               return (*dev->dev_ops->xstats_reset)(dev, mode, queue_port_id,
+                                                       ids, nb_ids);
+       return -ENOTSUP;
+}
+
 int
 rte_event_dev_start(uint8_t dev_id)
 {
@@ -1175,7 +1263,7 @@ rte_event_pmd_pci_probe(struct rte_pci_driver *pci_drv,
        if (eventdrv == NULL)
                return -ENODEV;
 
-       rte_eal_pci_device_name(&pci_dev->addr, eventdev_name,
+       rte_pci_device_name(&pci_dev->addr, eventdev_name,
                        sizeof(eventdev_name));
 
        eventdev = rte_event_pmd_allocate(eventdev_name,
@@ -1196,7 +1284,7 @@ rte_event_pmd_pci_probe(struct rte_pci_driver *pci_drv,
                                        "device data");
        }
 
-       eventdev->pci_dev = pci_dev;
+       eventdev->dev = &pci_dev->device;
        eventdev->driver = eventdrv;
 
        /* Invoke PMD device initialization function */
@@ -1229,7 +1317,7 @@ rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev)
        if (pci_dev == NULL)
                return -EINVAL;
 
-       rte_eal_pci_device_name(&pci_dev->addr, eventdev_name,
+       rte_pci_device_name(&pci_dev->addr, eventdev_name,
                        sizeof(eventdev_name));
 
        eventdev = rte_event_pmd_get_named_dev(eventdev_name);
@@ -1250,7 +1338,7 @@ rte_event_pmd_pci_remove(struct rte_pci_device *pci_dev)
        /* Free event device */
        rte_event_pmd_release(eventdev);
 
-       eventdev->pci_dev = NULL;
+       eventdev->dev = NULL;
        eventdev->driver = NULL;
 
        return 0;