X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;f=lib%2Feventdev%2Frte_eventdev.c;h=79b9ea3a0205337613bf7639d7f3963e7a900a89;hb=6e858b4d9244cf53505589673755ab18ac2a4a83;hp=5db6e85410ed752de321a410595678d757183748;hpb=9c67fcbfd66450a2fd53bdffed91ab5a07c6c47f;p=dpdk.git diff --git a/lib/eventdev/rte_eventdev.c b/lib/eventdev/rte_eventdev.c index 5db6e85410..79b9ea3a02 100644 --- a/lib/eventdev/rte_eventdev.c +++ b/lib/eventdev/rte_eventdev.c @@ -36,7 +36,7 @@ #include "rte_eventdev.h" #include "eventdev_pmd.h" -#include "rte_eventdev_trace.h" +#include "eventdev_trace.h" static struct rte_eventdev rte_event_devices[RTE_EVENT_MAX_DEVS]; @@ -46,6 +46,9 @@ static struct rte_eventdev_global eventdev_globals = { .nb_devs = 0 }; +/* Public fastpath APIs. */ +struct rte_event_fp_ops rte_event_fp_ops[RTE_EVENT_MAX_DEVS]; + /* Event dev north bound API implementation */ uint8_t @@ -139,7 +142,7 @@ int rte_event_timer_adapter_caps_get(uint8_t dev_id, uint32_t *caps) { struct rte_eventdev *dev; - const struct rte_event_timer_adapter_ops *ops; + const struct event_timer_adapter_ops *ops; RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); @@ -300,8 +303,8 @@ int rte_event_dev_configure(uint8_t dev_id, const struct rte_event_dev_config *dev_conf) { - struct rte_eventdev *dev; struct rte_event_dev_info info; + struct rte_eventdev *dev; int diag; RTE_EVENTDEV_VALID_DEVID_OR_ERR_RET(dev_id, -EINVAL); @@ -470,10 +473,13 @@ rte_event_dev_configure(uint8_t dev_id, return diag; } + event_dev_fp_ops_reset(rte_event_fp_ops + dev_id); + /* Configure the device */ diag = (*dev->dev_ops->dev_configure)(dev); if (diag != 0) { RTE_EDEV_LOG_ERR("dev%d dev_configure = %d", dev_id, diag); + event_dev_fp_ops_reset(rte_event_fp_ops + dev_id); event_dev_queue_config(dev, 0); event_dev_port_config(dev, 0); } @@ -1244,6 +1250,8 @@ rte_event_dev_start(uint8_t dev_id) else return diag; + event_dev_fp_ops_set(rte_event_fp_ops + dev_id, dev); + return 0; } @@ -1284,6 +1292,7 @@ rte_event_dev_stop(uint8_t dev_id) dev->data->dev_started = 0; (*dev->dev_ops->dev_stop)(dev); rte_eventdev_trace_stop(dev_id); + event_dev_fp_ops_reset(rte_event_fp_ops + dev_id); } int @@ -1302,6 +1311,7 @@ rte_event_dev_close(uint8_t dev_id) return -EBUSY; } + event_dev_fp_ops_reset(rte_event_fp_ops + dev_id); rte_eventdev_trace_close(dev_id); return (*dev->dev_ops->dev_close)(dev); } @@ -1355,24 +1365,6 @@ eventdev_find_free_device_index(void) return RTE_EVENT_MAX_DEVS; } -static uint16_t -rte_event_tx_adapter_enqueue(__rte_unused void *port, - __rte_unused struct rte_event ev[], - __rte_unused uint16_t nb_events) -{ - rte_errno = ENOTSUP; - return 0; -} - -static uint16_t -rte_event_crypto_adapter_enqueue(__rte_unused void *port, - __rte_unused struct rte_event ev[], - __rte_unused uint16_t nb_events) -{ - rte_errno = ENOTSUP; - return 0; -} - struct rte_eventdev * rte_event_pmd_allocate(const char *name, int socket_id) { @@ -1393,10 +1385,6 @@ rte_event_pmd_allocate(const char *name, int socket_id) eventdev = &rte_eventdevs[dev_id]; - eventdev->txa_enqueue = rte_event_tx_adapter_enqueue; - eventdev->txa_enqueue_same_dest = rte_event_tx_adapter_enqueue; - eventdev->ca_enqueue = rte_event_crypto_adapter_enqueue; - if (eventdev->data == NULL) { struct rte_eventdev_data *eventdev_data = NULL; @@ -1435,6 +1423,7 @@ rte_event_pmd_release(struct rte_eventdev *eventdev) if (eventdev == NULL) return -EINVAL; + event_dev_fp_ops_reset(rte_event_fp_ops + eventdev->data->dev_id); eventdev->attached = RTE_EVENTDEV_DETACHED; eventdev_globals.nb_devs--; @@ -1460,6 +1449,15 @@ rte_event_pmd_release(struct rte_eventdev *eventdev) return 0; } +void +event_dev_probing_finish(struct rte_eventdev *eventdev) +{ + if (eventdev == NULL) + return; + + event_dev_fp_ops_set(rte_event_fp_ops + eventdev->data->dev_id, + eventdev); +} static int handle_dev_list(const char *cmd __rte_unused,