X-Git-Url: http://git.droids-corp.org/?a=blobdiff_plain;ds=sidebyside;f=drivers%2Fevent%2Fopdl%2Fopdl_evdev.c;h=3beca8957da9da99d8e4a0e2b5edc7cebf7db890;hb=e21346c4392b9d9a0f7429ab2b0b632f6bdc69e4;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..3beca8957d 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, @@ -44,7 +102,7 @@ opdl_port_link(struct rte_eventdev *dev, dev->data->dev_id, queues[0], p->id); - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } @@ -55,7 +113,7 @@ opdl_port_link(struct rte_eventdev *dev, dev->data->dev_id, num, p->id); - rte_errno = -EDQUOT; + rte_errno = EDQUOT; return 0; } @@ -65,7 +123,7 @@ opdl_port_link(struct rte_eventdev *dev, dev->data->dev_id, p->id, queues[0]); - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } @@ -76,7 +134,7 @@ opdl_port_link(struct rte_eventdev *dev, p->id, p->external_qid, queues[0]); - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } @@ -102,7 +160,7 @@ opdl_port_unlink(struct rte_eventdev *dev, dev->data->dev_id, queues[0], p->id); - rte_errno = -EINVAL; + rte_errno = EINVAL; return 0; } RTE_SET_USED(nb_unlinks); @@ -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; @@ -363,16 +422,17 @@ opdl_dump(struct rte_eventdev *dev, FILE *f) else p_type = "????"; - sprintf(queue_id, "%02u", port->external_qid); + snprintf(queue_id, sizeof(queue_id), "%02u", + port->external_qid); if (port->p_type == OPDL_REGULAR_PORT || port->p_type == OPDL_ASYNC_PORT) - sprintf(total_cyc, + snprintf(total_cyc, sizeof(total_cyc), " %'16"PRIu64"", (cpg != 0 ? port->port_stat[total_cycles] / cpg : 0)); else - sprintf(total_cyc, + snprintf(total_cyc, sizeof(total_cyc), " ----"); fprintf(f, "%4s %10u %8u %9s %'16"PRIu64" %'16"PRIu64" %s " @@ -548,7 +608,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 +711,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 +729,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; } @@ -684,12 +754,9 @@ static struct rte_vdev_driver evdev_opdl_pmd_drv = { .remove = opdl_remove }; -RTE_INIT(opdl_init_log); - -static void -opdl_init_log(void) +RTE_INIT(opdl_init_log) { - 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); }