X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fevent%2Fopdl%2Fopdl_evdev.c;h=ef9fb30c3c36b9d1467bb87d76aa7df1303085b7;hb=c6dd1eb8a55c1f66da8398508ea8a749799eef18;hp=56e6910cad4251f1cb5a48295aa5a61dbf01f2fb;hpb=0bf298e3928698c828fff47d6cf98f681f1fbb37;p=dpdk.git diff --git a/drivers/event/opdl/opdl_evdev.c b/drivers/event/opdl/opdl_evdev.c index 56e6910cad..ef9fb30c3c 100644 --- a/drivers/event/opdl/opdl_evdev.c +++ b/drivers/event/opdl/opdl_evdev.c @@ -1,6 +1,5 @@ -/*- - * SPDX-License-Identifier: BSD-3-Clause - * Copyright(c) 2010-2014 Intel Corporation +/* SPDX-License-Identifier: BSD-3-Clause + * Copyright(c) 2017 Intel Corporation */ #include @@ -26,6 +25,65 @@ static void opdl_info_get(struct rte_eventdev *dev, struct rte_event_dev_info *info); +uint16_t +opdl_event_enqueue_burst(void *port, + const struct rte_event ev[], + uint16_t num) +{ + struct opdl_port *p = port; + + if (unlikely(!p->opdl->data->dev_started)) + return 0; + + + /* either rx_enqueue or disclaim*/ + return p->enq(p, ev, num); +} + +uint16_t +opdl_event_enqueue(void *port, const struct rte_event *ev) +{ + struct opdl_port *p = port; + + if (unlikely(!p->opdl->data->dev_started)) + return 0; + + + return p->enq(p, ev, 1); +} + +uint16_t +opdl_event_dequeue_burst(void *port, + struct rte_event *ev, + uint16_t num, + uint64_t wait) +{ + struct opdl_port *p = (void *)port; + + RTE_SET_USED(wait); + + if (unlikely(!p->opdl->data->dev_started)) + return 0; + + /* This function pointer can point to tx_dequeue or claim*/ + return p->deq(p, ev, num); +} + +uint16_t +opdl_event_dequeue(void *port, + struct rte_event *ev, + uint64_t wait) +{ + struct opdl_port *p = (void *)port; + + if (unlikely(!p->opdl->data->dev_started)) + return 0; + + RTE_SET_USED(wait); + + return p->deq(p, ev, 1); +} + static int opdl_port_link(struct rte_eventdev *dev, void *port, @@ -229,7 +287,8 @@ opdl_queue_setup(struct rte_eventdev *dev, } } /* Check if queue id has been setup already */ - for (uint32_t i = 0; i < device->nb_q_md; i++) { + uint32_t i; + for (i = 0; i < device->nb_q_md; i++) { if (device->q_md[i].ext_id == queue_id) { PMD_DRV_LOG(ERR, "DEV_ID:[%02d] : " "queue id %u already setup\n", @@ -331,8 +390,8 @@ opdl_dump(struct rte_eventdev *dev, FILE *f) fprintf(f, "\n\n -- RING STATISTICS --\n"); - - for (uint32_t i = 0; i < device->nb_opdls; i++) + uint32_t i; + for (i = 0; i < device->nb_opdls; i++) opdl_ring_dump(device->opdl[i], f); fprintf(f, @@ -341,7 +400,7 @@ opdl_dump(struct rte_eventdev *dev, FILE *f) "Av. Grant Size Av. Cycles PP" " Empty DEQs Non Empty DEQs Pkts Processed\n"); - for (uint32_t i = 0; i < device->max_port_nb; i++) { + for (i = 0; i < device->max_port_nb; i++) { char queue_id[64]; char total_cyc[64]; const char *p_type; @@ -548,7 +607,7 @@ set_do_test(const char *key __rte_unused, const char *value, void *opaque) static int opdl_probe(struct rte_vdev_device *vdev) { - static const struct rte_eventdev_ops evdev_opdl_ops = { + static struct rte_eventdev_ops evdev_opdl_ops = { .dev_configure = opdl_dev_configure, .dev_infos_get = opdl_info_get, .dev_close = opdl_close, @@ -651,6 +710,13 @@ opdl_probe(struct rte_vdev_device *vdev) dev->dev_ops = &evdev_opdl_ops; + dev->enqueue = opdl_event_enqueue; + dev->enqueue_burst = opdl_event_enqueue_burst; + dev->enqueue_new_burst = opdl_event_enqueue_burst; + dev->enqueue_forward_burst = opdl_event_enqueue_burst; + dev->dequeue = opdl_event_dequeue; + dev->dequeue_burst = opdl_event_dequeue_burst; + if (rte_eal_process_type() != RTE_PROC_PRIMARY) return 0; @@ -662,6 +728,9 @@ opdl_probe(struct rte_vdev_device *vdev) str_len = strlen(name); memcpy(opdl->service_name, name, str_len); + if (do_test == 1) + test_result = opdl_selftest(); + return test_result; } @@ -689,7 +758,7 @@ RTE_INIT(opdl_init_log); static void opdl_init_log(void) { - opdl_logtype_driver = rte_log_register("eventdev.opdl.driver"); + opdl_logtype_driver = rte_log_register("pmd.event.opdl.driver"); if (opdl_logtype_driver >= 0) rte_log_set_level(opdl_logtype_driver, RTE_LOG_INFO); }