eventdev: remove schedule API
authorPavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Wed, 25 Oct 2017 14:50:32 +0000 (20:20 +0530)
committerThomas Monjalon <thomas@monjalon.net>
Thu, 26 Oct 2017 22:53:07 +0000 (00:53 +0200)
remove eventdev schedule api and enforce sw driver to use service core
feature for event scheduling.

Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>
Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>
drivers/event/dpaa2/dpaa2_eventdev.c
drivers/event/octeontx/ssovf_evdev.c
drivers/event/skeleton/skeleton_eventdev.c
drivers/event/sw/sw_evdev.c
lib/librte_eventdev/rte_eventdev.h

index d8f5f7d..45e2ebc 100644 (file)
@@ -785,7 +785,6 @@ dpaa2_eventdev_create(const char *name)
        }
 
        eventdev->dev_ops       = &dpaa2_eventdev_ops;
-       eventdev->schedule      = NULL;
        eventdev->enqueue       = dpaa2_eventdev_enqueue;
        eventdev->enqueue_burst = dpaa2_eventdev_enqueue_burst;
        eventdev->enqueue_new_burst = dpaa2_eventdev_enqueue_burst;
index 7bdc85d..cfbd958 100644 (file)
@@ -157,7 +157,6 @@ ssovf_fastpath_fns_set(struct rte_eventdev *dev)
 {
        struct ssovf_evdev *edev = ssovf_pmd_priv(dev);
 
-       dev->schedule      = NULL;
        dev->enqueue       = ssows_enq;
        dev->enqueue_burst = ssows_enq_burst;
        dev->enqueue_new_burst = ssows_enq_new_burst;
index bcd2055..4d1a1da 100644 (file)
@@ -375,7 +375,6 @@ skeleton_eventdev_init(struct rte_eventdev *eventdev)
        PMD_DRV_FUNC_TRACE();
 
        eventdev->dev_ops       = &skeleton_eventdev_ops;
-       eventdev->schedule      = NULL;
        eventdev->enqueue       = skeleton_eventdev_enqueue;
        eventdev->enqueue_burst = skeleton_eventdev_enqueue_burst;
        eventdev->dequeue       = skeleton_eventdev_dequeue;
@@ -466,7 +465,6 @@ skeleton_eventdev_create(const char *name, int socket_id)
        }
 
        eventdev->dev_ops       = &skeleton_eventdev_ops;
-       eventdev->schedule      = NULL;
        eventdev->enqueue       = skeleton_eventdev_enqueue;
        eventdev->enqueue_burst = skeleton_eventdev_enqueue_burst;
        eventdev->dequeue       = skeleton_eventdev_dequeue;
index 92fd07b..178f169 100644 (file)
@@ -615,10 +615,14 @@ sw_start(struct rte_eventdev *dev)
        unsigned int i, j;
        struct sw_evdev *sw = sw_pmd_priv(dev);
 
+       rte_service_component_runstate_set(sw->service_id, 1);
+
        /* check a service core is mapped to this service */
-       if (!rte_service_runstate_get(sw->service_id))
+       if (!rte_service_runstate_get(sw->service_id)) {
                SW_LOG_ERR("Warning: No Service core enabled on service %s\n",
                                sw->service_name);
+               return -ENOENT;
+       }
 
        /* check all ports are set up */
        for (i = 0; i < sw->port_count; i++)
@@ -833,7 +837,6 @@ sw_probe(struct rte_vdev_device *vdev)
        dev->enqueue_forward_burst = sw_event_enqueue_burst;
        dev->dequeue = sw_event_dequeue;
        dev->dequeue_burst = sw_event_dequeue_burst;
-       dev->schedule = sw_event_schedule;
 
        if (rte_eal_process_type() != RTE_PROC_PRIMARY)
                return 0;
@@ -861,12 +864,6 @@ sw_probe(struct rte_vdev_device *vdev)
                return -ENOEXEC;
        }
 
-       ret = rte_service_component_runstate_set(sw->service_id, 1);
-       if (ret) {
-               SW_LOG_ERR("Unable to enable service component");
-               return -ENOEXEC;
-       }
-
        dev->data->service_inited = 1;
        dev->data->service_id = sw->service_id;
 
index a7973a9..f1949ff 100644 (file)
  * (each worker thread schedules events to its own port) or centralized
  * (a dedicated thread schedules to all ports). Distributed software schedulers
  * perform the scheduling in rte_event_dequeue_burst(), whereas centralized
- * scheduler logic is located in rte_event_schedule().
+ * scheduler logic need a dedicated service core for scheduling.
  * The RTE_EVENT_DEV_CAP_DISTRIBUTED_SCHED capability flag is not set
  * indicates the device is centralized and thus needs a dedicated scheduling
- * thread that repeatedly calls rte_event_schedule().
+ * thread that repeatedly calls software specific scheduling function.
  *
  * An event driven worker thread has following typical workflow on fastpath:
  * \code{.c}
@@ -263,9 +263,9 @@ struct rte_mbuf; /* we just use mbuf pointers; no need to include rte_mbuf.h */
  * In distributed scheduling mode, event scheduling happens in HW or
  * rte_event_dequeue_burst() or the combination of these two.
  * If the flag is not set then eventdev is centralized and thus needs a
- * dedicated scheduling thread that repeatedly calls rte_event_schedule().
+ * dedicated service core that acts as a scheduling thread .
  *
- * @see rte_event_schedule(), rte_event_dequeue_burst()
+ * @see rte_event_dequeue_burst()
  */
 #define RTE_EVENT_DEV_CAP_QUEUE_ALL_TYPES     (1ULL << 3)
 /**< Event device is capable of enqueuing events of any type to any queue.
@@ -1052,9 +1052,6 @@ struct rte_eventdev_driver;
 struct rte_eventdev_ops;
 struct rte_eventdev;
 
-typedef void (*event_schedule_t)(struct rte_eventdev *dev);
-/**< @internal Schedule one or more events in the event dev. */
-
 typedef uint16_t (*event_enqueue_t)(void *port, const struct rte_event *ev);
 /**< @internal Enqueue event on port of a device */
 
@@ -1118,8 +1115,6 @@ struct rte_eventdev_data {
 
 /** @internal The data structure associated with each event device. */
 struct rte_eventdev {
-       event_schedule_t schedule;
-       /**< Pointer to PMD schedule function. */
        event_enqueue_t enqueue;
        /**< Pointer to PMD enqueue function. */
        event_enqueue_burst_t enqueue_burst;
@@ -1148,24 +1143,6 @@ struct rte_eventdev {
 extern struct rte_eventdev *rte_eventdevs;
 /** @internal The pool of rte_eventdev structures. */
 
-
-/**
- * Schedule one or more events in the event dev.
- *
- * An event dev implementation may define this is a NOOP, for instance if
- * the event dev performs its scheduling in hardware.
- *
- * @param dev_id
- *   The identifier of the device.
- */
-static inline void
-rte_event_schedule(uint8_t dev_id)
-{
-       struct rte_eventdev *dev = &rte_eventdevs[dev_id];
-       if (*dev->schedule)
-               (*dev->schedule)(dev);
-}
-
 static __rte_always_inline uint16_t
 __rte_event_enqueue_burst(uint8_t dev_id, uint8_t port_id,
                        const struct rte_event ev[], uint16_t nb_events,