[21/39] eventdev: add eventdev port-lcore link
Checks
Commit Message
Adding eventdev port-lcore link. In addition, this will also specify
which event queue need to be connected to the event port.
Signed-off-by: Anoob Joseph <anoobj@marvell.com>
Signed-off-by: Lukasz Bartosik <lbartosik@marvell.com>
---
lib/librte_eventdev/rte_eventmode_helper.c | 22 ++++++++++++++++++++++
lib/librte_eventdev/rte_eventmode_helper.h | 12 ++++++++++++
.../rte_eventmode_helper_internal.h | 12 ++++++++++++
3 files changed, 46 insertions(+)
@@ -165,10 +165,12 @@ rte_eventmode_helper_initialize_eventdev(struct eventmode_conf *em_conf)
struct rte_event_dev_config eventdev_conf;
struct rte_event_dev_info evdev_default_conf;
struct rte_event_queue_conf eventq_conf = {0};
+ struct rte_eventmode_helper_event_link_info *link;
struct eventdev_params *eventdev_config;
int nb_eventdev = em_conf->nb_eventdev;
int nb_eventqueue;
uint8_t eventdev_id;
+ uint8_t *queue = NULL;
for (i = 0; i < nb_eventdev; i++) {
@@ -259,6 +261,26 @@ rte_eventmode_helper_initialize_eventdev(struct eventmode_conf *em_conf)
}
}
+ /* Make event queue - event port link */
+ for (j = 0; j < em_conf->nb_link; j++) {
+
+ /* Get link info */
+ link = &(em_conf->link[j]);
+
+ /* Get event dev ID */
+ eventdev_id = link->eventdev_id;
+
+ queue = &(link->eventq_id);
+
+ /* Link queue to port */
+ ret = rte_event_port_link(eventdev_id, link->event_portid,
+ queue, NULL, 1);
+ if (ret < 0) {
+ RTE_EM_HLPR_LOG_ERR("Error in event port linking");
+ return ret;
+ }
+ }
+
/* Start event devices */
for (i = 0; i < nb_eventdev; i++) {
@@ -29,6 +29,18 @@ struct rte_eventmode_helper_conf {
/**< Mode specific parameters */
};
+/* Event-lcore link conf */
+struct rte_eventmode_helper_event_link_info {
+ uint8_t eventdev_id;
+ /**< Event device ID */
+ uint8_t event_portid;
+ /**< Event port ID */
+ uint8_t eventq_id;
+ /**< Event queue to be linked to the port */
+ uint8_t lcore_id;
+ /**< Lcore to be polling on this port */
+};
+
/* Common helper functions for command line parsing */
/**
@@ -35,6 +35,13 @@
/* Max event devices supported */
#define EVENT_MODE_MAX_EVENT_DEVS RTE_EVENT_MAX_DEVS
+/* Max event queues supported per event device */
+#define EVENT_MODE_MAX_EVENT_QUEUES_PER_DEV RTE_EVENT_MAX_QUEUES_PER_DEV
+
+/* Max event-lcore links */
+#define EVENT_MODE_MAX_LCORE_LINKS \
+ (EVENT_MODE_MAX_EVENT_DEVS * EVENT_MODE_MAX_EVENT_QUEUES_PER_DEV)
+
/* Event dev params */
struct eventdev_params {
uint8_t eventdev_id;
@@ -49,6 +56,11 @@ struct eventmode_conf {
/**< No of event devs */
struct eventdev_params eventdev_config[EVENT_MODE_MAX_EVENT_DEVS];
/**< Per event dev conf */
+ uint8_t nb_link;
+ /**< No of links */
+ struct rte_eventmode_helper_event_link_info
+ link[EVENT_MODE_MAX_LCORE_LINKS];
+ /**< Per link conf */
};
#endif /* _RTE_EVENTMODE_HELPER_INTERNAL_H_ */